D3DXVec3BaryCentric 函数 (D3dx9math.h)

注意

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

使用指定的 3D 向量以大中心坐标返回一个点。

语法

D3DXVECTOR3* D3DXVec3BaryCentric(
  _Out_       D3DXVECTOR3 *pOut,
  _In_  const D3DXVECTOR3 *pV1,
  _In_  const D3DXVECTOR3 *pV2,
  _In_  const D3DXVECTOR3 *pV3,
  _In_        FLOAT       f,
  _In_        FLOAT       g
);

参数

pOut [out]

类型: D3DXVECTOR3*

指向操作结果的 D3DXVECTOR3 结构的指针。

pV1 [in]

类型: const D3DXVECTOR3*

指向源 D3DXVECTOR3 结构的指针。

pV2 [in]

类型: const D3DXVECTOR3*

指向源 D3DXVECTOR3 结构的指针。

pV3 [in]

类型: const D3DXVECTOR3*

指向源 D3DXVECTOR3 结构的指针。

f [in]

类型: FLOAT

加权系数。 请参阅“备注”。

g [in]

类型: FLOAT

加权系数。 请参阅“备注”。

返回值

类型: D3DXVECTOR3*

指向以大中心坐标表示的 D3DXVECTOR3 结构的指针。

备注

D3DXVec3BaryCentric 函数提供了一种了解三角形中和周围点的方法,与三角形的实际位置无关。 此函数使用以下公式返回结果点:V1 + f (V2-V1) + g (V3-V1) 。

平面 V1V2V3 中的任何点都可以由大中心坐标 (f,g) 表示。参数 f 控制 V2 在结果中加权的量,参数 g 控制 V3 在结果中的加权量。 最后,1-f-g 控制 V1 在结果中的权重。

请注意以下关系。

  • 如果 (f>=0 &、 & g>=0 &、 & 1-f-g>=0) ,则点位于三角形 V1V2V3 内。
  • 如果 (f==0 &、 & g>=0 &、 & 1-f-g>=0) ,则点位于行 V1V3 上。
  • 如果 (f>=0 &, & g==0 &, & 1-f-g>=0) ,则点位于 V1V2 行上。
  • 如果 (f>=0 &, & g>=0 &, & 1-f-g==0) ,则点位于行 V2V3 上。

大中心坐标是一般坐标的一种形式。 在此上下文中,使用 Barycentric 坐标表示坐标系的变化。 对于笛卡尔坐标,什么是正确的,对于大中心坐标则为 true。

此函数的返回值与 pOut 参数中返回的值相同。 这样, D3DXVec3BaryCentric 函数就可用作另一个函数的参数。

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

要求

要求
标头
D3dx9math.h

D3dx9.lib

另请参阅

数学函数