Condividi tramite


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
D3dx9math.h
Libreria
D3dx9.lib

Vedi anche

Funzioni matematiche