Partilhar via


Função D3DXVec2CatmullRom (D3dx9math.h)

Observação

A biblioteca de utilitários D3DX foi preterida. Em vez disso, recomendamos que você use DirectXMath .

Executa uma interpolação Catmull-Rom usando os vetores 2D especificados.

Sintaxe

D3DXVECTOR2* D3DXVec2CatmullRom(
  _Inout_       D3DXVECTOR2 *pOut,
  _In_    const D3DXVECTOR2 *pV0,
  _In_    const D3DXVECTOR2 *pV1,
  _In_    const D3DXVECTOR2 *pV2,
  _In_    const D3DXVECTOR2 *pV3,
  _In_          FLOAT       s
);

Parâmetros

pOut [in, out]

Tipo: D3DXVECTOR2*

Ponteiro para a estrutura D3DXVECTOR2 que é o resultado da operação.

pV0 [in]

Tipo: const D3DXVECTOR2*

Ponteiro para uma estrutura D3DXVECTOR2 de origem, um vetor de posição.

pV1 [in]

Tipo: const D3DXVECTOR2*

Ponteiro para uma estrutura D3DXVECTOR2 de origem, um vetor de posição.

pV2 [in]

Tipo: const D3DXVECTOR2*

Ponteiro para uma estrutura D3DXVECTOR2 de origem, um vetor de posição.

pV3 [in]

Tipo: const D3DXVECTOR2*

Ponteiro para uma estrutura D3DXVECTOR2 de origem, um vetor de posição.

s [in]

Tipo: FLOAT

Fator de ponderação. Consulte Observações.

Valor retornado

Tipo: D3DXVECTOR2*

Ponteiro para uma estrutura D3DXVECTOR2 que é o resultado da interpolação Catmull-Rom.

Comentários

Considerando quatro pontos (p1, p2, p3, p4), localize uma função Q(s) de modo que:

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.

O spline Catmull-Rom pode ser derivado do spline Hermite definindo:

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

em que:

v1 é o conteúdo de pV0.

v2 é o conteúdo de pV1.

p3 é o conteúdo de pV2.

p4 é o conteúdo de pV3.

Usando a equação de spline hermita:

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

e substituindo por v1, v2, t1, t2 produz:

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

Isso pode ser reorganizado como:

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

Requisitos

Requisito Valor
parâmetro
D3dx9math.h
Biblioteca
D3dx9.lib

Confira também

Funções Matemáticas

D3DXVec3CatmullRom

D3DXVec4CatmullRom