Vecteurs, vertex et quaternions (Direct3D 9)
Tout au long de Direct3D, les sommets décrivent la position et l’orientation. Chaque vertex dans une primitive est décrit par un vecteur qui donne sa position, sa couleur, ses coordonnées de texture et un vecteur normal qui donne son orientation.
Les quaternions ajoutent un quatrième élément aux [ valeurs x, y, z ] qui définissent un vecteur à trois composants. Les quaternions sont une alternative aux méthodes de matrice qui sont généralement utilisées pour les rotations 3D. Un Quaternion représente un axe dans l’espace 3D et une rotation autour de cet axe. Par exemple, un Quaternion peut représenter un axe (1, 1, 2) et une rotation de 1 radian. Les quaternions contiennent des informations précieuses, mais leur véritable puissance est celle des deux opérations que vous pouvez effectuer sur ces derniers : la composition et l’interpolation.
L’exécution de la composition sur des quaternions est semblable à la combinaison de ces éléments. La composition de deux quaternions est nonotée comme dans l’illustration suivante.

La composition de deux quaternions appliquée à une géométrie signifie « faire pivoter la géométrie autour de l’axe ₂ par rotation ₂, puis la faire pivoter autour de l’axe ₁ par rotation ₁ ». Dans ce cas, Q représente une rotation autour d’un axe unique qui est le résultat de l’application de q ₂, puis q ₁ à la géométrie.
À l’aide de l’interpolation Quaternion, une application peut calculer un chemin lisse et raisonnable d’un axe et d’une orientation vers une autre. Par conséquent, l’interpolation entre q ₁ et q ₂ offre un moyen simple d’effectuer une animation d’une orientation à une autre.
Lorsque vous utilisez la composition et l’interpolation ensemble, elles vous offrent un moyen simple de manipuler une géométrie de manière à ce qu’elle s’affiche complexe. Par exemple, imaginez que vous avez une géométrie que vous souhaitez faire pivoter vers une orientation donnée. Vous savez que vous souhaitez le faire pivoter de r ₂ degrés autour de ₂ d’axe, puis le faire pivoter de r ₁ degrés autour de l’axe ₁, mais vous ne connaissez pas le Quaternion final. En utilisant la composition, vous pouvez combiner les deux rotations sur la géométrie pour obtenir un seul Quaternion qui est le résultat. Ensuite, vous pouvez interpoler du Quaternion d’origine vers le Quaternion composé pour effectuer une transition en douceur de l’un à l’autre.
La bibliothèque de l’utilitaire D3DX comprend des fonctions qui vous aident à utiliser les quaternions. Par exemple, la fonction D3DXQuaternionRotationAxis ajoute une valeur de rotation à un vecteur qui définit un axe de rotation et retourne le résultat dans un Quaternion défini par une structure D3DXQUATERNION . En outre, la fonction D3DXQuaternionMultiply compose les quaternions et D3DXQuaternionSlerp effectue une interpolation linéaire sphérique entre deux quaternions.
Les applications Direct3D peuvent utiliser les fonctions suivantes pour simplifier l’utilisation des quaternions.
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Les applications Direct3D peuvent utiliser les fonctions suivantes pour simplifier l’utilisation des vecteurs à trois composants.
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
De nombreuses fonctions supplémentaires qui simplifient les tâches à l’aide des vecteurs à deux et quatre composants sont incluses parmi les fonctions mathématiques fournies par la bibliothèque de l’utilitaire D3DX.