M-ar ajuta mult un raspuns elaborat
Schimbare de baza
Schimbare de baza
Fie un spatiu vectorial V pe \( R^3 \) si doua baze ale acestuia: 3DS si OGL (e ciudata denumirea, dar face referire la 3d studio max si opengl). 3DS are axa X de la stanga la dreapta, Y din afara ecranului in interior si Z de jos in sus. OGL are X de la stanga la dreapta, Y de jos in sus si Z din interiorul ecranului in exterior. Se da o matrice de 4x4 care contine informatii legate de transformari geometrice: rotatie si translatie. Matricea contine transformarile relative la baza 3DS. Se cere matricea care contine aceleasi transformari dar relative la baza OGL. Sigur, ma intereseaza cum se transforma fiecare vector de baza si translatia.
M-ar ajuta mult un raspuns elaborat
.
M-ar ajuta mult un raspuns elaborat
- Alin Galatan
- Site Admin
- Posts: 247
- Joined: Tue Sep 25, 2007 9:24 pm
- Location: Bucuresti/Timisoara/Moldova Noua
Re: Schimbare de baza
Cred ca aici ar trebui sa explici mai bine cine e V. Cred ca te referi de fapt exact la \( R^3 \)AdrianM wrote:Fie un spatiu vectorial V pe \( R^3 \)
A doua nelamurire(la care ar fi bune explicatii) e de ce matricea e de 4x4 cand spatiul are dimensiune 3? Din cate mai tin minte, in DirectX matricea era tot de 4x4, pe motiv ca "projection matrix", cea care proiecteaza lumea ta 3D pe ecranul 2D e mai ciudata. In rest, rotatiile si translatiile cred ca erau concentrate doar in blocul de 3x3 din stanga sus, iar pentru a obtine 4x4 se facea suma directa cu matricea \( I_1 \). E posibil sa ma insel, de aceea as dori sa imi zici exact de ce e 4x4 si nu 3x3.
Motivul pentru care cer asta e faptul ca transformarile ce le ceri tu vor fi cu matrice 3x3, nu 4x4 si trebuie vazut cum o completam pana la 4x4.
[Edit:] Intr-adevar, am gasit cum arata matricele de proiectie in DiretctX.. si sunt 4x4 pe bune:
http://msdn.microsoft.com/en-us/library ... S.85).aspx (copy-paste, nu vede linkul cum trebuie)
Am cautat si cum arata rotatiile, si intr-adevar, se face suma directa intra clasicele matrice de rotatii si \( I_1 \)
http://www.cprogramming.com/tutorial/3d ... rices.html
As dori confirmare.
Ma refer exact la R^3.
Matricile de 3x3 pot contine doar informatii despre transformari liniare. O matrice de 4x4 poate contine informatii despre transformari afine mai generale si poate contine si translatii.
Exista doua metode de a stoca o matrice: "column major"(specific ogl) si "row major"(specific 3d studio max si d3d). Pentru a pastra simplitatea ar fi mai usor ca atunci cand convertim matricea sa facem referire la vectorii bazei si transatie. Astfel nu ne mai batem capul cu modul diferit de a stoca o matrice care variaza de la program la program.
O matrice scrisa in forma column major care include o translatie arbitrara ar arata cam asa:
X Y Z T
1 0 0 tx
0 1 0 ty
0 0 1 tz
0 0 0 1

Matricile de 3x3 pot contine doar informatii despre transformari liniare. O matrice de 4x4 poate contine informatii despre transformari afine mai generale si poate contine si translatii.
Exista doua metode de a stoca o matrice: "column major"(specific ogl) si "row major"(specific 3d studio max si d3d). Pentru a pastra simplitatea ar fi mai usor ca atunci cand convertim matricea sa facem referire la vectorii bazei si transatie. Astfel nu ne mai batem capul cu modul diferit de a stoca o matrice care variaza de la program la program.
O matrice scrisa in forma column major care include o translatie arbitrara ar arata cam asa:
X Y Z T
1 0 0 tx
0 1 0 ty
0 0 1 tz
0 0 0 1