Funzione D3DXPlaneTransformArray (D3DX10Math.h)

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,
  _In_          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 [ Pollici]

Tipo: UINT

Passo di ogni piano trasformato.

pP [ Pollici]

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 [ Pollici]

Tipo: UINT

Stride di ogni piano non trasformato.

pM [ Pollici]

Tipo: const D3DXMATRIX *

Puntatore alla struttura D3DXMATRIX di origine, che contiene il traspose inverso dei valori della trasformazione.

n [ in]

Tipo: UINT

Numero di piani da trasformare.

Valore restituito

Tipo: D3DXPLANE*

Puntatore a una struttura D3DXPLANE, che rappresenta il piano trasformato. Si tratta dello stesso valore restituito nel parametro pOut in modo che questa funzione possa essere usata come parametro per un'altra funzione.

Commenti

Questo esempio trasforma 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), ovvero 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 descritto da 0,353y + 0,235z = 0.

Il parametro pM contiene il traspose inverso della matrice di trasformazione. La trasposizione inversa è richiesta da questo metodo in modo che anche il vettore normale del piano trasformato possa essere trasformato correttamente.

Requisiti

Requisito Valore
Intestazione
D3DX10Math.h
Libreria
D3DX10.lib

Vedi anche

Funzioni matematiche