D3DXIntersectTri function (D3DX9Mesh.h)

Computes the intersection of a ray and a triangle.

Syntax

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

Parameters

p0 [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, describing the first triangle vertex position.

p1 [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, describing the second triangle vertex position.

p2 [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, describing the third triangle vertex position.

pRayPos [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, specifying the point where the ray begins.

pRayDir [in]

Type: const D3DXVECTOR3*

Pointer to a D3DXVECTOR3 structure, specifying the direction of the ray.

pU [out]

Type: FLOAT*

Barycentric hit coordinates, U.

pV [out]

Type: FLOAT*

Barycentric hit coordinates, V.

pDist [out]

Type: FLOAT*

Ray-intersection parameter distance.

Return value

Type: BOOL

Returns TRUE if the ray intersects the area of the triangle. Otherwise, returns FALSE.

Remarks

The D3DXIntersect function provides a way to understand points in and around a triangle, independent of where the triangle is actually located. This function returns the resulting point by using the following equation: V1 + U(V2 - V1) + V(V3 - V1).

Any point in the plane V1V2V3 can be represented by the barycentric coordinate (U,V). The parameter U controls how much V2 gets weighted into the result, and the parameter V controls how much V3 gets weighted into the result. Lastly, the value of [1 - (U + V)] controls how much V1 gets weighted into the result.

Barycentric coordinates are a form of general coordinates. In this context, using barycentric coordinates represents a change in coordinate systems. What holds true for Cartesian coordinates holds true for barycentric coordinates.

Barycentric coordinates define a point inside a triangle in terms of the triangle's vertices. For a more in-depth description of barycentric coordinates, see Mathworld's Barycentric Coordinates Description.

Requirements

Requirement Value
Header
D3DX9Mesh.h
Library
D3dx9.lib

See also

Mesh Functions