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 坐标说明。
要求
要求 | 值 |
---|---|
标头 |
|
库 |
|
另请参阅