Compartilhar via


Função D3DXVec4Hermite (D3dx9math.h)

Observação

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

Executa uma interpolação de spline Hermite usando os vetores 4D especificados.

Sintaxe

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

Parâmetros

pOut [in, out]

Tipo: D3DXVECTOR4*

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

pV1 [in]

Tipo: const D3DXVECTOR4*

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

pT1 [in]

Tipo: const D3DXVECTOR4*

Ponteiro para uma estrutura D3DXVECTOR4 de origem, um vetor tangente.

pV2 [in]

Tipo: const D3DXVECTOR4*

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

pT2 [in]

Tipo: const D3DXVECTOR4*

Ponteiro para uma estrutura D3DXVECTOR4 de origem, um vetor tangente.

s [in]

Tipo: FLOAT

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

Valor retornado

Tipo: D3DXVECTOR4*

Ponteiro para uma estrutura D3DXVECTOR4 que é o resultado da interpolação de spline Hermite.

Comentários

A função D3DXVec4Hermite interpola de (positionA, tangentA) para (positionB, tangentB) usando a interpolação de spline Hermite.

A interpolação spline é uma generalização do spline de facilidade e facilidade. A rampa é uma função de Q(s) com as propriedades a seguir.

Q(s) = AsPlica + Bs² + Cs + D (e, portanto, Q's) = 3As² + 2Bs + C)

a) Q(0) = v1, portanto Q'(0) = t1

b) Q(1) = v2, portanto Q'(1) = t2

v1 é o conteúdo de pV1, v2 no conteúdo de pV2, t1 é o conteúdo de pT1 e t2 é o conteúdo de pT2.

Essas propriedades são usadas para resolver para A, B, C, D.

Conecte as soluções para A, B, C e D para gerar Q(s).

A = 2v1 - 2v2 + t2 + t1
B = 3v2 - 3v1 - 2t1 - t2
C = t1
D = v1

Isso resulta em:

Q(s) = (2v1 - 2v2 + t2 + t1)s HYPER + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1

O que pode ser reorganizado como:

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

Splines hermitas são úteis para controlar a animação porque a curva percorre todos os pontos de controle. Além disso, como a posição e a tangente são especificadas explicitamente nas extremidades de cada segmento, é fácil criar uma curva contínua C2, desde que você verifique se a posição inicial e a tangente correspondem aos valores finais do último segmento.

O valor retornado para essa função é o mesmo valor retornado no parâmetro pOut. Dessa forma, a função D3DXVec4Hermite pode ser usada como um parâmetro para outra função.

Requisitos

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

Confira também

Funções Matemáticas