Archived

This topic is now archived and is closed to further replies.

pebben

Rotation with Matrices (Directx)

Recommended Posts

Hi There! My Moon-Mesh rotates well around the Z-axis around the earth. But I want the Moon to rotate around the X-axis at the same time as it´s rotating around the earth? My code for working rotation around earth looks like this, Please complete the code with rotation around the X-axis. D3DXMATRIX mTmp; D3DXMatrixRotationZ(&m_toWorld, m_vRot.z); D3DXMatrixTranslation(&mTmp, m_vPos.x, m_vPos.y, m_vPos.z); D3DXMatrixMultiply(&m_toWorld, &mTmp, &m_toWorld); D3DXMatrixScaling(&mTmp, m_vScale.x, m_vScale.y, m_vScale.z); D3DXMatrixMultiply(&m_toWorld, &m_toWorld, &mTmp); /Have A Nice Day -Patrick

Share this post


Link to post
Share on other sites
D3DXMATRIX mTmp;
//the following line should do it
D3DXMatrixRotationX(&m_toWorld, m_vRot.x);
D3DXMatrixRotationZ(&m_toWorld, m_vRot.z);
D3DXMatrixTranslation(&mTmp, m_vPos.x, m_vPos.y, m_vPos.z);
D3DXMatrixMultiply(&m_toWorld, &mTmp, &m_toWorld);
D3DXMatrixScaling(&mTmp, m_vScale.x, m_vScale.y, m_vScale.z);
D3DXMatrixMultiply(&m_toWorld, &m_toWorld, &mTmp);


/*
I use DirectX 8.1 and C++ (Microsoft Visual C++ 6.0 Professional edition)
*/

Share this post


Link to post
Share on other sites
Uh...what Programmer16 posted won't work because:


D3DXMatrixRotationX(&m_toWorld, m_vRot.x); // <- writes to m_toWorld

D3DXMatrixRotationZ(&m_toWorld, m_vRot.z); // <- ALSO writes to m_toWorld



So, change the lines to:


D3DXMATRIX mTmp;

D3DXMatrixRotationX(&m_toWorld, AngleToRotatePlanetAroundXAxisInRadians );
D3DXMatrixTranslation(&mTmp, m_vPos.x, m_vPos.y, m_vPos.z);
D3DXMatrixMultiply(&m_toWorld, &m_toWorld, &m_Tmp);
D3DXMatrixRotationZ(&mTmp, m_vRot.z);
D3DXMatrixMultiply(&m_toWorld, &m_toWorld, &mTmp);
D3DXMatrixScaling(&mTmp, m_vScale.x, m_vScale.y, m_vScale.z);
D3DXMatrixMultiply(&m_toWorld, &m_toWorld, &mTmp);


and it should work.

[edit]: clarified a variable name...

Chris Pergrossi
My Realm | "Good Morning, Dave"

[edited by - c t o a n on March 21, 2004 8:39:46 AM]

Share this post


Link to post
Share on other sites