Freigeben über


D3DXIntersectSubset-Funktion

Überschneidet den angegebenen Strahl mit der angegebenen Gitterteilmenge. Dies bietet ähnliche Funktionen wie D3DXIntersect.

Syntax

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

Parameter

pMesh [in]

Typ: LPD3DXBASEMESH

Zeiger auf eine ID3DXBaseMesh-Schnittstelle , die das zu testende Gitter darstellt. Das Gitter muss mit einem Attribut sortiert werden.

AttribId [in]

Typ: DWORD

Attributbezeichner der Teilmenge, mit der sich überschneiden soll.

pRayPos [in]

Typ: const D3DXVECTOR3*

Zeiger auf eine D3DXVECTOR3-Struktur , der den Punkt angibt, an dem der Strahl beginnt.

pRayDir [in]

Typ: const D3DXVECTOR3*

Zeiger auf eine D3DXVECTOR3-Struktur , die die Richtung des Strahls angibt.

pHit [out]

Typ: BOOL*

Zeiger auf eine BOOL. Wenn der Strahl eine dreieckige Seite im Gitter überschneidet, wird dieser Wert auf TRUE festgelegt. Andernfalls wird dieser Wert auf FALSE festgelegt.

pFaceIndex [out]

Typ: DWORD*

Zeiger auf einen Indexwert des Gesichts, der dem Strahlenursprung am nächsten ist, wenn pHit TRUE ist.

pU [out]

Typ: FLOAT*

Zeiger auf eine baryzentrische Trefferkoordinate, U.

pV [out]

Typ: FLOAT*

Zeiger auf eine baryzentrische Trefferkoordinate, V.

pDist [out]

Typ: FLOAT*

Zeiger auf den Abstand eines Strahlschnittparameters.

ppAllHits [out]

Typ: LPD3DXBUFFER*

Array von D3DXINTERSECTINFO-Strukturen , die alle Treffer darstellen, nicht nur die nächsten Treffer.

pCountOfHits [out]

Typ: DWORD*

Anzahl der Elemente im Array, die von ppAllHits zurückgegeben werden.

Rückgabewert

Typ: HRESULT

Wenn die Funktion erfolgreich ist, wird der Rückgabewert D3D_OK. Wenn die Funktion fehlschlägt, kann der Rückgabewert der folgende Wert sein: E_OUTOFMEMORY.

Bemerkungen

Die D3DXIntersectSubset-Funktion bietet eine Möglichkeit, Punkte in und um ein Dreieck zu verstehen, unabhängig davon, wo sich das Dreieck tatsächlich befindet. Diese Funktion gibt den resultierenden Punkt mithilfe der folgenden Gleichung zurück: V1 + U(V2 - V1) + V(V3 - V1).

Jeder Punkt auf der Ebene V1V2V3 kann durch die baryzentrische Koordinate (U,V) dargestellt werden. Der Parameter U steuert, wie viel V2 in das Ergebnis gewichtet wird, und der Parameter V steuert, wie viel V3 in das Ergebnis gewichtet wird. Schließlich steuert der Wert von [1 - (U + V)], wie viel V1 in das Ergebnis gewichtet wird.

Baryzentrische Koordinaten sind eine Form von allgemeinen Koordinaten. In diesem Kontext stellt die Verwendung von baryzentrischen Koordinaten eine Änderung der Koordinatensysteme dar. Was für kartesische Koordinaten gilt, gilt für baryzentrische Koordinaten.

Baryzentrische Koordinaten definieren einen Punkt innerhalb eines Dreiecks in Bezug auf die Scheitelpunkte des Dreiecks. Eine ausführlichere Beschreibung der baryzentrischen Koordinaten finden Sie unter Mathworlds Baryzentrische Koordinatenbeschreibung.

Anforderungen

Anforderung Wert
Header
D3DX9Mesh.h
Bibliothek
D3dx9.lib

Siehe auch

Gitterfunktionen