Реализует повороты с помощью кватернионов.
Перечисление Quaternion выдаёт его координаты (x, y, z, w) в том же порядке.
const quaternion = new v3d.Quaternion();
quaternion.setFromAxisAngle(new v3d.Vector3(0, 1, 0), Math.PI / 2);
const vector = new v3d.Vector3(1, 0, 0);
vector.applyQuaternion(quaternion);
Указывает, что объект является экземпляром класса Quaternion. Только для чтения.
Возвращает угол между этим кватернионом и кватернионом q в радианах.
Создает новый кватернион со свойствами x, y, z и w, идентичными данному.
Возвращает вращательную конъюгату данного кватерниона. Сопряженный кватернион представляет собой одно и то же вращение в противоположном направлении вокруг оси вращения.
Копирует свойства x, y, z и w из q в данный кватернион.
v — кватернион, с которым будет сравниваться данный кватернион.
Сравнивает свойства x, y, z и w v с эквивалентными свойствами текущего кватерниона, чтобы определить, представляют ли они одно и то же вращение.
Вычисляет скалярное произведение кватернионов v и данного.
Устанавливает свойства x, y, z и w текущего кватерниона из массива.
Устанавливает текущий кватернион в кватернион тождества; то есть в кватернион, который представляет "отсутствие вращения".
Инвертирует данный кватернион - вычисляет conjugate. Предполагается, что кватернион имеет единичную длину.
Вычисляет Евклидову метрику (длину прямой линии) данного кватерниона, рассматриваемого как 4-мерный вектор.
Вычисляет квадрат Евклидова расстояния (длины прямой) данного кватерниона, рассматриваемого как 4-мерный вектор. Это может быть полезно, если вы сравниваете длины двух кватернионов, так как это немного более эффективное вычисление, чем length().
Нормализует текущий кватернион - то есть вычисляет кватернион, который выполняет то же вращение, что и текущий, но имеет длину равную 1.
Умножает данный кватернион на q.
Устанавливает текущий кватернион в a x b. Адаптация метода, изложенного здесь.
Предварительно умножает текущий кватернион на q.
Устанавливает текущий кватернион в случайный нормализованный кватернион.
Поворачивает данный кватернион на заданный угловой шаг к определенному кватерниону q. Метод гарантирует, что конечный кватернион не будет превышать q.
Обрабатывает сферическую линейную интерполяцию между кватернионами. t представляет собой величину поворота между данным кватернионом (где t равно 0) и qb (где t равно 1). Этот кватернион устанавливается в результат. Также смотрите статическую версию slerp ниже.
// повернуть меш в направлении целевого кватерниона
mesh.quaternion.slerp(endQuaternion, 0.01);
Задает x, y, z, w свойства текущего кватерниона.
Устанавливает текущий кватернион из вращения, заданного осью axis и углом angle.
Адаптация следующего метода. axis (ось) предполагается нормализованной, angle (угол) — в радианах.
Устанавливает текущий кватернион из вращения, заданного углом Эйлера.
m — a Matrix4 Matrix4, из которых верхняя 3x3 матрица является чистой матрицей вращения (т.е. немасштабированной).
Устанавливает текущий кватернион из компонента вращения m. Адаптация следующего метода.
Применяет к данному кватерниону вращение, необходимое для поворота вектора направления vFrom к вектору направления vTo. Предполагается, что vFrom и vTo нормализованы.
Производит сферическую интерполяцию между указанными кватернионами и сохраняет результат в текущий кватернион.
Возвращает числовые элементы данного кватерниона в массиве формата [x, y, z, w].
Устанавливает x, y, z, w свойства текущего кватерниона из атрибута BufferAttribute.
src0.src1.Подобен статическому методу .slerp выше, но работает непосредственно с плоскими массивами чисел.
src0.src1.Эта реализация умножения кватернионов предполагает, что данные находятся в плоских массивах.
О том как получить исходный код этого модуля читайте тут.