Fonction D3DXVec2Hermite (D3DX10Math.h)
Notes
La bibliothèque utilitaire D3DX10 est déconseillée. Nous vous recommandons d’utiliser DirectXMath à la place.
Effectue une interpolation de spline Hermite à l’aide des vecteurs 2D spécifiés.
Syntaxe
D3DXVECTOR2* D3DXVec2Hermite(
_Inout_ D3DXVECTOR2 *pOut,
_In_ const D3DXVECTOR2 *pV1,
_In_ const D3DXVECTOR2 *pT1,
_In_ const D3DXVECTOR2 *pV2,
_In_ const D3DXVECTOR2 *pT2,
_In_ FLOAT s
);
Paramètres
-
pOut [in, out]
-
Type : D3DXVECTOR2*
Pointeur vers le D3DXVECTOR2 qui est le résultat de l’opération.
-
pV1 [in]
-
Type : const D3DXVECTOR2*
Pointeur vers une structure D3DXVECTOR2 source, vecteur de position.
-
pT1 [in]
-
Type : const D3DXVECTOR2*
Pointeur vers une structure D3DXVECTOR2 source, vecteur tangente.
-
pV2 [in]
-
Type : const D3DXVECTOR2*
Pointeur vers une structure D3DXVECTOR2 source, vecteur de position.
-
pT2 [in]
-
Type : const D3DXVECTOR2*
Pointeur vers une structure D3DXVECTOR2 source, vecteur tangente.
-
s [in]
-
Type : FLOAT
Facteur de pondération. Consultez la section Notes.
Valeur de retour
Type : D3DXVECTOR2*
Pointeur vers une structure D3DXVECTOR2 qui est le résultat de l’interpolation spline Hermite.
Notes
La fonction D3DXVec2Hermite interpole de (positionA, tangentA) vers (positionB, tangentB) à l’aide de l’interpolation spline Hermite.
L’interpolation spline est une généralisation de la spline ease-in et ease-out. La rampe est une fonction de Q(s) avec les propriétés suivantes.
Q(s) = As³ + Bs² + Cs + D (et par conséquent, Q'(s) = 3As² + 2Bs + C)
a) Q(0) = v1, donc Q'(0) = t1
b) Q(1) = v2, donc Q'(1) = t2
v1 est le contenu de pV1, v2 dans le contenu de pV2, t1 est le contenu de pT1 et t2 est le contenu de pT2.
Ces propriétés sont utilisées pour résoudre les problèmes de A, B, C, D.
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)
Branchez les solutions pour A, B, C et D pour générer des Q(s).
A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1
Cela donne :
Q(s) = (2v1 - 2v2 + t2 + t1)s³ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1
Qui peut être réorganisé comme suit :
Q(s) = (2s³ - 3s² + 1)v1 + (-2s³ + 3s²)v2 + (s³ - 2s² + s)t1 + (s³ - s²)t2
Les splines d’hermite sont utiles pour contrôler l’animation, car la courbe traverse tous les points de contrôle. En outre, étant donné que la position et la tangente sont explicitement spécifiées aux extrémités de chaque segment, il est facile de créer une courbe continue C2 tant que vous vous assurez que votre position de départ et votre tangente correspondent aux valeurs de fin du dernier segment.
La valeur de retour pour cette fonction est la même valeur retournée dans le paramètre pOut. De cette façon, la fonction D3DXVec2Hermite peut être utilisée comme paramètre pour une autre fonction.
Spécifications
Condition requise | Valeur |
---|---|
En-tête |
|
Bibliothèque |
|
Voir aussi