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


Функция XMQuaternionSquad (directxmath.h)

Интерполирует между четырьмя кватернионами единиц, используя сферическую интерполяцию четырехугольника.

Синтаксис

XMVECTOR XM_CALLCONV XMQuaternionSquad(
  [in] FXMVECTOR Q0,
  [in] FXMVECTOR Q1,
  [in] FXMVECTOR Q2,
  [in] GXMVECTOR Q3,
  [in] float     t
) noexcept;

Параметры

[in] Q0

Первый кватернион единицы.

[in] Q1

Кватернион второго блока.

[in] Q2

Кватернион третьего блока.

[in] Q3

Четвертый кватернион единицы.

[in] t

Фактор управления интерполяцией.

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

Возвращает интерполированный кватернион. Если Q0, Q1, Q2 и Q3 не являются единицами кватернионов, возвращаемый кватернион не определен.

Комментарии

Функции кватерниона DirectXMath используют 4-векторный XMVECTOR для представления кватернионов, где компоненты X, Y и Z являются векторной частью, а компонент W — скалярной частью.

Использование этого метода требует некоторой настройки перед его использованием. Дополнительные сведения см. в разделе XMQuaternionSquadSetup .

В следующем примере показано, как использовать набор ключей кватерниона (Q0, Q1, Q2, Q3) для вычисления внутренних точек четырехугольника (A, B, C). Это гарантирует, что тангенсы будут непрерывными в смежных сегментах.

// Rotation about the z-axis
XMVECTOR Q0 = XMVectorSet(0,  0, 0.707f, -.707f);
XMVECTOR Q1 = XMVectorSet(0,  0, 0.000f, 1.000f);
XMVECTOR Q2 = XMVectorSet(0,  0, 0.707f, 0.707f);
XMVECTOR Q3 = XMVectorSet(0,  0, 1.000f, 0.000f);

XMVECTOR A, B, C;
XMQuaternionSquadSetup(&A, &B, &C, Q0, Q1, Q2, Q3);

XMVECTOR result = XMQuaternionSquad(Q1, A, B, C, 0.5f);
// result is a rotation of 45 degrees around the z-axis

Требования к платформе

Поддерживается для классических приложений Win32, приложений Магазина Windows и приложений Windows Phone 8.

Требования

   
Целевая платформа Windows
Header directxmath.h

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