Função D3DXVec2Hermite (D3DX10Math.h)

Observação

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

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

Sintaxe

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

Parâmetros

pOut [in, out]

Tipo: D3DXVECTOR2*

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

pV1 [in]

Tipo: const D3DXVECTOR2*

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

pT1 [in]

Tipo: const D3DXVECTOR2*

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

pV2 [in]

Tipo: const D3DXVECTOR2*

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

pT2 [in]

Tipo: const D3DXVECTOR2*

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

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 de spline Hermite.

Comentários

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

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)

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 D3DXVec2Hermite pode ser usada como um parâmetro para outra função.

Requisitos

Requisito Valor
parâmetro
D3DX10Math.h
Biblioteca
D3DX10.lib

Confira também

Funções Matemáticas