Funzione D3DXVec2Hermite (D3DX10Math.h)

Nota

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

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

Sintassi

D3DXVECTOR2* D3DXVec2Hermite(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pT1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pT2,
  _In_          FLOAT       s
);

Parametri

pOut [in, out]

Tipo: D3DXVECTOR2*

Puntatore all'oggetto D3DXVECTOR2 risultante dall'operazione.

pV1 [in]

Tipo: const D3DXVECTOR2*

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

pT1 [in]

Tipo: const D3DXVECTOR2*

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

pV2 [in]

Tipo: const D3DXVECTOR2*

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

pT2 [in]

Tipo: const D3DXVECTOR2*

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

s [in]

Tipo: FLOAT

Fattore di ponderazione. Vedere la sezione Osservazioni.

Valore restituito

Tipo: D3DXVECTOR2*

Puntatore a una struttura D3DXVECTOR2 risultante dall'interpolazione spline hermite.

Commenti

La funzione D3DXVec2Hermite 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 D3DXVec2Hermite può essere usata come parametro per un'altra funzione.

Requisiti

Requisito Valore
Intestazione
D3DX10Math.h
Libreria
D3DX10.lib

Vedi anche

Funzioni matematiche