Rotation Matrix
Rotation Matrix¿¡ ´ëÇØ¼ ¾Ë¾Æº»´Ù. ´ÙÀÌ·ºÆ® X´Â ¿Þ¼ÕÁÂÇ¥°è¸¦ »ç¿ëÇϰí Maxtrix´Â Çà¿ì¼±(row major), OpenGLÀº ¿¿ì¼±(column major)À» ¿ÀÀÏ·¯ ȸÀü¿¡ ´ëÇØ ¼³¸íÇÑ´Ù. ¿À¸¥¼Õ ÁÂÇ¥°è¿Í ¿Þ¼Õ ÁÂÇ¥°èÀÇ È¸Àü½ÄÀ» ¼·Î ºñ±³ÇÏ¿© X, Y, Z ÃàÀ» ȸÀüÇÒ ¶§, ȸÀü ±×¸²°ú °ø½ÄÀº ´ÙÀ½°ú °°´Ù.
XÃà ȸÀü°ú ZÃà ȸÀüÀº °íµîÇб³¶§ ÀÚÁÖ º¸´ø ¿ÀÀÏ·¯ ¹æ½ÄÀÇ È¸Àü º¯È¯ÀÌ´Ù. ¿ÀÀÏ·¯ ¹æ½ÄÀÇ È¸Àü º¯È¯À» ¸ÅÆ®¸¯½º ¹æ½ÄÀ¸·Î º¯È¯ÇÏ¸é ´ÙÀ½°ú °°´Ù.
Çà¿ì¼± matrix Ŭ·¡½º´Â LMaxtrix Ŭ·¡½º ¿¿ì¼± matrix Ŭ·¡½º´Â RMatrix Ŭ·¡½º ½ÇÁ¦ ¾î¶»°Ô »ç¿ëµÇ´ÂÁö º¸ÀÚ ÄÚµå´Â ´ÙÀ½°ú °°´Ù. void CTestApp::Render() { //m_cameraRef.fRotateX = -14.0f; //m_cameraRef.fRotateX = 0.0f; if( GetRightHandCoordinate() ) { #if 0 D3DXMATRIX matTranslation, matRot, matWorld; D3DXMatrixTranslation( &matTranslation, 0.0f, m_cameraRef.wheel * 2.0f, 0.0f); D3DXMatrixRotationYawPitchRoll( &matRot, 0.0f, D3DXToRadian(-m_cameraRef.fRotateY), D3DXToRadian(-m_cameraRef.fRotateX));
IDirect3DDevice9 * pDevice = m_pGraphics->GetDevice();
matWorld = matRot * matTranslation; pDevice->SetTransform( D3DTS_WORLD, &matWorld);
m_pXFile->Draw(); #else RMatrix matTranslation; matTranslation.Translate( 0.0f, m_cameraRef.wheel * 2.0f, 0.0f); RMatrix matRot; matRot.YawPitchRoll( DEGTORAD(-m_cameraRef.fRotateX), DEGTORAD(-m_cameraRef.fRotateY), 0.0f ); matRot = matTranslation * matRot; matRot.Transpose();
IDirect3DDevice9 * pDevice = m_pGraphics->GetDevice(); D3DXMATRIX matWorld = matRot; pDevice->SetTransform( D3DTS_WORLD, &matWorld);
m_pXFile->Draw(); #endif } else { #if 0 D3DXMATRIX matTranslation, matRot, matWorld; D3DXMatrixTranslation( &matTranslation, 0.0f, 0.0f, m_cameraRef.wheel * 2.0f); D3DXMatrixRotationYawPitchRoll( &matRot, D3DXToRadian(m_cameraRef.fRotateX), D3DXToRadian(m_cameraRef.fRotateY), 0.0f ); IDirect3DDevice9 * pDevice = m_pGraphics->GetDevice();
matWorld = matRot * matTranslation; pDevice->SetTransform( D3DTS_WORLD, &matWorld);
m_pXFile->Draw(); #else LMatrix matTranslation; matTranslation.Translate(0.0f, 0.0f, m_cameraRef.wheel * 2.0f); LMatrix matRot; matRot.YawPitchRoll( DEGTORAD(m_cameraRef.fRotateX), DEGTORAD(m_cameraRef.fRotateY), 0.0f ); matRot = matRot * matTranslation; D3DXMATRIX matWorld = matRot;
IDirect3DDevice9 * pDevice = m_pGraphics->GetDevice(); pDevice->SetTransform( D3DTS_WORLD, &matWorld); m_pXFile->Draw();
m_pXFile->Draw(); #endif } }
|