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


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

Примечание

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

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

Синтаксис

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

Параметры

pOut [in, out]

Тип: D3DXVECTOR4*

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

pV1 [in]

Тип: const D3DXVECTOR4*

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

pT1 [in]

Тип: const D3DXVECTOR4*

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

pV2 [in]

Тип: const D3DXVECTOR4*

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

pT2 [in]

Тип: const D3DXVECTOR4*

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

s [in]

Тип: FLOAT

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

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

Тип: D3DXVECTOR4*

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

Комментарии

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

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

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

a) Q(0) = v1, поэтому Q'(0) = t1

b) Q(1) = v2, поэтому Q'(1) = t2

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

Эти свойства используются для решения для A, B, C, 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³ + (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. Таким образом, функцию D3DXVec4Hermite можно использовать в качестве параметра для другой функции.

Требования

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

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

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