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
D3dx9math.h
Libreria
D3dx9.lib

Vedi anche

Funzioni matematiche

D3DXPlaneNormalize

D3DXMatrixRotationX

D3DXMatrixRotationY

D3DXMatrixRotationZ

D3DXMatrixInverse

D3DXMatrixTranspose