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

Примечание

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

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

Синтаксис

D3DXVECTOR3* D3DXVec3CatmullRom(
  _Inout_       D3DXVECTOR3 *pOut,
  _In_    const D3DXVECTOR3 *pV0,
  _In_    const D3DXVECTOR3 *pV1,
  _In_    const D3DXVECTOR3 *pV2,
  _In_    const D3DXVECTOR3 *pV3,
  _In_          FLOAT       s
);

Параметры

pOut [in, out]

Тип: D3DXVECTOR3*

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

pV0 [in]

Тип: const D3DXVECTOR3*

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

pV1 [in]

Тип: const D3DXVECTOR3*

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

pV2 [in]

Тип: const D3DXVECTOR3*

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

pV3 [in]

Тип: const D3DXVECTOR3*

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

s [in]

Тип: FLOAT

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

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

Тип: D3DXVECTOR3*

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

Комментарии

Учитывая четыре точки (p1, p2, p3, p4), найдите функцию Q(s) такой, что:

Q(s) is a cubic function.
Q(s) interpolates between p2 and p3 as s ranges from 0 to 1.
Q(s) is parallel to the line joining p1 to p3 when s is 0.
Q(s) is parallel to the line joining p2 to p4 when s is 1.

Сплайн Catmull-Rom можно получить из сплайна Hermite, задав следующее:

v1 = p2
v2 = p3
t1 = (p3 - p1) / 2
t2 = (p4 - p2) / 2

где:

Версия 1 — это содержимое pV0.

Версия 2 — это содержимое pV1.

p3 — это содержимое pV2.

p4 — это содержимое pV3.

Использование уравнения сплайна Эрмита:

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

и подстановка для v1, v2, t1, t2 дает:

Q(s) = (2s3 - 3s2 + 1)p2 + (-2s3 + 3s2)p3 + (s3 - 2s2 + s)(p3 - p1) / 2 + (s3 - s2)(p4 - p2) / 2

Это можно изменить следующим образом:

Q(s) = [(-s3 + 2s2 - s)p1 + (3s3 - 5s2 + 2)p2 + (-3s3 + 4s2 + s)p3 + (s3 - s2)p4] / 2

Требования

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

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

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

D3DXVec2CatmullRom

D3DXVec4CatmullRom