D3DXIntersectTri 函数 (D3DX9Mesh.h)

计算光线和三角形的交集。

语法

BOOL D3DXIntersectTri(
  _In_  const D3DXVECTOR3 *p0,
  _In_  const D3DXVECTOR3 *p1,
  _In_  const D3DXVECTOR3 *p2,
  _In_  const D3DXVECTOR3 *pRayPos,
  _In_  const D3DXVECTOR3 *pRayDir,
  _Out_       FLOAT       *pU,
  _Out_       FLOAT       *pV,
  _Out_       FLOAT       *pDist
);

参数

p0 [in]

类型: const D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,描述第一个三角形顶点位置。

p1 [in]

类型: const D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,描述第二个三角形顶点位置。

p2 [in]

类型: const D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,描述第三个三角形顶点位置。

pRayPos [in]

类型: const D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,指定光线开始的点。

pRayDir [in]

类型: const D3DXVECTOR3*

指向 D3DXVECTOR3 结构的指针,指定光线的方向。

pU [out]

类型: FLOAT*

Barycentric 命中坐标,U.

pV [out]

类型: FLOAT*

重中心命中坐标,V.

pDist [out]

类型: FLOAT*

光线交集参数距离。

返回值

类型: BOOL

如果光线与三角形的区域相交,则返回 TRUE 。 否则,返回 FALSE

备注

D3DXIntersect 函数提供了一种独立于三角形实际位置的三角形及其周围点的了解方法。 此函数使用以下公式返回结果点:V1 + U (V2 - V1) + V (V3 - V1) 。

平面 V1V2V3 中的任何点都可以由 (U、V) 的偏心坐标表示。 参数 U 控制 V2 在结果中加权的量,参数 V 控制 V3 在结果中加权的量。 最后,值 [1 - (U + V) ] 控制 V1 在结果中的权重。

Barycentric 坐标是一种通用坐标形式。 在此上下文中,使用大中心坐标表示坐标系的变化。 对于大中心坐标,笛卡尔坐标为 true 的内容为 true。

大中心坐标根据三角形的顶点定义三角形内的点。 有关 Barycentric 坐标的更深入说明,请参阅 Mathworld 的 Barycentric 坐标说明

要求

要求
标头
D3DX9Mesh.h

D3dx9.lib

另请参阅

网格函数