次の方法で共有


D3DXVec3BaryCentric

指定された 3D ベクトルを使用して、重心座標のポイントを返します。

D3DXVECTOR3 * 
D3DXVec3BaryCentric(
  D3DXVECTOR3 * pOut,
  CONST D3DXVECTOR3 * pV1,
  CONST D3DXVECTOR3 * pV2,
  CONST D3DXVECTOR3 * pV3,
  FLOAT f,
  FLOAT g
);

パラメータ

  • pOut
    処理の結果を表わす D3DXVECTOR3 構造体へのポインター
  • pV1
    演算対象の D3DXVECTOR3 構造体へのポインターです。
  • pV2
    演算対象の D3DXVECTOR3 構造体へのポインターです。
  • pV3
    演算対象の D3DXVECTOR3 構造体へのポインターです。
  • f
    加重係数。「解説」を参照してください。
  • g
    加重係数。「解説」を参照してください。

戻り値

重心座標の 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 の線上にあります。

重心座標は、一般的な座標形式です。したがって、重心座標を使用することは座標系を変更することを意味します。デカルト座標で成り立つ事象は、重心座標でも成り立ちます。

この関数の戻り値は pOut パラメーターに返される値と 同じです。このため、D3DXVec3BaryCentric 関数は他の関数のパラメーターとして使用できます。

重心座標は、三角形の頂点に関して、三角形の内側のポイントを定義します。重心座標の詳細については、Mathworld の「Barycentric Coordinates (重心座標)」の説明を参照してください。

要件

ヘッダー: D3dx9math.h 宣言

ライブラリ: D3dx9.lib 内容