Função D3DXPlaneTransformArray (D3DX10Math. h)

Transforma uma matriz de planos por uma matriz. Os vetores que descrevem cada plano devem ser normalizados.

Sintaxe

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 [ entrada, saída]

Tipo: D3DXPLANE*

Ponteiro para a estrutura D3DXPLANE que contém o plano transformado resultante. Consulte o exemplo.

Didistância [ no]

Tipo: uint

O stride de cada plano transformado.

PP [ no]

Tipo: const D3DXPLANE *

Ponteiro para a estrutura D3DXPLANE de entrada, que contém a matriz de planos para transformar. O vetor (a, b, c) que descreve o plano deve ser normalizado antes que essa função seja chamada. Consulte o exemplo.

PStride [ no]

Tipo: uint

O stride de cada plano não transformado.

PM [ no]

Tipo: const D3DXMATRIX *

Ponteiro para a estrutura de D3DXMATRIX de origem, que contém a transpoção inversa dos valores de transformação.

n [ em]

Tipo: uint

O número de planos para transformar.

Valor retornado

Tipo: D3DXPLANE*

Ponteiro para uma estrutura D3DXPLANE, representando o plano transformado. Esse é o mesmo valor retornado no parâmetro pOut para que essa função possa ser usada como um parâmetro para outra função.

Comentários

Este exemplo transforma um plano aplicando uma escala não 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 );

Um plano é descrito por ax + by + cz + DW = 0. O primeiro plano é criado com (a, b, c, d) = (0, 1, 1, 0), que é um plano descrito por y + z = 0. Após o dimensionamento, o novo plano contém (a, b, c, d) = (0, 0.353 f, 0.235 f, 0), que mostra o novo plano a ser descrito por 0.353 y + 0.235 z = 0.

O parâmetro pM contém a transpoção inversa da matriz de transformação. A Transpose inversa é exigida por esse método para que o vetor normal do plano transformado também possa ser transformado corretamente.

Requisitos

Requisito Valor
parâmetro
D3DX10Math. h
Biblioteca
D3DX10. lib

Consulte também

Funções matemáticas