Funzione D3DXVec4Hermite (D3DX10Math.h)

Nota

La libreria di utilità D3DX10 è deprecata. È consigliabile usare invece DirectXMath .

Esegue un'interpolazione spline hermite usando i vettori 4D specificati.

Sintassi

D3DXVECTOR4* D3DXVec4Hermite(
  _Inout_       D3DXVECTOR4 *pOut,
  _In_    const D3DXVECTOR4 *pV1,
  _In_    const D3DXVECTOR4 *pT1,
  _In_    const D3DXVECTOR4 *pV2,
  _In_    const D3DXVECTOR4 *pT2,
  _In_          FLOAT       s
);

Parametri

pOut [in, out]

Tipo: D3DXVECTOR4*

Puntatore a D3DXVECTOR4 che è il risultato dell'operazione.

pV1 [in]

Tipo: const D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 di origine, vettore di posizione.

pT1 [in]

Tipo: const D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 di origine, un vettore tangente.

pV2 [in]

Tipo: const D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 di origine, vettore di posizione.

pT2 [in]

Tipo: const D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 di origine, un vettore tangente.

s [in]

Tipo: FLOAT

Fattore di ponderazione. Vedere la sezione Osservazioni.

Valore restituito

Tipo: D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 che è il risultato dell'interpolazione spline di Hermite.

Commenti

La funzione D3DXVec4Hermite esegue l'interpolazione da (positionA, tangentA) a (positionB, tangentB) usando l'interpolazione spline 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 - t-1 (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 segue:

Q(s) = (2s² - 3s² + 1)v1 + (-2s² + 3s²)v2 + (s Lt - 2s² + s)t1 + (s² - s²)t2

Le spline emite sono utili per controllare l'animazione perché la curva scorre 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 purché si assicuri 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 D3DXVec4Hermite può essere usata come parametro per un'altra funzione.

Requisiti

Requisito Valore
Intestazione
D3DX10Math.h

Vedi anche

Funzioni matematiche