Función D3DXPlaneTransformArray (D3DX10Math.h)

Transforma una matriz de planos mediante una matriz. Los vectores que describen cada plano deben normalizarse.

Sintaxis

D3DXPLANE* D3DXPlaneTransformArray(
  _Inout_       D3DXPLANE  *pOut,
  _In_          UINT       OutStride,
  _In_    const D3DXPLANE  *pP,
  _In_          UINT       PStride,
  _In_    const D3DXMATRIX *pM,
  _In_          UINT       n
);

Parámetros

pOut [ in, out]

Tipo: D3DXPLANE*

Puntero a la estructura D3DXPLANE que contiene el plano transformado resultante. Vea Ejemplo.

OutStride [ En]

Tipo: UINT

Paso de cada plano transformado.

pP [ En]

Tipo: const D3DXPLANE *

Puntero a la estructura D3DXPLANE de entrada, que contiene la matriz de planos que se va a transformar. El vector (a, b, c) que describe el plano debe normalizarse antes de llamar a esta función. Vea Ejemplo.

PStride [ En]

Tipo: UINT

El paso de cada plano no transformado.

pM [ En]

Tipo: const D3DXMATRIX *

Puntero a la estructura D3DXMATRIX de origen, que contiene la transpuesta inversa de los valores de transformación.

n [ en]

Tipo: UINT

Número de planos que se transformarán.

Valor devuelto

Tipo: D3DXPLANE*

Puntero a una estructura D3DXPLANE, que representa el plano transformado. Este es el mismo valor devuelto en el parámetro pOut para que esta función se pueda usar como parámetro para otra función.

Observaciones

En este ejemplo se transforma un plano aplicando una escala no 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 plano se describe por ax + by + dw + dw = 0. El primer plano se crea con (a,b,c,d) = (0,1,1,0), que es un plano descrito por y + z = 0. Después del escalado, el nuevo plano contiene (a,b,c,d) = (0, 0,353f, 0,235f, 0), que muestra el nuevo plano descrito por 0,353y + 0,235z = 0.

El parámetro pM contiene la transpuesta inversa de la matriz de transformación. Este método requiere la transponer inversa para que el vector normal del plano transformado también se pueda transformar correctamente.

Requisitos

Requisito Value
Encabezado
D3DX10Math.h
Biblioteca
D3DX10.lib

Consulte también

Funciones matemáticas