Поделиться через


Функция D3DXIntersectSubset

Пересекает указанный луч с заданным подмножеством сетки. Эта функция аналогична функции D3DXIntersect.

Синтаксис

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
);

Параметры

pMesh [in]

Тип: LPD3DXBASEMESH

Указатель на интерфейс ID3DXBaseMesh , представляющий тестируемую сетку. Сетка должна быть отсортирована по атрибутам.

AttribId [in]

Тип: DWORD

Идентификатор атрибута подмножества для пересечения.

pRayPos [in]

Тип: const D3DXVECTOR3*

Указатель на структуру D3DXVECTOR3 , указывающую точку начала луча.

pRayDir [in]

Тип: const D3DXVECTOR3*

Указатель на структуру D3DXVECTOR3 , указывающую направление луча.

pHit [out]

Тип: BOOL*

Указатель на логический объект. Если луч пересекается с треугольной грани сетки, это значение будет иметь значение TRUE. В противном случае это значение будет равно FALSE.

pFaceIndex [out]

Тип: DWORD*

Указатель на индексное значение лица, ближайшего к источнику луча, если pHit имеет значение TRUE.

pU [out]

Тип: FLOAT*

Указатель на барицентрическую координату попадания, U.

pV [out]

Тип: FLOAT*

Указатель на барицентрическую координату попадания, V.

pDist [out]

Тип: FLOAT*

Указатель на расстояние параметра пересечения лучей.

ppAllHits [out]

Тип: LPD3DXBUFFER*

Массив структур D3DXINTERSECTINFO , представляющих все попадания, а не только ближайшие.

pCountOfHits [out]

Тип: DWORD*

Количество элементов в массиве, возвращаемых из ppAllHits.

Возвращаемое значение

Тип: HRESULT

Если функция выполняется успешно, возвращаемое значение будет D3D_OK. Если функция завершается сбоем, возвращаемое значение может быть следующим: E_OUTOFMEMORY.

Комментарии

Функция D3DXIntersectSubset позволяет понять точки в треугольнике и вокруг нее независимо от того, где он находится. Эта функция возвращает результирующую точку, используя следующее уравнение: V1 + U(V2 – V1) + V(V3 – V1).

Любая точка плоскости V1V2V3 может быть представлена барицентрической координатой (U,V). Параметр U определяет, сколько V2 взвешивается в результате, а параметр V — сколько V3 взвешивается в результат. Наконец, значение [1 - (U + V)] определяет, сколько V1 взвешивается в результат.

Барицентрические координаты являются формой общих координат. В этом контексте использование барицентрических координат представляет собой изменение в системах координат. То, что верно для декартовых координат, имеет значение true для барицентрических координат.

Барицентрические координаты определяют точку внутри треугольника с точки зрения вершин треугольника. Более подробное описание барицентрических координат см. в описании барицентрических координат Mathworld.

Требования

Требование Значение
Заголовок
D3DX9Mesh.h
Библиотека
D3dx9.lib

См. также раздел

Функции сетки