D3DXIntersect
光線がメッシュに当たるかどうかを判定します。
HRESULT
D3DXIntersect(
LPD3DXBASEMESH pMesh,
CONST D3DXVECTOR3 * pRayPos,
CONST D3DXVECTOR3 * pRayDir,
BOOL * pHit,
DWORD * pFaceIndex,
FLOAT * pU,
FLOAT * pV,
FLOAT * pDist,
LPD3DXBUFFER * ppAllHits,
DWORD * pCountOfHits
);
パラメータ
- pMesh
ID3DXBaseMesh インターフェイスへのポインターです。テストするメッシュを示します。 - pRayPos
光線の始点を指定する D3DXVECTOR3 構造体へのポインターです。 - pRayDir
光線の方向を指定する D3DXVECTOR3 構造体へのポインターです。 - pHit
BOOL へのポインターです。光線がメッシュの三角形の面に当たるとき、この値は TRUE に設定されます。当たらないときは FALSE になります。 - pFaceIndex
面のインデックス値へのポインターです。pHit が TRUE の場合に、光線の始点に最も近い面のインデックス値を指します。 - pU
重心ヒット座標 U へのポインターです。 - pV
重心ヒット座標 V へのポインターです。 - pDist
光線の始点から交点までの距離へのポインターです。 - ppAllHits
ID3DXBuffer オブジェクトへのポインターです。D3DXINTERSECTINFO 構造体の配列が含まれます。 - pCountOfHits
ppAllHits 配列内のエントリの数を含む DWORD へのポインターです。
戻り値
成功すると、D3D_OK を返します。失敗した場合は、次の値を返します。E_OUTOFMEMORY
解説
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 内容