Sprawdzenie czy punkt znajduje się w środku bryły

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
yoana91
Użytkownik
Użytkownik
Posty: 357
Rejestracja: 17 mar 2009, o 20:26
Płeć: Kobieta
Podziękował: 59 razy
Pomógł: 1 raz

Sprawdzenie czy punkt znajduje się w środku bryły

Post autor: yoana91 »

Jak mogę sprawdzić czy punkt \(\displaystyle{ A\left( X,Y,Z\right)}\) znajduje się w środku bryły 3D? Dane są wierzhołki bryły.
szw1710

Sprawdzenie czy punkt znajduje się w środku bryły

Post autor: szw1710 »

Czy bryła jest wypukła czy dowolna? Masz te wierzchołki dane jakoś konkretnie czy potrzebujesz algorytmu na wszystkie przypadki?
yoana91
Użytkownik
Użytkownik
Posty: 357
Rejestracja: 17 mar 2009, o 20:26
Płeć: Kobieta
Podziękował: 59 razy
Pomógł: 1 raz

Sprawdzenie czy punkt znajduje się w środku bryły

Post autor: yoana91 »

Bryła jest dowolna i potrzebuję uniwersalnego algorytmu.
szw1710

Sprawdzenie czy punkt znajduje się w środku bryły

Post autor: szw1710 »

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.

\(\displaystyle{ \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.
yoana91
Użytkownik
Użytkownik
Posty: 357
Rejestracja: 17 mar 2009, o 20:26
Płeć: Kobieta
Podziękował: 59 razy
Pomógł: 1 raz

Sprawdzenie czy punkt znajduje się w środku bryły

Post autor: yoana91 »

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 \(\displaystyle{ 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: \(\displaystyle{ P\left( X,Y,Z\right)}\). Dodatkowo mam podany wektor kierunowy tej kamery: \(\displaystyle{ \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 \(\displaystyle{ A}\) i wektora \(\displaystyle{ \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 \(\displaystyle{ 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 \(\displaystyle{ A}\) i \(\displaystyle{ 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 \(\displaystyle{ 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 \(\displaystyle{ P\left( X,Y,Z\right)}\), jaką nierówność powinnam napisać, żeby brać pod uwagę tylko tę stronę płaszczyzny, po której pkt \(\displaystyle{ P}\) leży?
ODPOWIEDZ