D3DXPlaneTransform
行列で平面をトランスフォームします。入力行列は、実際のトランスフォームの逆転置です。
D3DXPLANE *
D3DXPlaneTransform(
D3DXPLANE * pOut,
CONST D3DXPLANE * pP,
CONST D3DXMATRIX * pM
);
パラメータ
- pOut
結果としてトランスフォームされた平面を含む D3DXPLANE 構造体へのポインターです。例を参照してください。 - pP
トランスフォームされる平面を含む、入力の D3DXPLANE 構造体へのポインターです。平面を示すベクトル (a,b,c) は、この関数を呼び出す前に正規化する必要があります。例を参照してください。 - pM
トランスフオーム値を含む D3DXMATRIX 構造体へのポインター。この行列には、トランスフォーム値の逆転置を含む必要があります。
戻り値
トランスフォームされた平面を示す D3DXPLANE 構造体へのポインターです。これは、pOut パラメーターで返される値と同じです。したがって、この関数は別の関数のパラメーターとしても使用できます。
解説
例
この例では、均一でないスケールを適用して平面をトランスフォームします。
D3DXPLANE planeNew; D3DXPLANE plane(0,1,1,0); D3DXPlaneNormalize(&plane, &plane); D3DXMATRIX matrix; D3DXMatrixScaling(&matrix, 1.0f,2.0f,3.0f); D3DXMatrixInverse(&matrix, NULL, &matrix); D3DXMatrixTranspose(&matrix, &matrix); D3DXPlaneTransform(&planeNew, &plane, &matrix);
平面は、ax + by + cz + dw = 0 で表されます。最初の平面は (a,b,c,d) = (0,1,1,0) で作成されます。この平面は、y + z = 0 で表されます。スケーリング後、新しい平面には (a,b,c,d) = (0, 0.353f, 0.235f, 0) が含まれます。これは、0.353y + 0.235z = 0 で表される新しい平面を示します。
パラメーター pM には、トランスフォーム行列の逆転置が含まれます。逆転置は、トランスフォームされた平面の法線ベクトルも正しくトランスフォームできるように、このメソッドで必要となります。
要件
ヘッダー: D3dx9math.h 宣言
ライブラリ: D3dx9.lib 内容
関連項目
D3DXPlaneNormalize, D3DXMatrixRotationX, D3DXMatrixRotationY, D3DXMatrixRotationZ, D3DXMatrixInverse, D3DXMatrixTranspose