Share via


Função D3DXIntersect

Determina se um raio se cruza com uma malha.

Sintaxe

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

Ponteiro para uma interface ID3DXBaseMesh , representando a malha a ser testada.

pRayPos [in]

Tipo: const D3DXVECTOR3*

Ponteiro para uma estrutura D3DXVECTOR3 , especificando o ponto em que o raio começa.

pRayDir [in]

Tipo: const D3DXVECTOR3*

Ponteiro para uma estrutura D3DXVECTOR3 , especificando a direção do raio.

pHit [out]

Tipo: BOOL*

Ponteiro para um BOOL. Se o raio interseccionar uma face triangular na malha, esse valor será definido como TRUE. Caso contrário, esse valor será definido como FALSE.

pFaceIndex [out]

Tipo: DWORD*

Ponteiro para um valor de índice da face mais próxima da origem do raio, se pHit for TRUE.

pU [out]

Tipo: FLOAT*

Ponteiro para uma coordenada de clique barycentric, U.

pV [out]

Tipo: FLOAT*

Ponteiro para uma coordenada de clique barycentric, V.

pDist [out]

Tipo: FLOAT*

Ponteiro para uma distância de parâmetro de interseção de raios.

ppAllHits [out]

Tipo: LPD3DXBUFFER*

Ponteiro para um objeto ID3DXBuffer , que contém uma matriz de estruturas D3DXINTERSECTINFO .

pCountOfHits [out]

Tipo: DWORD*

Ponteiro para um DWORD que contém o número de entradas na matriz ppAllHits.

Valor retornado

Tipo: HRESULT

Se a função for bem-sucedida, o valor retornado será D3D_OK. Se a função falhar, o valor retornado poderá ser: E_OUTOFMEMORY.

Comentários

A função D3DXIntersect fornece uma maneira de entender pontos dentro e ao redor de um triângulo, independentemente de onde o triângulo está realmente localizado. Essa função retorna o ponto resultante usando a seguinte equação: V1 + U(V2 - V1) + V(V3 - V1).

Qualquer ponto no plano V1V2V3 pode ser representado pela coordenada barycentrica (U,V). O parâmetro U controla a quantidade de V2 ponderada no resultado e o parâmetro V controla a quantidade de V3 ponderada no resultado. Por fim, o valor de [1 - (U + V)] controla a quantidade de V1 ponderada no resultado.

As coordenadas barycentricas são uma forma de coordenadas gerais. Nesse contexto, o uso de coordenadas barycentricas representa uma alteração nos sistemas de coordenadas. O que vale para coordenadas cartesianas é verdadeiro para coordenadas barycentricas.

As coordenadas barycentricas definem um ponto dentro de um triângulo em termos dos vértices do triângulo. Para obter uma descrição mais detalhada das coordenadas barycentricas, confira Descrição das Coordenadas Barycentricas do Mathworld.

Requisitos

Requisito Valor
parâmetro
D3DX9Mesh.h
Biblioteca
D3dx9.lib

Confira também

Funções de malha