Z tego, czego się nauczyłem, odkąd jestem również studentem, jest to, że chcesz pracować z macierzami , aby traktować rotacje, skalowanie i tłumaczenia w ten sam sposób, to znaczy mnożenie przez macierz (tj. 4 x 4 matrycy).4×44×4
Pamiętaj, że bez tych macierzy tłumaczenia byłyby reprezentowane przez sumowanie z wektorem, podczas gdy obroty i skalowanie byłyby reprezentowane przez mnożenie odpowiednio z wektorem i współczynnikiem skalarnym.4×4
Teraz pytanie brzmi: jak przejść z układu współrzędnych 3D do układu 4D ? Odpowiedź brzmi: „ jednorodne współrzędne ”.
Co to znaczy? Konstruujemy macierze do reprezentowania rotacji, skalowania i translacji, dlatego używamy mnożenia macierzy do reprezentowania transformacji (np. Rotacje, skalowanie itp.). Sposób, w jaki konstruujemy je indywidualnie, jest bardziej szczegółowy, ale możesz to zobaczyć w Internecie.4×4
W tym momencie mamy macierze i wektory 3D, jeszcze nieprzydatne, ponieważ nie można pomnożyć macierzy 4 × 4 i wektorów 3 D , ponieważ wymiary się nie zgadzają. Właśnie dlatego, gdy pracujemy z jednorodnymi współrzędnymi, musimy również przekonwertować podane punkty 3D na odpowiadające im punkty 4D.4×44×43D
Jak to robimy?
Rozróżniamy wektory kierunku i położenia . Wektory kierunkowe, jak sama nazwa wskazuje, mają kierunek, na który wskazują; dbamy również o ich długość, ale tłumaczenia nie mają na nie wpływu, ponieważ nie dbamy o ich pozycję. Wektory położenia (lub po prostu „punkty”) można tłumaczyć lub przenosić; są zwykle reprezentowane w odniesieniu do początku, tj. jako wektor od początku do samego punktu.
Przekształcamy 3D wektorów kierunkowych przez dodanie jako 4 th współrzędna wektora odpowiadającego jednorodnego: dodamy do zera, bo to w zasadzie eliminuje efekt tłumaczenia. Podobnie robimy z wektorami pozycji, ale zamiast 0 dodajemy 1 , z przeciwnego powodu.0401
Na przykład, jeśli mamy wektor kierunku v = ( v 1 v 2 v 3 ) , przekształcamy go, wykonując v ′ = ( v 1 v 2 v 3 0 ) . Podobnie, gdybyśmy mieli wektor punktowy u = ( u 1 u 2 u 3 ), zmienilibyśmy go na u ′ = ( u 1 u 2 u 3 1 )3Dv=⎛⎝⎜v1v2v3⎞⎠⎟v′=⎛⎝⎜⎜⎜v1v2v30⎞⎠⎟⎟⎟u=⎛⎝⎜u1u2u3⎞⎠⎟u′= ⎛⎝⎜⎜⎜u1u2)u3)1⎞⎠⎟⎟⎟
Uwaga: aby przekonwertować homogeniczne współrzędne z powrotem na odpowiednie współrzędne , nie można po prostu usunąć współrzędnej 4 t h , chyba że nadal jest równa odpowiednio 1 (lub 0 ).3 D.4 t godz10