Vectores, vértices y cuaterniones (Direct3D 9)
A lo largo de Direct3D, los vértices describen la posición y la orientación. Cada vértice de un primitivo se describe mediante un vector que proporciona su posición, color, coordenadas de textura y un vector normal que proporciona su orientación.
Los cuaterniones agregan un cuarto elemento a los valores [x, y, z] que definen un vector de tres componentes. Los cuaterniones son una alternativa a los métodos de matriz que se usan normalmente para las rotaciones 3D. Un cuaternión representa un eje en el espacio 3D y un giro alrededor de ese eje. Por ejemplo, un cuaternión podría representar un eje (1,1,2) y un giro de 1 radian. Los cuaterniones llevan información valiosa, pero su verdadero poder proviene de las dos operaciones que puede realizar en ellos: composición e interpolación.
Realizar composición en cuaterniones es similar a combinarlas. La composición de dos cuaterniones se nota como la ilustración siguiente.
La composición de dos cuaterniones aplicadas a una geometría significa "girar la geometría alrededor del eje₁ por rotación, girarla alrededor del eje₁ por rotación₁". En este caso, Q representa una rotación alrededor de un solo eje que es el resultado de aplicar q Despues, q₁ a la geometría.
Mediante la interpolación de cuaternión, una aplicación puede calcular una ruta de acceso suave y razonable desde un eje y orientación a otro. Por lo tanto, la interpolación entre q₁ yqs proporciona una manera sencilla de animar de una orientación a otra.
Cuando se usa la composición y la interpolación conjuntamente, proporcionan una manera sencilla de manipular una geometría de una manera que parezca compleja. Por ejemplo, imagine que tiene una geometría que desea girar a una orientación determinada. Sabes que quieres girarlo r₁ grados alrededor del eje, después girarlo r₁ grados alrededor del eje₁, pero no conoces el cuaternión final. Mediante el uso de la composición, puede combinar los dos giros de la geometría para obtener un único cuaternión que es el resultado. A continuación, podría interpolar desde el original hasta el cuaternión compuesto para lograr una transición fluida de una a otra.
La biblioteca de utilidades D3DX incluye funciones que le ayudan a trabajar con cuaterniones. Por ejemplo, la función D3DXQuaternionRotationAxis agrega un valor de rotación a un vector que define un eje de rotación y devuelve el resultado en un cuaternión definido por una estructura D3DXQUATERNION . Además, la función D3DXQuaternionMultiply compone cuaterniones y D3DXQuaternionSlerp realiza interpolación lineal esférica entre dos cuaterniones.
Las aplicaciones de Direct3D pueden usar las siguientes funciones para simplificar la tarea de trabajar con cuaterniones.
- D3DXQuaternionBaryCéntrico
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Las aplicaciones de Direct3D pueden usar las siguientes funciones para simplificar la tarea de trabajar con vectores de tres componentes.
- D3DXVec3Agregar
- D3DXVec3BaryCéntrico
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
Muchas funciones adicionales que simplifican las tareas mediante vectores de dos y cuatro componentes se incluyen entre las funciones matemáticas proporcionadas por la biblioteca de utilidades D3DX.
Temas relacionados