Кватернион, часто представляют собой вращение объекта в пространстве.
Функция |
Описание |
new |
Конструктор кватерниона. |
Метод |
Описание |
unpack |
Возвращает компоненты кватерниона. |
table |
Возвращает таблицу с компонентами кватерниона. |
assign |
Присваивает кватерниону значения. |
zero |
Обнуляет кватернион. |
normalize |
Нормализует текущий кватернион. |
normalized |
Возвращает нормализованный кватернион. |
dot |
Возвращает скалярное произведение. |
lengthSquared |
Возвращает длину кватерниона в квадрате. |
length |
Возвращает длину кватерниона. |
Оператор |
Описание |
+ |
Складывает кватернион. |
- |
Вычитает кватернион. |
* |
Умножает кватернион. |
/ |
Делит кватернион. |
^ |
Возводит кватернион в степень. |
== , ~= , > , < , >= , <= |
Сравнивает два кватерниона. |
tostring |
Возвращает форматированную строку вида Quaternion(x, y, y, w). |
Операции с кватернионом можно проводить как с другим кватернионами, так и с числом, в этом случае операция проводится с каждым компонентом кватерниона.
local quat = Quaternion.new(15, 25, 65, 33)
-- Проверяет что x, y, z и w больше 10, в данном случае выражение правдивое.
if quat > 10 then
print("quat > 10")
end
-- По умолчанию значения равны 0.
local q = Quaternion.new()
q:assign(5, 5, 5, 5) -- Присваиваем кватерниону значения.
quat:zero() -- Сбрасываем значения у первого кватерниона.
-- Проверяем что два кватерниона не равны, в данном случае выражение правдиво.
if q ~= quat then
local x, y, z, w = q:unpack() -- Распаковываем значения кватерниона.
quat.x = x -- Присваиваем первому вектору значение x из второго кватерниона.
print(quat) -- Напечатает Quaternion(5, 0, 0, 0)
end