nntp2http.com
Posting
Suche
Optionen
Hilfe & Kontakt

matrici di rotazione

Von: Helron (helron@hotmail.it) [Profil]
Datum: 24.01.2007 16:45
Message-ID: <2007012415452619878@mynewsgate.net>
Newsgroup: it.comp.giochi.sviluppo
Ciao,
pensavo di aver capito come funzionassero... e invece ho scoperto di
essere molto lacunoso -__-
ci sto sbattendo la testa ma nn capisco una ceppa e nn so manco dove
cacchio studiarle :°°°

Il punto è questo: ho una classe oggetto che mi renderizza a video una
forma geometrica... bene ora voglio spostare questo oggetto nello spazio
3d permettendone tutti i movimenti sui propri assi(pich, yaw, roll,
strafe e move).
Nella classe tengo salvati 4 vettori cioè vPos, vLook, vUp, vRight (tra
l'altro.. nn ne basterebbero solo 3 visto che, essendo ortogonali, il
quarto me lo posso calcolare?).
Inizialmente i vettori vUp, vRight, vLook hanno la stessa direzione
rispettivamente degli assi x,y e z del mondo.
Ora, mettiamo che il mio oggetto è un banalissimo quadratino (manco un
cubo...) e voglio effettuare lo yaw ruotandolo sul proprio asse indicato
da vUp, faccio cosi:
Se premo il tasto dx modifico vLook e vRight in funzione della rotazione
su vUp, cioè:

D3DXMATRIX m;
D3DXMatrixRotationAxis(&m, &vUp, rotationSpeed);
// rotazione positiva degli altri assi in funzione di vUp
D3DXVec3TransformCoord(&vRight, &vRight, &m);
D3DXVec3TransformCoord(&vLook, &vLook, &m);

Se premo il tassto sx:

D3DXMATRIX m;
D3DXMatrixRotationAxis(&m, &vUp, -rotationSpeed);
// rotazione negativa degli altri assi in funzione di vUp
D3DXVec3TransformCoord(&vRight, &vRight, &m);
D3DXVec3TransformCoord(&vLook, &vLook, &m);


Le stesse cose le posso fare analogamente per il pich e il roll mentre
per il movimento avanti faccio:

vPos += vRight * movementSpeed;

per quello indietro:

vPos -= vRight * movementSpeed;


bene... ma ora nn riesco a costruire la matrice finale(mWorldMatrix) da
passare alla SetTransform(D3DTS_WORLD, &mWorldMatrix)

Qualcuno mi illumina??

--
To understand recursion, you must first understand recursion...


[ Auf dieses Posting antworten ]

Antworten