Função D3DXPlaneTransformArray (D3dx9math.h)
Observação
A biblioteca de utilitários D3DX foi preterida. Em vez disso, recomendamos que você use DirectXMath .
Transforma uma matriz de planos por uma matriz. Os vetores que descrevem cada plano devem ser normalizados.
Sintaxe
D3DXPLANE* D3DXPlaneTransformArray(
_Inout_ D3DXPLANE *pOut,
_Out_ UINT OutStride,
_In_ const D3DXPLANE *pP,
_In_ UINT PStride,
_In_ const D3DXMATRIX *pM,
_In_ UINT n
);
Parâmetros
-
pOut [in, out]
-
Tipo: D3DXPLANE*
Ponteiro para a estrutura D3DXPLANE que contém o plano transformado resultante. Consulte Exemplo.
-
OutStride [out]
-
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. Consulte 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 planos a serem transformados.
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,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. O transpose inverso é exigido por esse método para que o vetor normal do plano transformado também possa ser transformado corretamente.
Requisitos
Requisito | Valor |
---|---|
parâmetro |
|
Biblioteca |
|
Confira também