szukanie zaawansowane
 [ Posty: 5 ] 
Autor Wiadomość
Kobieta Offline
PostNapisane: 2 sty 2014, o 19:19 
Użytkownik

Posty: 357
Jak mogę sprawdzić czy punkt A\left( X,Y,Z\right) znajduje się w środku bryły 3D? Dane są wierzhołki bryły.
Góra
Mężczyzna Offline
PostNapisane: 2 sty 2014, o 19:31 
Gość Specjalny
Avatar użytkownika

Posty: 18499
Lokalizacja: Cieszyn
Czy bryła jest wypukła czy dowolna? Masz te wierzchołki dane jakoś konkretnie czy potrzebujesz algorytmu na wszystkie przypadki?
Góra
Kobieta Offline
PostNapisane: 2 sty 2014, o 19:33 
Użytkownik

Posty: 357
Bryła jest dowolna i potrzebuję uniwersalnego algorytmu.
Góra
Mężczyzna Offline
PostNapisane: 2 sty 2014, o 19:36 
Gość Specjalny
Avatar użytkownika

Posty: 18499
Lokalizacja: Cieszyn
Jednak sam zestaw punktów nie określa jednoznacznie bryły. Pokażę Ci na przykładzie płaszczyzny. Jeśli chcesz w 3D, potraktuj te rysunki jako podstawy i pociągnij je do siebie.

\begin{tikzpicture}
 \filldraw[very thick,fill=yellow] (0,0)--(1,4)--(3,4)--(4,0)--(2,2)--(0,0);
 \draw (0,0) grid (4,4);
\end{tikzpicture}\qquad
\begin{tikzpicture}
 \filldraw[very thick,fill=yellow] (0,0)--(1,4)--(2,2)--(3,4)--(4,0)--(0,0);
 \draw (0,0) grid (4,4);
\end{tikzpicture}

W przypadku bryły wypukłej będzie jednoznaczność. Trzeba więc wiedzieć coś więcej o tych punktach i bryle.
Góra
Kobieta Offline
PostNapisane: 2 sty 2014, o 20:30 
Użytkownik

Posty: 357
Udało mi się dodatkowo wyciągnąć wektory normalne dla trójkątów, z których zbudowana jest bryła. Czyli mogę uznać, że jestem w stanie określić wszystkie poligony (które w moim przypadku są trójkątami i wiem które wierzchołki tworzą dany trójkąt) i ich wektory normalne.

-- 4 sty 2014, o 12:23 --

Piszę osobnego posta, gdyż uważam, że może być on odpowiedzią. Mianowicie:

Mam dany punkt A\left( X,Y,Z\right).
Wybieram sobie jakiś punkt, który na pewno w bryle nie leży - w moim przypadku może być to pozycja kamery: P\left( X,Y,Z\right). Dodatkowo mam podany wektor kierunowy tej kamery: \vec{u} = \left[ X,Y,Z\right].

1. Wyznaczam równania płaszczyzny dla wszystkich face'ów (trójkatów) tworzących ściany mojej bryły. Skorzystam z danego pkt'u A i wektora \vec{u}, który do tej płaszczyzny powinien być prostopadły.
2. W jakiś sposób muszę skorzystać z nierówności i odrzucić punkty, które będę znajdować się po przeciwnej stronie płaszczyzny niż pkt P. Tutaj proszę o pomoc, w jaki sposób mogę to zrobić.
3. Jeśli wszystkie 3 pkt'y danego face'a będą leżeć po przeciwnej stronie tej płaszczyzny to mogę je od razu odrzucić, dzięki temu ograniczę sobie obliczenia.
4. Wyznaczam prostą łączącą pkt'y A i P. W przestrzeni, którą sobie ograniczyłam w poprzednim kroku, wyznaczam pkt'y przecięcia z płaszczyznami face'ów. Sprawdzam, czy należą one bezpośrednio do tych trójkątów (mam na to specjalny algorytm).
5. Zliczam ile jest takich pkt'ów, które należą do face'ów. Jeśli liczba jest parzysta - pkt A leży poza bryłą, jeśli nieparzysta - w bryle.

Możliwe, że mój opis nie jest zbyt czytelny, dlatego jeszcze raz powtórzę moje pytanie: mając równanie płaszczyzny w 3D i punkt P\left( X,Y,Z\right), jaką nierówność powinnam napisać, żeby brać pod uwagę tylko tę stronę płaszczyzny, po której pkt P leży?
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 5 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 Wyznacz punkt R odległy o 8  volcik15  2
 Prosta l, do której należy punkt A przecina parabolę  bliznieta07129  1
 Wyznaczanie równania prostej przechodzącej przez dany punkt.  Disnejx86  6
 Wyznacz punkt C  Dedemonn  6
 Punkt przecięcia prostej z płaszczyzną.  wbp  0
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl