DirectX Graphics ·¹ÆÛ·±½º Direct3D extension (D3DX) C/C++ ·¹ÆÛ·±½º ÇÔ¼ö »ê¼ú ÇÔ¼ö D3DXQuaternionSquadSetup [¸ñÂ÷¿¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
|
| Microsoft DirectX 9.0 |
±¸¸é2Â÷ º¸°£ÀÇ Á¦¾î Æ÷ÀÎÆ®¸¦ ¼³Á¤ÇÑ´Ù.
±¸¹®
void D3DXQuaternionSquadSetup(
D3DXQUATERNION *pAOut, D3DXQUATERNION *pBOut, D3DXQUATERNION *pCOut, const D3DXQUATERNION *pQ0, const D3DXQUATERNION *pQ1, const D3DXQUATERNION *pQ2, const D3DXQUATERNION *pQ3 );
ÆÄ¶ó¹ÌÅÍ
- pAOut
- [out] AOut ÀÇ Æ÷ÀÎÅÍ.
- pBOut
- [out] BOut ÀÇ Æ÷ÀÎÅÍ.
- pCOut
- [out] COut ÀÇ Æ÷ÀÎÅÍ.
- pQ0
- [in] ÀÔ·Â Á¦¾î Æ÷ÀÎÆ® Q0 ÀÇ Æ÷ÀÎÅÍ.
- pQ1
- [in] ÀÔ·Â Á¦¾î Æ÷ÀÎÆ® Q1 ÀÇ Æ÷ÀÎÅÍ.
- pQ2
- [in] ÀÔ·Â Á¦¾î Æ÷ÀÎÆ® Q2 ÀÇ Æ÷ÀÎÅÍ.
- pQ3
- [in] ÀÔ·Â Á¦¾î Æ÷ÀÎÆ® Q3 ÀÇ Æ÷ÀÎÅÍ.
¹Ýȯ°ª
¾øÀ½.
ÁÖÀÇ
ÀÌ ÇÔ¼ö´Â, ÀÔ·Â pQ0, pQ1, pQ2, ¹× pQ3 ·Î ÁöÁ¤µÇ´Â 4 °³ÀÇ Á¦¾î Æ÷ÀÎÆ®¸¦ ÃëÇÑ´Ù. ±× ÈÄ ÀÌ·¯ÇÑ °ªÀ» º¯°æÇØ, ÃÖ´ÜÀÇ ÆÐ½º¸¦ Åë°úÇÏ´Â Ä¿ºê¸¦ ã¾Æ³½´Ù. q0, q2, ¹× q3 ÀÇ °ªÀº, ´ÙÀ½°ú °°ÀÌ °è»êµÈ´Ù.
q0 = |Q0 + Q1| < |Q0 - Q1| ? -Q0 : Q0 q2 = |Q1 + Q2| < |Q1 - Q2| ? -Q2 : Q2 q3 = |Q2 + Q3| < |Q2 - Q3| ? -Q3 :Q3»õ·Î¿î Q °ªÀ» °è»êÇÏ¸é ´ÙÀ½°ú °°ÀÌ ÇØ AOut, BOut, ¹× COut °¡ °è»êµÈ´Ù.
AOut = q1 * e[-0. 25 *( Ln[Exp(q1) *q2] + Ln[Exp(q1) *q0] ) ]
BOut = q2 * e[-0. 25 *( Ln[Exp(q2) *q3] + Ln[Exp(q2) *q1] ) ]
COut = q2
ÁÖ Ln ´Â ¾ÖÇø®ÄÉÀÌ¼Ç ÇÁ·Î±×·¡¹Ö ÀÎÅÍÆäÀ̽º (API)ÀÇ ¸Þ¼µå D3DXQuaternionLn ·Î, Exp ´Â API ÀÇ ¸Þ¼µå D3DXQuaternionExp ÀÌ´Ù.
¿¹
´ÙÀ½¿¡, ÄõÅʹϿ Ű¼¼Æ® (Q0, Q1, Q2, Q3)¸¦ »ç¿ëÇØ ³»ºÎ Æò¹æ Æ÷ÀÎÆ® (A, B, C)¸¦ °è»êÇÏ´Â ¿¹¸¦ ³ªÅ¸³½´Ù. À̰Ϳ¡ ÀÇÇØ, ÀÎÁ¢ÇÏ´Â ¼¼±×¸ÕÆ®(segment)¸¦ ¶Ç ÀÖ°í·Î Á¢¼±ÀÌ ¿¬¼ÓÇÑ´Ù.
A B Q0 Q1 Q2 Q3ÀÌ¿Í °°ÀÌ ÇØ Q1 ¿Í Q2 ÀÇ »çÀ̸¦ º¸°£ ÇÑ´Ù.
// Rotation about the z-axis D3DXQUATERNION Q0 = D3DXQUATERNION(0, 0, 0.707f, -. 707f); D3DXQUATERNION Q1 = D3DXQUATERNION(0, 0, 0.000f, 1.000f); D3DXQUATERNION Q2 = D3DXQUATERNION(0, 0, 0.707f, 0.707f); D3DXQUATERNION Q3 = D3DXQUATERNION(0, 0, 1.000f, 0.000f); D3DXQUATERNION A, B, C, Qt; FLOAT time = 0.5f; D3DXQuaternionSquadSetup(&A, &B, &C, &Q0, &Q1, &Q2, &Q3); D3DXQuaternionSquad(&Qt, &Q1, &A, &B, &C, time);ÁÖ :
- C ´Â, ÇÔ¼öÀÇ °á°ú¿¡ ÀÇÇØ + ¶Ç´Â - ÀÇ Q2 °¡ µÈ´Ù.
- Qt ´Â ÇÔ¼öÀÇ °á°úÀÌ´Ù.
°á°ú´Â, z ÃàÀÇ ÁÖÀ§¿¡¼ time = 0.5 ·Î 45 µµ ȸÀüÇÑ °ÍÀÌ µÈ´Ù.
ÇÔ¼öÀÇ Á¤º¸
Çì´õ d3dx9math.h ÀÓÆ÷Æ® ¶óÀ̺귯¸® d3dx9.lib ÃÖÀúÇÑÀÇ operating system Windows 98
ÂüÁ¶
D3DXQuaternionSquad