次の方法で共有


D3DXPlaneTransform 関数 (D3DX10Math.h)

注意

D3DX10 ユーティリティ ライブラリは非推奨です。 代わりに DirectXMath を使用することをお勧めします。

行列によって平面を変換します。 入力行列は、実際の変換の逆移調です。

構文

D3DXPLANE* D3DXPlaneTransform(
  _Inout_       D3DXPLANE  *pOut,
  _In_    const D3DXPLANE  *pP,
  _In_    const D3DXMATRIX *pM
);

パラメーター

pOut [in, out]

種類: D3DXPLANE*

変換された平面を含む D3DXPLANE へのポインター。 例を参照してください。

pP [in]

型: const D3DXPLANE*

変換される平面を含む入力 D3DXPLANE 構造体へのポインター。 平面を記述するベクトル (a,b,c) は、この関数が呼び出される前に正規化する必要があります。 例を参照してください。

pM [in]

型: const D3DXMATRIX*

変換値を含むソース D3DXMATRIX 構造体へのポインター。 この行列には、変換値の逆移調が含まれている必要があります。

戻り値

種類: D3DXPLANE*

変換された平面を表す 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 + + 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 には、変換行列の逆転置が含まれています。 変換された平面の法線ベクトルも正しく変換できるように、このメソッドでは逆移調が必要です。

要件

要件
ヘッダー
D3DX10Math.h
ライブラリ
D3DX10.lib

関連項目

数値演算関数