Функция D3DXVec3Hermite (D3dx9math.h)

Примечание

Служебная библиотека D3DX устарела. Вместо этого рекомендуется использовать DirectXMath .

Выполняет интерполяцию сплайна Hermite, используя указанные трехмерные векторы.

Синтаксис

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

Параметры

pOut [in, out]

Тип: D3DXVECTOR3*

Указатель на структуру D3DXVECTOR3 , которая является результатом операции.

pV1 [in]

Тип: const D3DXVECTOR3*

Указатель на исходную структуру D3DXVECTOR3 , вектор позиции.

pT1 [in]

Тип: const D3DXVECTOR3*

Указатель на исходную структуру D3DXVECTOR3 , тангенсный вектор.

pV2 [in]

Тип: const D3DXVECTOR3*

Указатель на исходную структуру D3DXVECTOR3 , вектор позиции.

pT2 [in]

Тип: const D3DXVECTOR3*

Указатель на исходную структуру D3DXVECTOR3 , тангенсный вектор.

s [in]

Тип: FLOAT

Коэффициент веса. См. заметки.

Возвращаемое значение

Тип: D3DXVECTOR3*

Указатель на структуру D3DXVECTOR3 , которая является результатом интерполяции сплайна Эрмита.

Комментарии

Функция D3DXVec3Hermite выполняет интерполяцию от (positionA, tangentA) до (positionB, tangentB) с помощью интерполяции сплайна Hermite.

Интерполяция сплайна — это обобщение сплайна с упрощением и упрощением. Пандус — это функция Q(s) со следующими свойствами.

Q(s) = As² + Bs² + Cs + D (и, следовательно, Q's = 3As² + 2Bs + C)

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

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

Версия 1 — это содержимое pV1, v2 в содержимом pV2, t1 — содержимое pT1, а t2 — содержимое pT2.

Эти свойства используются для решения проблем с 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)

Подключите решения для A, B, C и D для создания вопросов.

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

Мы получаем такой результат:

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

Который можно переупорядочить следующим образом:

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

Сплайны Эрмита полезны для управления анимацией, так как кривая проходит через все контрольные точки. Кроме того, так как положение и тангенс явно указываются на концах каждого сегмента, можно легко создать непрерывную кривую C2, если убедиться, что начальное положение и тангенс соответствуют конечным значениям последнего сегмента.

Возвращаемое значение для этой функции совпадает с значением, возвращаемым в параметре pOut. Таким образом, функцию D3DXVec3Hermite можно использовать в качестве параметра для другой функции.

Требования

Требование Значение
Заголовок
D3dx9math.h
Библиотека
D3dx9.lib

См. также раздел

Математические функции