D3DXPlaneTransformArray 函数 (D3DX10Math.h)

注意

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

按矩阵转换平面数组。 描述每个平面的向量必须规范化。

语法

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

参数

pOut [in, out]

类型: D3DXPLANE*

指向包含生成的转换平面的 D3DXPLANE 结构的指针。 请参阅示例。

OutStride [in]

类型: UINT

每个转换平面的步幅。

pP [in]

类型: const D3DXPLANE*

指向输入 D3DXPLANE 结构的指针,该结构包含要转换的平面数组。 在调用此函数之前,必须规范化描述平面的向量 (b、c) 。 请参阅示例。

PStride [in]

类型: UINT

每个非转换平面的步幅。

pM [in]

类型: const D3DXMATRIX*

指向源 D3DXMATRIX 结构的指针,该结构包含转换值的反向转置。

n [in]

类型: UINT

要转换的平面数。

返回值

类型: D3DXPLANE*

指向表示转换平面的 D3DXPLANE 结构的指针。 这是 pOut 参数中返回的相同值,以便此函数可用作另一个函数的参数。

注解

此示例通过应用非统一刻度来转换一个平面。

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

飞机由 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 包含转换矩阵的反转置。 此方法需要反向转置,以便转换平面的正常向量也可以正确转换。

要求

要求 Value
标头
D3DX10Math.h

D3DX10.lib

另请参阅

数学函数