Função D3DXPlaneTransformArray (D3DX10Math.h)

Observação

A biblioteca de utilitários D3DX10 foi preterida. Recomendamos que você use DirectXMath em vez disso.

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 [dentro, fora]

Tipo: D3DXPLANE*

Ponteiro para a estrutura D3DXPLANE que contém o plano transformado resultante. Veja Exemplo.

OutStride [in]

Tipo: UINT

O passo de cada plano transformado.

pP [in]

Tipo: const D3DXPLANE*

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

PStride [in]

Tipo: UINT

O passo de cada plano não transformado.

pM [in]

Tipo: const D3DXMATRIX*

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

n [in]

Tipo: UINT

O número de aviões a serem transformados.

Retornar valor

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 + por + 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,353f, 0,235f, 0), que mostra o novo plano a ser descrito por 0,353y + 0,235z = 0.

O parâmetro pM contém a transposição inversa da matriz de transformação. A transposição 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

Confira também

Funções matemáticas