Функция 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 |