Compartilhar via


Função D3DXIntersectSubset

Intersecciona o raio especificado com o subconjunto de malha fornecido. Isso fornece funcionalidade semelhante à D3DXIntersect.

Sintaxe

HRESULT D3DXIntersectSubset(
  _In_        LPD3DXBASEMESH pMesh,
  _In_        DWORD          AttribId,
  _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. A malha deve ser classificada por atributo.

AttribId [in]

Tipo: DWORD

Identificador de atributo do subconjunto com o qual interseccionar.

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*

Matriz de estruturas D3DXINTERSECTINFO , representando todas as ocorrências, não apenas as ocorrências mais próximas.

pCountOfHits [out]

Tipo: DWORD*

Número de elementos na matriz retornados de 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 o seguinte valor: E_OUTOFMEMORY.

Comentários

A função D3DXIntersectSubset 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