Vettori, vertici e quaternioni (Direct3D 9)
In Direct3D, i vertici descrivono la posizione e l'orientamento. Ogni vertice in una primitiva è descritto da un vettore che ne dà la posizione, il colore, le coordinate della trama e un vettore normale che ne dà l'orientamento.
Quaternioni aggiungono un quarto elemento ai valori [x, y, z] che definiscono un vettore a tre componenti. I quaternioni sono un'alternativa ai metodi matrice usati in genere per le rotazioni 3D. Un quaternione rappresenta un asse nello spazio 3D e una rotazione intorno a tale asse. Ad esempio, un quaternione potrebbe rappresentare un asse (1,1,2) e una rotazione di 1 radiano. I quaternioni contengono informazioni preziose, ma la loro vera potenza proviene dalle due operazioni che è possibile eseguire su di loro: composizione e interpolazione.
L'esecuzione di composizione su quaternioni è simile alla combinazione. La composizione di due quaternioni è notata come la figura seguente.
La composizione di due quaternioni applicate a una geometria significa "ruotare la geometria intorno all'asse₁ ruotando intorno all'asse₁ per rotazione₁". In questo caso, Q rappresenta una rotazione intorno a un singolo asse che è il risultato dell'applicazione di q₂, quindi q₁ alla geometria.
Usando l'interpolazione del quaternion, un'applicazione può calcolare un percorso uniforme e ragionevole da un asse e dall'orientamento a un altro. Pertanto, l'interpolazione tra q₁ e q₂ offre un modo semplice per animare da un orientamento a un altro.
Quando si usa la composizione e l'interpolazione insieme, offrono un modo semplice per manipolare una geometria in modo che venga visualizzato complesso. Si supponga, ad esempio, di avere una geometria che si vuole ruotare su un determinato orientamento. Sai che vuoi ruotarlo in gradi intorno all'asse decimale, quindi ruotarlo r₁ gradi intorno all'asse₁, ma non conosci il quaternione finale. Usando la composizione, è possibile combinare le due rotazioni sulla geometria per ottenere un singolo quaternione che è il risultato. È quindi possibile interpolare dall'originale al quaternione composto per ottenere una transizione uniforme da una all'altra.
La libreria di utilità D3DX include funzioni che consentono di usare quaternioni. Ad esempio, la funzione D3DXQuaternionRotationAxis aggiunge un valore di rotazione a un vettore che definisce un asse di rotazione e restituisce il risultato in un quaternion definito da una struttura D3DXQUATERNION . Inoltre, la funzione D3DXQuaternionMultiply compone quaternioni e D3DXQuaternionSlerp esegue l'interpolazione lineare sferica tra due quaternioni.
Le applicazioni Direct3D possono usare le funzioni seguenti per semplificare l'attività di utilizzo con quaternioni.
- D3DXQuaternionBaryCentric
- D3DXQuaternionConjugate
- D3DXQuaternionDot
- D3DXQuaternionExp
- D3DXQuaternionIdentity
- D3DXQuaternionInverse
- D3DXQuaternionIsIdentity
- D3DXQuaternionLength
- D3DXQuaternionLengthSq
- D3DXQuaternionLn
- D3DXQuaternionMultiply
- D3DXQuaternionNormalize
- D3DXQuaternionRotationAxis
- D3DXQuaternionRotationMatrix
- D3DXQuaternionRotationYawPitchRoll
- D3DXQuaternionSlerp
- D3DXQuaternionSquad
- D3DXQuaternionToAxisAngle
Le applicazioni Direct3D possono usare le funzioni seguenti per semplificare l'attività di utilizzo con vettori a tre componenti.
- D3DXVec3Add
- D3DXVec3BaryCentric
- D3DXVec3CatmullRom
- D3DXVec3Cross
- D3DXVec3Dot
- D3DXVec3Hermite
- D3DXVec3Length
- D3DXVec3LengthSq
- D3DXVec3Lerp
- D3DXVec3Maximize
- D3DXVec3Minimize
- D3DXVec3Normalize
- D3DXVec3Project
- D3DXVec3Scale
- D3DXVec3Subtract
- D3DXVec3Transform
- D3DXVec3TransformCoord
- D3DXVec3TransformNormal
- D3DXVec3Unproject
Molte funzioni aggiuntive che semplificano le attività usando due e quattro vettori componente sono incluse tra le funzioni matematiche fornite dalla libreria di utilità D3DX.
Argomenti correlati