D3DXVec2Hermite-Funktion (D3dx9math.h)
Hinweis
Die D3DX-Hilfsprogrammbibliothek ist veraltet. Es wird empfohlen, stattdessen DirectXMath zu verwenden.
Führt eine Hermite-Spline-Interpolation unter Verwendung der angegebenen 2D-Vektoren aus.
Syntax
D3DXVECTOR2* D3DXVec2Hermite(
_Inout_ D3DXVECTOR2 *pOut,
_In_ const D3DXVECTOR2 *pV1,
_In_ const D3DXVECTOR2 *pT1,
_In_ const D3DXVECTOR2 *pV2,
_In_ const D3DXVECTOR2 *pT2,
_In_ FLOAT s
);
Parameter
-
pOut [ein, aus]
-
Typ: D3DXVECTOR2*
Zeiger auf die D3DXVECTOR2-Struktur , die das Ergebnis des Vorgangs ist.
-
pV1 [in]
-
Typ: const D3DXVECTOR2*
Zeiger auf eine D3DXVECTOR2-Quellstruktur , einen Positionsvektor.
-
pT1 [in]
-
Typ: const D3DXVECTOR2*
Zeiger auf eine D3DXVECTOR2-Quellstruktur , einen Tangentenvektor.
-
pV2 [in]
-
Typ: const D3DXVECTOR2*
Zeiger auf eine D3DXVECTOR2-Quellstruktur , einen Positionsvektor.
-
pT2 [in]
-
Typ: const D3DXVECTOR2*
Zeiger auf eine D3DXVECTOR2-Quellstruktur , einen Tangentenvektor.
-
s [in]
-
Typ: FLOAT
Gewichtungsfaktor. Siehe Hinweise.
Rückgabewert
Typ: D3DXVECTOR2*
Zeiger auf eine D3DXVECTOR2-Struktur , die das Ergebnis der Hermite-Spline-Interpolation ist.
Bemerkungen
Die D3DXVec2Hermite-Funktion interpoliert von (positionA, tangentA) zu (positionB, tangentB) mit Hermite spline interpolation.
Die Spline-Interpolation ist eine Generalisierung des Ease-In-, Ease-Out-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 ist 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 - t-1 (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
Diese 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 alle Kontrollpunkte durchläuft. Da die Position und der Tangent explizit an den Enden jedes Segments angegeben werden, ist es einfach, eine fortlaufende C2-Kurve zu erstellen, solange Sie sicherstellen, dass Startposition und Tangent 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 D3DXVec2Hermite-Funktion als Parameter für eine andere Funktion verwendet werden.
Anforderungen
Anforderung | Wert |
---|---|
Header |
|
Bibliothek |
|
Siehe auch