D3DXPlaneTransformArray, fonction (D3DX10Math.h)
Notes
La bibliothèque utilitaire D3DX10 est déconseillée. Nous vous recommandons d’utiliser DirectXMath à la place.
Transforme un tableau de plans par une matrice. Les vecteurs qui décrivent chaque plan doivent être normalisés.
Syntaxe
D3DXPLANE* D3DXPlaneTransformArray(
_Inout_ D3DXPLANE *pOut,
_In_ UINT OutStride,
_In_ const D3DXPLANE *pP,
_In_ UINT PStride,
_In_ const D3DXMATRIX *pM,
_In_ UINT n
);
Paramètres
-
pOut [in, out]
-
Type : D3DXPLANE*
Pointeur vers la structure D3DXPLANE qui contient le plan transformé résultant. Voir l’exemple.
-
OutStride [in]
-
Type : UINT
La foulée de chaque plan transformé.
-
pP [in]
-
Type : const D3DXPLANE*
Pointeur vers la structure D3DXPLANE d’entrée, qui contient le tableau de plans à transformer. Le vecteur (a, b, c) qui décrit le plan doit être normalisé avant que cette fonction soit appelée. Voir l’exemple.
-
PStride [in]
-
Type : UINT
La foulée de chaque plan non transformé.
-
pM [in]
-
Type : const D3DXMATRIX*
Pointeur vers la structure D3DXMATRIX source, qui contient la transpose inverse des valeurs de transformation.
-
n [in]
-
Type : UINT
Nombre de plans à transformer.
Valeur retournée
Type : D3DXPLANE*
Pointeur vers une structure D3DXPLANE, représentant le plan transformé. Il s’agit de la même valeur retournée dans le paramètre pOut afin que cette fonction puisse être utilisée comme paramètre pour une autre fonction.
Notes
Cet exemple montre comment transformer un plan en appliquant une échelle 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 plan est décrit par ax + by + cz + dw = 0. Le premier plan est créé avec (a,b,c,d) = (0,1,1,0), qui est un plan décrit par y + z = 0. Après la mise à l’échelle, le nouveau plan contient (a,b,c,d) = (0, 0,353f, 0,235f, 0), ce qui montre le nouveau plan à décrire par 0,353y + 0,235z = 0.
Le paramètre pM, contient la transpose inverse de la matrice de transformation. La transpose inverse est requise par cette méthode afin que le vecteur normal du plan transformé puisse également être correctement transformé.
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Voir aussi