DirectX/Calcolo vettoriale: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Nessun oggetto della modifica
Riga 92:
</source>
Allo stesso modo esistono D3DXVECTOR2 e D3DXVECTOR4 (poi capiremo a cosa serve).
 
===Lunghezza del vettore===
Per leggere la lunghezza, o il modulo, effettiva del vettore (e non le sue componenti) D3DX mette a disposizione queste funzioni:
<source lang="cpp">
float D3DXVec2Length(D3DXVECTOR2 *pV);
float D3DXVec3Length(D3DXVECTOR3 *pV);
float D3DXVec4Length(D3DXVECTOR4 *pV);
</source>
 
===Normalizzazione di vettori===
Line 106 ⟶ 114:
D3DXVec2Normalize(&b, &b);
</source>
 
===Prodotto scalare===
Anche per il prodotto scalare la classe D3DXVECTOR# non presenta funzioni utili. Tra l'altro la funzione ''operator*'' è utilizzata per il prodotto con scalare. Quindi il seguente codice è errato:
<source lang="cpp">
D3DXVECTOR3 a(5.0), b(3.2);
D3DXVECTOR3 res = a * b; // L'operatore * moltiplica solo vettori con scalari.
</source>
 
Per il prodotto scalare (Dot product) D3DX fornisce i seguenti metodi:
<source lang="cpp">
float D3DXVec2Dot(D3DXVECTOR2 *pV1, D3DXVECTOR2 *pV2);
float D3DXVec3Dot(D3DXVECTOR3 *pV1, D3DXVECTOR3 *pV2);
float D3DXVec4Dot(D3DXVECTOR4 *pV1, D3DXVECTOR4 *pV2);
</source>
Tutte le versioni prendono come argomenti due puntatori a D3DXVECTOR#, di cui verrà calcolato il prodotto scalare (che restituisce un valore scalare, ricordiamolo), il cui risultato sarà restituito dalla funzione.
===Prodotto vettoriale===
Infine ci sono funzioni anche per il calcolo del prodotto vettoriale (Cross product). Essendo il prodotto vettoriale non definito per un vettore 2D non esiste un D3DXVec2Cross, ma solo D3DXVec3Cross e D3DXVec4Cross.
<source lang="cpp">
D3DXVECTOR3 *D3DXVec3Cross(D3DXVECTOR3 *pOut, D3DXVECTOR3 *pV1, D3DXVECTOR3 *pV2);
D3DXVECTOR4 *D3DXVec4Cross(D3DXVECTOR4 *pOut, D3DXVECTOR4 *pV1, D3DXVECTOR4 *pV2);
</source>
In questo caso oltre ai due vettori di partenza viene passato come argomento anche un puntatore a vettore dove verrà inserito il risultato dell'operazione. Il valore di pOut viene anche restituito dalla funzione stessa.
 
[[Categoria:DirectX|Ripasso di Matematica|Calcolo vettoriale]]
{{Avanzamento|75100%|07 ottobre 2011}}