Condividi tramite


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 fornisce la posizione, il colore, le coordinate della trama e un vettore normale che ne fornisce l'orientamento.

I 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 attorno a tale asse. Ad esempio, un quaternione potrebbe rappresentare un asse (1,1,2) e una rotazione di 1 radiante. I quaternioni contengono informazioni preziose, ma la loro vera potenza deriva dalle due operazioni che è possibile eseguire su di essi: composizione e interpolazione.

L'esecuzione di composizione su quaternioni è simile alla combinazione. La composizione di due quaternioni è notata come nella figura seguente.

illustrazione della notazione quaternione

La composizione di due quaternioni applicate a una geometria significa "ruotare la geometria intorno all'asse intorno all'asse di rotazione, quindi ruotarla intorno all'asse₁ in base alla rotazione₁". In questo caso, Q rappresenta una rotazione attorno a un singolo asse che è il risultato dell'applicazione diqi, quindi q₁ alla geometria.

Usando l'interpolazione quaternione, un'applicazione può calcolare un percorso uniforme e ragionevole da un asse e un orientamento a un altro. Di conseguenza, l'interpolazione tra q₁ e q** offre un modo semplice per animare da un orientamento all'altro.

Quando si usa la composizione e l'interpolazione insieme, forniscono un modo semplice per manipolare una geometria in modo che appare 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'asseo, 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 rappresenta 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 lavorare con 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 quaternione definito da una struttura D3DXQUATERNION. Inoltre, la funzione D3DXQuaternionMultiply compone quaternioni e il D3DXQuaternionSlerp esegue l'interpolazione lineare sferica tra due quaternioni.

Le applicazioni Direct3D possono usare le funzioni seguenti per semplificare l'attività di utilizzo dei quaternioni.

Le applicazioni Direct3D possono usare le funzioni seguenti per semplificare l'attività di utilizzo di vettori a tre componenti.

Molte funzioni aggiuntive che semplificano le attività usando vettori a due e quattro componenti sono incluse tra le funzioni matematiche fornite dalla libreria di utilità D3DX.

sistemi di coordinate e geometry