D3DXPlaneTransform 函数 (D3dx9math.h)

注意

D3DX 实用工具库已弃用。 建议改用 DirectXMath

按矩阵转换平面。 输入矩阵是实际转换的反转置。

语法

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

parameters

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 + 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