Freigeben über


D3DXPlaneTransformArray-Funktion (D3dx9math.h)

Hinweis

Die D3DX-Hilfsprogrammbibliothek ist veraltet. Es wird empfohlen, stattdessen DirectXMath zu verwenden.

Transformiert ein Array von Ebenen durch eine Matrix. Die Vektoren, die jede Ebene beschreiben, müssen normalisiert werden.

Syntax

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

Parameter

pOut [ein, aus]

Typ: D3DXPLANE*

Zeiger auf die D3DXPLANE-Struktur , die die resultierende transformierte Ebene enthält. Siehe Beispiel.

OutStride [out]

Typ: UINT

Der Schritt jeder transformierten Ebene.

pP [in]

Typ: const D3DXPLANE*

Zeiger auf die Eingabestruktur D3DXPLANE , die das Array der zu transformierenden Ebenen enthält. Der Vektor (a,b,c), der die Ebene beschreibt, muss normalisiert werden, bevor diese Funktion aufgerufen wird. Siehe Beispiel.

PStride [in]

Typ: UINT

Der Schritt jeder nicht transformierten Ebene.

pM [in]

Typ: const D3DXMATRIX*

Zeiger auf die Quellstruktur D3DXMATRIX , die die umgekehrte Transponierung der Transformationswerte enthält.

n [in]

Typ: UINT

Die Anzahl der zu transformierenden Ebenen.

Rückgabewert

Typ: D3DXPLANE*

Zeiger auf eine D3DXPLANE-Struktur , die die transformierte Ebene darstellt. Dies ist der gleiche Wert, der im pOut-Parameter zurückgegeben wird, sodass diese Funktion als Parameter für eine andere Funktion verwendet werden kann.

Bemerkungen

In diesem Beispiel wird eine Ebene transformiert, indem eine nicht einheitliche Skalierung angewendet wird.

#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 );

Eine Ebene wird durch ax + by + cz + dw = 0 beschrieben. Die erste Ebene wird mit (a,b,c,d) = (0,1,1,0) erstellt, wobei es sich um eine Ebene handelt, die durch y + z = 0 beschrieben wird. Nach der Skalierung enthält die neue Ebene (a,b,c,d) = (0, 0,353f, 0,235f, 0), was die neue Ebene anzeigt, die mit 0,353y + 0,235z = 0 beschrieben werden soll.

Der Parameter pM enthält die umgekehrte Transponierung der Transformationsmatrix. Die umgekehrte Transponierung ist für diese Methode erforderlich, damit auch der normale Vektor der transformierten Ebene korrekt transformiert werden kann.

Anforderungen

Anforderung Wert
Header
D3dx9math.h
Bibliothek
D3dx9.lib

Siehe auch

Mathematische Funktionen

D3DXPlaneNormalize

D3DXMatrixRotationX

D3DXMatrixRotationY

D3DXMatrixRotationZ

D3DXMatrixInverse

D3DXMatrixTranspose