Geometria sferyczna - sprawdzenie przekroczenia biegunu?

Obiekty i przekształcenia geometryczne, opisane za pomocą układu (nie zawsze prostokątnego) współrzędnych.
Vath'Ras
Użytkownik
Użytkownik
Posty: 8
Rejestracja: 19 lut 2010, o 23:47
Płeć: Mężczyzna
Lokalizacja: Wro

Geometria sferyczna - sprawdzenie przekroczenia biegunu?

Post autor: Vath'Ras »

Witam!

Piszę sobie program do grafiki 3D. Mam obiekt kamera (który służy do przekształcenia rzeczy tak aby wyświetlać je na ekranie). Kamera składa się z dwóch podobiektów: "oka" i "celu". "Oko" pokazuje gdzie właściwie kamera się znajduje. "Cel" mówi gdzie jest punkt w przestrzeni, na który teraz patrzę. Poza tym do dyspozycji mam takie dane: Pozycja kamery: \(\displaystyle{ A\left(x, y, z \right)}\) wyrażona jest w globalnym układzie współrzędnych, wraz z 3ma wektorami określającymi lokalny układ współrzędnych: \(\displaystyle{ U\left( Ux, Uy, Uz\right) , V\left( Vx, Vy, Vz\right) , W\left( Wx, Wy, Wz\right)}\). "Oko" i "cel" mają wszystkie współrzędne wyrażone w lokalnym układzie kamery. Tak więc "oko" ma współrzędne: \(\displaystyle{ O \left( 0, 0, 0\right)}\), wektory jego jeszcze lokalniejszego układu współrzędnych: \(\displaystyle{ \left( 1, 0, 0\right) , \left( 0, 1, 0\right) , \left( 0, 0, 1\right)}\). "Cel": współrzędne: \(\displaystyle{ C \left( 0, 0, L\right)}\), gdzie \(\displaystyle{ L}\) jest odległością od "oka" do "celu", jego jeszcze lokalniejszy układ współrzędnych taki sam jak układ współrzędnych celu. Oczywiście wszystkie układy współrzędnych są ortonormalne.

Kamera ma opcję obracania się wokół "celu". Zrealizowałem to tak, jak w geometrii sferycznej. W tym celu mam dwa obroty (na macierzach) - jeden wokół wektora \(\displaystyle{ U}\), (szerokość geograficzna), drugi wokół wektora globalnego Y: \(\displaystyle{ \left( 0, 1, 0\right)}\) (długość geograficzna).

Wszystko działa prawie tak jak chcę. Brakuje mi tylko jednej rzeczy. Chodzi o to, że jestem w stanie teraz za pomocą moich obrotów przejść na wylot przez obydwa bieguny (szerokość = 90st) i znaleźć się po jego drugiej stronie, tylko że do góry nogami, oczywiście. Rzecz w tym, że chcę aby biegun był najdalszym punktem do którego można się obrócić, taką nieprzekraczalną barierą. Jeśli chce się znaleźć po jego drugiej stronie - trzeba obrócić się blisko bieguna, ale w długości geogr.

I cały problem w tym że nie mam pojęcia jak zbadać, czy przypadkiem nie przekroczyłem bieguna (w niepożądany sposób). Nie wiem jaki warunek mam określić aby zapobiec przejściu przez biegun.

Poniżej zamieszczam linki do pomocniczych rysunków, dla tych, którym trudniej sobie to wyobrazić.

Globalnie:


Lokalnie:


>>EDIT<<

jeszcze co wolno, a czego nie wolno (o co dokładnie mi chodzi), widok z góry lub dołu, zależnie od interpretacji oglądacza:
http://i55.tinypic.com/2rcybzq.png
ODPOWIEDZ