Autor Wątek: Jak to jest ze współrzędną W wektora  (Przeczytany 2884 razy)

Offline Reg

  • Administrator
    • Adam Sawicki - Home Page

# Wrzesień 02, 2006, 07:08:52
Otóż mam braka z matematyki, może ktoś mi pomoże ;)

W grafice 3D do przekształcania wektorów z użyciem macierzy 4x4 (która opisuje jakieś przekształcenie typu translacja, skalowanie, obracanie, ścinanie, rzutowanie czy ich kombinację) stosuje się jak wiadomo tzw. współrzędne jednorodne, czyli wektor 3D (x,y,z) rozszerza się do wektora 4D (x,y,z,w) wypełniając w=1. Wtedy taki wektor da się wymnożyć z tą macierzą i wychodzi wektor przekształcony.

Moje pytanie brzmi: Co ze współrzędną w tego wektora po takim przekształceniu? Czy muszę wracając do normalnych współrzędnych 3D wszystkie pozostałe - x, y, z - podzielić przez w przed jego porzuceniem, tak jak mówi teoria o ile dobrze się orientuję? Rozpisując na kartce te mnożenia i przekształcenia jak bym nie kombinował (nawet przy translacji), współrzędna w po takim przekształceniu zawsze pozozstaje jedynką. Może więc wystarczy ją zignorować?
« Ostatnia zmiana: Wrzesień 02, 2006, 07:11:12 wysłana przez Regedit »

Offline Mr. Spam

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

nadult

  • Gość
# Wrzesień 02, 2006, 10:33:51
Może więc wystarczy ją zignorować?
Zależy od macierzy, jeśli macierz jest afiniczna (<0,0,0,1> w ostatniej kolumnie) to możesz ją zignorować, wpp. musisz wykonać dzielenie.

Offline orzech

  • Użytkownik
    • homepage

# Wrzesień 02, 2006, 12:44:41
Generalnie przyjmuje się, że macierze o wymiarach 4 x 1 gdzie ostatnia składowa ('w') równa jest 1, reprezentują punkty w przestrzeni 3D. Kiedy 'w' równe jest 0, mamy do czynienia z wektorami (w tym przypadku kolumnowymi).

Na etapie modelowania sceny 'w' jest potrzebne do wykonywania translacji (wtedy do każdej składowej wynikowej macierzy dodawany jest odpowiedni element macierzy transformacji - element odpowiadający za przesunięcie). Ma to sens, ponieważ do 'punktów' można dodawać wektory i otrzymujemy punkt ('w' było 1 i po transformacji dalej jest 1). Wektory jednak (w=0) wyrażają tylko i wyłącznie kierunek i nie ma czegoś takiego jak translacja wektora.

Nie trzeba się więc tym 'w' przejmować. ;)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Wrzesień 02, 2006, 13:29:38
Cytuj
Rozpisując na kartce te mnożenia i przekształcenia jak bym nie kombinował (nawet przy translacji), współrzędna w po takim przekształceniu zawsze pozozstaje jedynką. Może więc wystarczy ją zignorować?
O ile używasz samych przekształceń liniowych, to 'w' pozostanie jedynką. Współrzędna 'w' w normalnych sytuacjach zmienia się jedynie przez macierz projekcji (chociaż czasami użwya się jej do extrude w shadow volumach). :)