D3DXVec3Hermite-Funktion (D3DX10Math.h)
Hinweis
Die D3DX10-Hilfsprogrammbibliothek ist veraltet. Es wird empfohlen, stattdessen DirectXMath zu verwenden.
Führt eine Hermite-Splineinterpolation unter Verwendung der angegebenen 3D-Vektoren aus.
Syntax
D3DXVECTOR3* D3DXVec3Hermite(
_Inout_ D3DXVECTOR3 *pOut,
_In_ const D3DXVECTOR3 *pV1,
_In_ const D3DXVECTOR3 *pT1,
_In_ const D3DXVECTOR3 *pV2,
_In_ const D3DXVECTOR3 *pT2,
_In_ FLOAT s
);
Parameter
-
pOut [in, out]
-
Typ: D3DXVECTOR3*
Zeiger auf den D3DXVECTOR3 , der das Ergebnis des Vorgangs ist.
-
pV1 [in]
-
Typ: const D3DXVECTOR3*
Zeiger auf eine D3DXVECTOR3-Quellstruktur, einen Positionsvektor.
-
pT1 [in]
-
Typ: const D3DXVECTOR3*
Zeiger auf eine D3DXVECTOR3-Quellstruktur, einen Tangensvektor.
-
pV2 [in]
-
Typ: const D3DXVECTOR3*
Zeiger auf eine D3DXVECTOR3-Quellstruktur, einen Positionsvektor.
-
pT2 [in]
-
Typ: const D3DXVECTOR3*
Zeiger auf eine D3DXVECTOR3-Quellstruktur, einen Tangensvektor.
-
s [in]
-
Typ: FLOAT
Gewichtungsfaktor. Siehe Hinweise.
Rückgabewert
Typ: D3DXVECTOR3*
Zeiger auf eine D3DXVECTOR3-Struktur, die das Ergebnis der Splineinterpolation von Hermite ist.
Bemerkungen
Die Funktion D3DXVec3Hermite interpoliert von (positionA, tangentA) zu (positionB, tangentB) unter Verwendung der Splineinterpolation hermite.
Die Spline-Interpolation ist eine Generalisierung der Ease-In-Spline. Die Rampe ist eine Funktion von Q(s) mit den folgenden Eigenschaften.
Q(s) = As¹ + Bs² + Cs + D (und daher Q's = 3As² + 2Bs + C)
a) Q(0) = v1, also Q'(0) = t1
b) Q(1) = v2, also Q'(1) = t2
v1 ist der Inhalt von pV1, v2 im Inhalt von pV2, t1 ist der Inhalt von pT1 und t2 der Inhalt von pT2.
Diese Eigenschaften werden verwendet, um für A, B, C, D zu lösen.
D = v1 (from a)
C = t1 (from a)
3A + 2B = t2 - t1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and D)
Schließen Sie die Lösungen für A, B, C und D an, um Q(s) zu generieren.
A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1
Dies ergibt:
Q(s) = (2v1 - 2v2 + t2 + t1)s¹ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1
Dies kann wie folgt neu angeordnet werden:
Q(s) = (2s¹ - 3s² + 1)v1 + (-2s¹ + 3s²)v2 + (s¹ - 2s² + s)t1 + (s¹ - s²)t2
Hermite-Splines sind nützlich für die Steuerung der Animation, da die Kurve durch alle Kontrollpunkte verläuft. Da die Position und die Tangens explizit an den Enden jedes Segments angegeben werden, ist es auch einfach, eine kontinuierliche C2-Kurve zu erstellen, solange Sie sicherstellen, dass Startposition und Tangens mit den Endwerten des letzten Segments übereinstimmen.
Der Rückgabewert für diese Funktion ist derselbe Wert, der im pOut-Parameter zurückgegeben wird. Auf diese Weise kann die Funktion D3DXVec3Hermite als Parameter für eine andere Funktion verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für