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 内容