Función D3DXIntersect

Determina si un rayo se interseca con una malla.

Sintaxis

HRESULT D3DXIntersect(
  _In_        LPD3DXBASEMESH pMesh,
  _In_  const D3DXVECTOR3    *pRayPos,
  _In_  const D3DXVECTOR3    *pRayDir,
  _Out_       BOOL           *pHit,
  _Out_       DWORD          *pFaceIndex,
  _Out_       FLOAT          *pU,
  _Out_       FLOAT          *pV,
  _Out_       FLOAT          *pDist,
  _Out_       LPD3DXBUFFER   *ppAllHits,
  _Out_       DWORD          *pCountOfHits
);

Parámetros

pMesh [in]

Tipo: LPD3DXBASEMESH

Puntero a una interfaz ID3DXBaseMesh , que representa la malla que se va a probar.

pRayPos [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 , especificando el punto donde comienza el rayo.

pRayDir [in]

Tipo: const D3DXVECTOR3*

Puntero a una estructura D3DXVECTOR3 , especificando la dirección del rayo.

pHit [out]

Tipo: BOOL*

Puntero a una BOOL. Si el rayo interseca una cara triangular en la malla, este valor se establecerá en TRUE. De lo contrario, este valor se establece en FALSE.

pFaceIndex [out]

Tipo: DWORD*

Puntero a un valor de índice de la cara más cercana al origen del rayo, si pHit es TRUE.

pU [out]

Tipo: FLOAT*

Puntero a una coordenada de acierto barycéntrico, U.

pV [out]

Tipo: FLOAT*

Puntero a una coordenada de acierto barycéntrico, V.

pDist [out]

Tipo: FLOAT*

Puntero a una distancia de parámetro de intersección de rayos.

ppAllHits [out]

Tipo: LPD3DXBUFFER*

Puntero a un objeto ID3DXBuffer , que contiene una matriz de estructuras D3DXINTERSECTINFO .

pCountOfHits [out]

Tipo: DWORD*

Puntero a un DWORD que contiene el número de entradas de la matriz ppAllHits.

Valor devuelto

Tipo: HRESULT

Si la función se realiza correctamente, el valor devuelto se D3D_OK. Si se produce un error en la función, el valor devuelto puede ser: E_OUTOFMEMORY.

Comentarios

La función D3DXIntersect proporciona una manera de comprender los puntos de un triángulo, independientemente de dónde se encuentra realmente el triángulo. Esta función devuelve el punto resultante mediante la siguiente ecuación: V1 + U(V2 - V1) + V(V3 - V1).

Cualquier punto del plano V1V2V3 se puede representar mediante la coordenada barycéntrica (U,V). El parámetro U controla cuánto se pondera V2 en el resultado y el parámetro V controla cuánto se pondera en el resultado. Por último, el valor de [1 - (U + V)] controla cuánto V1 se pondera en el resultado.

Las coordenadas barycéntricas son una forma de coordenadas generales. En este contexto, el uso de coordenadas barycéntricas representa un cambio en los sistemas de coordenadas. Lo que es cierto para las coordenadas cartesianas es true para las coordenadas barícéntricas.

Las coordenadas Barycéntricas definen un punto dentro de un triángulo en términos de los vértices del triángulo. Para obtener una descripción más detallada de las coordenadas barycéntricas, vea Descripción de coordenadas barycéntricas de Mathworld.

Requisitos

Requisito Value
Encabezado
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Consulte también

Funciones de malla