Поделиться через


Функция D3DXVec2Hermite (D3DX10Math.h)

Примечание

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

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

Синтаксис

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

Параметры

pOut [in, out]

Тип: D3DXVECTOR2*

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

pV1 [in]

Тип: const D3DXVECTOR2*

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

pT1 [in]

Тип: const D3DXVECTOR2*

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

pV2 [in]

Тип: const D3DXVECTOR2*

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

pT2 [in]

Тип: const D3DXVECTOR2*

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

s [in]

Тип: FLOAT

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

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

Тип: D3DXVECTOR2*

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

Комментарии

Функция D3DXVec2Hermite выполняет интерполяцию от (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 - t-1 (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. Таким образом, функцию D3DXVec2Hermite можно использовать в качестве параметра для другой функции.

Требования

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

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

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