Функция 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 можно использовать в качестве параметра для другой функции.
Требования
Требование | Значение |
---|---|
Заголовок |
|
Библиотека |
|
См. также раздел