Funzione D3DXVec4CatmullRom (D3DX10Math.h)

Nota

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

Esegue un'interpolazione Catmull-Rom utilizzando i vettori 4D specificati.

Sintassi

D3DXVECTOR4* D3DXVec4CatmullRom(
  _Inout_       D3DXVECTOR4 *pOut,
  _In_    const D3DXVECTOR4 *pV0,
  _In_    const D3DXVECTOR4 *pV1,
  _In_    const D3DXVECTOR4 *pV2,
  _In_    const D3DXVECTOR4 *pV3,
  _In_          FLOAT       s
);

Parametri

pOut [in, out]

Tipo: D3DXVECTOR4*

Puntatore a D3DXVECTOR4 che è il risultato dell'operazione.

pV0 [in]

Tipo: const D3DXVECTOR4*

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

pV1 [in]

Tipo: const D3DXVECTOR4*

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

pV2 [in]

Tipo: const D3DXVECTOR4*

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

pV3 [in]

Tipo: const D3DXVECTOR4*

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

s [in]

Tipo: FLOAT

Fattore di ponderazione. Vedere la sezione Osservazioni.

Valore restituito

Tipo: D3DXVECTOR4*

Puntatore a una struttura D3DXVECTOR4 risultante dall'interpolazione Catmull-Rom.

Commenti

Dato quattro punti (p1, p2, p3, p4), trovare una funzione Q(s) in modo che:

Q(s) is a cubic function.
Q(s) interpolates between p2 and p3 as s ranges from 0 to 1.
Q(s) is parallel to the line joining p1 to p3 when s is 0.
Q(s) is parallel to the line joining p2 to p4 when s is 1.

La Catmull-Rom spline può essere derivata dalla spline Hermite impostando:

v1 = p2
v2 = p3
t1 = (p3 - p1) / 2
t2 = (p4 - p2) / 2

dove:

v1 è il contenuto di pV0.

v2 nel contenuto di pV1.

p3 è il contenuto di pV2.

p4 è il contenuto di pV3.

Uso dell'equazione spline hermite:

Q(s) = (2s3 - 3s2 + 1)v1 + (-2s3 + 3s2)v2 + (s3 - 2s2 + s)t1 + (s3 - s2)t2

e sostituzione per v1, v2, t1, t2 yields:

Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2) / 2

Questo può essere riorganiato come segue:

Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2

Requisiti

Requisito Valore
Intestazione
D3DX10Math.h

Vedi anche

Funzioni matematiche