Autor Wątek: Zmiana kierunku wektora na równoległy do osi  (Przeczytany 831 razy)

Offline Oti

  • Użytkownik

# Maj 01, 2011, 23:39:39
Witam.

Mam pewien problem. Otóż mam dany wektor i jakieś obiekty. Muszę wyznaczyć sześcian otaczający te obiekty 'z perspektywy' tego wektora(konkretnie to chodzi o podział frustuma kamery do parallel-split shadow map). Wpadłem na pomysł, by wszystko obrócić odpowiednio tak, by ten wektor leżał na którejś z osi układu współrzędnych, wtedy wyznaczenie sześcianu otaczającego obiekty sprowadziłoby się do zwykłego AABB, sytuację przedstawiłem na rysunku:


I teraz mam pytanie: w jaki sposób skonstruować macierz przekształcającą wektor w ten sposób?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline counterClockWise

  • Użytkownik

# Maj 02, 2011, 00:14:40
Nie bardzo rozumiem czy ten sześcian ma być w przestrzeni 3D czy post-projection.

Co do samego problemu z rysunku - zapisz sobie docelowy wektor jaki potrzebujesz, czyli chyba UNIT_Z [0,0,1]. Z iloczynu skalarnego (dot) masz cosinus kąta między wektorem obecnym i docelowym, a więc także kąt. Z iloczynu wektorowego masz normalną płaszczyzny stycznej, a więc wiesz wokół jakiej osi musisz obrócić o ten kąt, aby źródłowy wektor stał się [0,0,1].
 
Możesz też oba wektory zapisać w postaci kwaternionów i obliczyć kwaternion różnicy.

Offline Oti

  • Użytkownik

# Maj 02, 2011, 00:19:44
Nie bardzo rozumiem czy ten sześcian ma być w przestrzeni 3D czy post-projection.
W przestrzeni 3D, tej samej co obiekt. Dzięki za odpowiedź, chyba właśnie takiego algorytmu potrzebowałem, idę kombinować. :)