Funzione D3DXPlaneTransformArray (D3dx9math.h)
Nota
La libreria di utilità D3DX è deprecata. È consigliabile usare invece DirectXMath .
Trasforma una matrice di piani in base a una matrice. I vettori che descrivono ogni piano devono essere normalizzati.
Sintassi
D3DXPLANE* D3DXPlaneTransformArray(
_Inout_ D3DXPLANE *pOut,
_Out_ UINT OutStride,
_In_ const D3DXPLANE *pP,
_In_ UINT PStride,
_In_ const D3DXMATRIX *pM,
_In_ UINT n
);
Parametri
-
pOut [in, out]
-
Tipo: D3DXPLANE*
Puntatore alla struttura D3DXPLANE che contiene il piano trasformato risultante. Vedere Esempio.
-
OutStride [out]
-
Tipo: UINT
Lo stride di ogni piano trasformato.
-
pP [in]
-
Tipo: const D3DXPLANE*
Puntatore alla struttura D3DXPLANE di input, che contiene la matrice di piani da trasformare. Il vettore (a,b,c) che descrive il piano deve essere normalizzato prima che venga chiamata questa funzione. Vedere Esempio.
-
PStride [in]
-
Tipo: UINT
Lo stride di ogni piano non trasformato.
-
pM [in]
-
Tipo: const D3DXMATRIX*
Puntatore alla struttura D3DXMATRIX di origine, che contiene il trasposto inverso dei valori di trasformazione.
-
n [in]
-
Tipo: UINT
Numero di piani da trasformare.
Valore restituito
Tipo: D3DXPLANE*
Puntatore a una struttura D3DXPLANE che rappresenta il piano trasformato. Questo è lo stesso valore restituito nel parametro pOut in modo che questa funzione possa essere usata come parametro per un'altra funzione.
Commenti
In questo esempio viene trasformato un piano applicando una scala non uniforme.
#define ARRAYSIZE 4
D3DXPLANE planeNew[ARRAYSIZE];
D3DXPLANE plane[ARRAYSIZE];
for(int i = 0; i < ARRAYSIZE; i++)
{
plane = D3DXPLANE( 0.0f, 1.0f, 1.0f, 0.0f );
D3DXPlaneNormalize( &plane[i], &plane[i] );
}
D3DXMATRIX matrix;
D3DXMatrixScaling( &matrix, 1.0f, 2.0f, 3.0f );
D3DXMatrixInverse( &matrix, NULL, &matrix );
D3DXMatrixTranspose( &matrix, &matrix );
D3DXPlaneTransformArray( &planeNew, sizeof (D3DXPLANE), &plane,
sizeof (D3DXPLANE), &matrix, ARRAYSIZE );
Un piano è descritto da ax + by + cz + dw = 0. Il primo piano viene creato con (a,b,c,d) = (0,1,1,0), che è un piano descritto da y + z = 0. Dopo il ridimensionamento, il nuovo piano contiene (a,b,c,d) = (0, 0,353f, 0,235f, 0), che mostra il nuovo piano da descrivere da 0,353y + 0,235z = 0.
Il parametro pM contiene il trasposto inverso della matrice di trasformazione. Il trasposto inverso è richiesto da questo metodo in modo che anche il vettore normale del piano trasformato possa essere trasformato correttamente.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche