Funzione D3DXVec3Hermite (D3dx9math.h)
Nota
La libreria di utilità D3DX è deprecata. È consigliabile usare invece DirectXMath .
Esegue un'interpolazione spline di Hermite usando i vettori 3D specificati.
Sintassi
D3DXVECTOR3* D3DXVec3Hermite(
_Inout_ D3DXVECTOR3 *pOut,
_In_ const D3DXVECTOR3 *pV1,
_In_ const D3DXVECTOR3 *pT1,
_In_ const D3DXVECTOR3 *pV2,
_In_ const D3DXVECTOR3 *pT2,
_In_ FLOAT s
);
Parametri
-
pOut [in, out]
-
Tipo: D3DXVECTOR3*
Puntatore alla struttura D3DXVECTOR3 risultante dall'operazione.
-
pV1 [in]
-
Tipo: const D3DXVECTOR3*
Puntatore a una struttura D3DXVECTOR3 di origine, vettore di posizione.
-
pT1 [in]
-
Tipo: const D3DXVECTOR3*
Puntatore a una struttura D3DXVECTOR3 di origine, vettore tangente.
-
pV2 [in]
-
Tipo: const D3DXVECTOR3*
Puntatore a una struttura D3DXVECTOR3 di origine, vettore di posizione.
-
pT2 [in]
-
Tipo: const D3DXVECTOR3*
Puntatore a una struttura D3DXVECTOR3 di origine, vettore tangente.
-
s [in]
-
Tipo: FLOAT
Fattore di peso. Vedere la sezione Osservazioni.
Valore restituito
Tipo: D3DXVECTOR3*
Puntatore a una struttura D3DXVECTOR3 risultante dall'interpolazione spline di Hermite.
Commenti
La funzione D3DXVec3Hermite interpola da (positionA, tangentA) a (positionB, tangentB) usando l'interpolazione spline di Hermite.
L'interpolazione spline è una generalizzazione della spline di facilità e facilità. La rampa è una funzione di Q(s) con le proprietà seguenti.
Q(s) = As³ + Bs² + Cs + D (e quindi, Q's) = 3As² + 2Bs + C)
a) Q(0) = v1, quindi Q'(0) = t1
b) Q(1) = v2, quindi Q'(1) = t2
v1 è il contenuto di pV1, v2 nel contenuto di pV2, t1 è il contenuto di pT1 e t2 è il contenuto di pT2.
Queste proprietà vengono usate per risolvere A, B, C, D.
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)
Collegare le soluzioni per A, B, C e D per generare Q(s).
A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1
Il risultato è il seguente:
Q(s) = (2v1 - 2v2 + t2 + t1)s³ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1
Che può essere riorganiato come:
Q(s) = (2s³ - 3s² + 1)v1 + (-2s³ + 3s²)v2 + (s³ - 2s² + s)t1 + (s³ - s²)t2
Le spline hermite sono utili per controllare l'animazione perché la curva viene eseguita attraverso tutti i punti di controllo. Inoltre, poiché la posizione e la tangente vengono specificate in modo esplicito alle estremità di ogni segmento, è facile creare una curva continua C2 finché si assicura che la posizione iniziale e la tangente corrispondano ai valori finali dell'ultimo segmento.
Il valore restituito per questa funzione è lo stesso valore restituito nel parametro pOut. In questo modo, la funzione D3DXVec3Hermite può essere usata come parametro per un'altra funzione.
Requisiti
Requisito | Valore |
---|---|
Intestazione |
|
Libreria |
|
Vedi anche