次の方法で共有


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