次の方法で共有


D3DXIntersectTri

光線と三角形の交点を計算します。

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

パラメータ

  • p0
    最初の三角形の頂点の位置を表す D3DXVECTOR3 構造体へのポインターです。
  • p1
    2 番目の三角形の頂点の位置を表す D3DXVECTOR3 構造体へのポインターです。
  • p2
    3 番目の三角形の頂点の位置を表す D3DXVECTOR3 構造体へのポインターです。
  • pRayPos
    光線の始点を指定する D3DXVECTOR3 構造体へのポインターです。
  • pRayDir
    光線の方向を指定する D3DXVECTOR3 構造体へのポインターです。
  • pU
    重心ヒット座標 U です。
  • pV
    重心ヒット座標 V です。
  • pDist
    光線交差パラメーターの距離です。

戻り値

光線が三角形の領域に当たる場合は TRUE を返します。それ以外の場合は、FALSE を返します。

解説 

D3DXIntersect 関数は、三角形の実際の場所に関係なく、三角形の内部と周囲のポイントを把握するのに役立ちます。この関数では次の式を使用し、結果のポイントを返します。V1 + U(V2-V1) + V(V3-V1)。

プレーン V1V2V3 内の任意のポイントを重心座標 (U,V) で表すことができます。パラメーター U は結果に対する V2 の加重を示し、パラメーター V は結果に対する V3 の加重を示します。また、[1 - (U + V)] の値は結果に対する V1 の加重を示します。

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

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

要件

ヘッダー: D3DX9Mesh.h 宣言

ライブラリ: D3dx9.lib 内容