Funzione D3DXVec3Hermite (D3DX10Math.h)

Nota

La libreria di utilità D3DX10 è 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 al D3DXVECTOR3 che è il risultato dell'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
D3DX10Math.h

Vedi anche

Funzioni matematiche