szukanie zaawansowane
 [ Posty: 5 ] 
Autor Wiadomość
Kobieta Offline
PostNapisane: 2 sty 2014, o 20: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 20:31 
Gość Specjalny
Avatar użytkownika

Posty: 18427
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 20:33 
Użytkownik

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

Posty: 18427
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 21: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 
 punkt przecięcia dwóch prostych - zadanie 2  Fundak  2
 Punkt przecięcia prostej z dwiema prostymi równoległymi  CryStalRAG  2
 Wyznaczyć równanie płaszczyzny zawierającej prostą i punkt  djjokers  8
 punkt przecięcia się płaszczyzn  tomi140  3
 Wyznacz równanie prostej przez punkt i kąt z inną prostą  Nax  5
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl