DirectX Graphics ·¹ÆÛ·±½º Direct3D extension (D3DX) C/C++ ·¹ÆÛ·±½º ÇÔ¼ö »ê¼ú ÇÔ¼ö D3DXQuaternionSquadSetup   [¸ñÂ÷¿­¶÷] [ÁÖ¼Òº¹»ç] [½½·Ôºñ¿ì±â]
D3DXQuaternionSquadSetup ÇÔ¼ö
 
Microsoft DirectX 9.0

D3DXQuaternionSquadSetup ÇÔ¼ö


±¸¸é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);

ÁÖ :

°á°ú´Â, z ÃàÀÇ ÁÖÀ§¿¡¼­ time = 0.5 ·Î 45 µµ ȸÀüÇÑ °ÍÀÌ µÈ´Ù.

ÇÔ¼öÀÇ Á¤º¸

Çì´õd3dx9math.h
ÀÓÆ÷Æ® ¶óÀ̺귯¸®d3dx9.lib
ÃÖÀúÇÑÀÇ operating system Windows 98

ÂüÁ¶

D3DXQuaternionSquad


© 2002 Microsoft Corporation. All rights reserved.
¡èTOP