Compartilhar via


Função D3DXVec3Hermite (D3dx9math.h)

Observação

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

Executa uma interpolação de spline hermita usando os vetores 3D especificados.

Sintaxe

D3DXVECTOR3* D3DXVec3Hermite(
  _Inout_       D3DXVECTOR3 *pOut,
  _In_    const D3DXVECTOR3 *pV1,
  _In_    const D3DXVECTOR3 *pT1,
  _In_    const D3DXVECTOR3 *pV2,
  _In_    const D3DXVECTOR3 *pT2,
  _In_          FLOAT       s
);

Parâmetros

pOut [in, out]

Tipo: D3DXVECTOR3*

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

pV1 [in]

Tipo: const D3DXVECTOR3*

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

pT1 [in]

Tipo: const D3DXVECTOR3*

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

pV2 [in]

Tipo: const D3DXVECTOR3*

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

pT2 [in]

Tipo: const D3DXVECTOR3*

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

s [in]

Tipo: FLOAT

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

Valor retornado

Tipo: D3DXVECTOR3*

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

Comentários

A função D3DXVec3Hermite 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.

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

a) Q(0) = v1, então 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.

D = v1  (from a)
C = t1  (from a)
3A + 2B = t2 - t1 (substituting for C)
A + B = v2 - v1 - t1 (substituting for C and 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³ + (3v2 - 3v1 - 2t1 - t2)s² + t1s + v1

O que pode ser reorganizado como:

P(s) = (2sód– 3s² + 1)v1 + (-2s³ + 3s²)v2 + (s³ - 2s² + s)t1 + (s³ - 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 explicitamente especificadas nas extremidades de cada segmento, é fácil criar uma curva contínua C2, desde que você certifique-se de que sua posição inicial e tangente correspondam 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 D3DXVec3Hermite 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