Funzione D3DXPlaneTransformArray (D3DX10Math.h)

Nota

La libreria di utilità D3DX10 è 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,
  _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 l'esempio.

OutStride [in]

Tipo: UINT

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 di chiamare questa funzione. Vedere l'esempio.

PStride [in]

Tipo: UINT

Stride di ogni piano non trasformato.

pM [in]

Tipo: const D3DXMATRIX*

Puntatore alla struttura D3DXMATRIX di origine, che contiene la trasposizione inversa 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. Si tratta dello 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 + ctrl + 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 da descrivere da 0,353y + 0,235z = 0.

Il parametro pM contiene la trasposizione inversa 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
D3DX10Math.h
Libreria
D3DX10.lib

Vedi anche

Funzioni matematiche