Udostępnij przez


Systemy współrzędnych (Direct3D 9)

Zazwyczaj aplikacje graficzne 3D używają dwóch typów układów współrzędnych kartezjańskich: leworęcznych i praworęcznych. W obu układach współrzędnych dodatnia oś x wskazuje na prawą, a dodatnia oś y znajduje się w górę. Można zapamiętać kierunek dodatnich punktów osi Z, wskazując palce lewej lub prawej strony w dodatnim kierunku x i zwijając je w pozytywny kierunek y. Kierunek, w którym punkty kciuka, w kierunku lub z dala od Ciebie, to kierunek, w którym punkty dodatniej osi Z dla tego układu współrzędnych. Na poniższej ilustracji przedstawiono te dwa układy współrzędnych.

ilustracja układów współrzędnych kartezjańskich leworęcznych i praworęcznych

Funkcja Direct3D używa leworęcznego układu współrzędnych. Jeśli przenosisz aplikację opartą na praworęcznym układzie współrzędnych, musisz wprowadzić dwie zmiany w danych przekazanych do direct3D.

  • Przerzuć kolejność wierzchołków trójkątów, aby system przechodził je zgodnie z ruchem wskazówek zegara z przodu. Innymi słowy, jeśli wierzchołki to v0, v1, v2, przekaż je do direct3D jako v0, v2, v1.
  • Macierz widoków umożliwia skalowanie przestrzeni świata według -1 w kierunku z. W tym celu przerzuć znak _31, _32, _33 i _34 składowej D3DMATRIX używanej dla macierzy widoków.

Aby uzyskać ilości prawego świata, użyj funkcji D3DXMatrixPerspectiveRH i D3DXMatrixOrthoRH, aby zdefiniować transformację projekcji. Należy jednak zachować ostrożność, aby użyć odpowiedniej D3DXMatrixLookAtRH funkcji, odwrócić kolejność ulewy wstecznej i odpowiednio rozłożyć mapy sześcianu.

Chociaż współrzędne leworęczne i praworęczne są najbardziej typowymi systemami, istnieje wiele innych systemów współrzędnych używanych w oprogramowaniu 3D. Na przykład nie jest niczym niezwykłym, że aplikacje modelowania 3D używają układu współrzędnych, w którym oś y wskazuje w kierunku lub z dala od przeglądarki, a oś z wskazuje w górę.

Formalnie orientacja zestawu wektorów bazowych (tj. układu współrzędnych) może zostać znaleziona przez obliczenie determinatora macierzy zdefiniowanej przez konkretny zestaw wektorów bazowych. Jeśli determinant jest pozytywny, mówi się, że podstawa jest "pozytywnie" zorientowana (lub praworęczna). Jeśli determinant jest ujemny, mówi się, że podstawa jest "negatywnie" zorientowana (lub leworęczna). Aby uzyskać wyjaśnienie, czym jest determinant, zobacz dowolny zasób algebry liniowej.

Nieformalnie możesz użyć reguły "prawo/lewa ręka", aby określić, czy dany zestaw wektorów bazowych tworzy układ współrzędnych z prawej lub lewej strony.

Podstawowe operacje wykonywane na obiektach zdefiniowanych w układzie współrzędnych 3D to tłumaczenie, rotacja i skalowanie. Te podstawowe przekształcenia można połączyć, aby utworzyć macierz przekształcania. Aby uzyskać szczegółowe informacje, zobacz Transforms (Direct3D 9).

Po połączeniu tych operacji wyniki nie są dojeżdżające; kolejność mnożenia macierzy jest ważna.

Układy współrzędnych i Geometria