mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
2.9 KiB
2.9 KiB
Библиотека quat
Библиотека для работы с кватернионами.
Кватернионы задаюся таблицей, состоящей из 4 компонентов:
{w, x, y, z}
Кватернион из матрицы - quat.from_mat4(...)
-- создаёт кватернион на основе матрицы вращения
quat.from_mat4(m: matrix) -> quat
-- записывает кватернион по матрице вращения в dst
quat.from_mat4(m: matrix, dst: quat)
Кватернион из углов Эйлера - quat.from_euler(...)
-- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll)
-- (значения углов строго в градусах)
quat.from_euler(euler: vec3) -> quat
-- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll)
-- (значения углов строго в градусах)
quat.from_euler(euler: vec3, dst: quat)
Композиция кватернионов - quat.mul(...)
-- Умножает два кватерниона (композиция поворотов)
quat.mul(a: quat, b: quat) -> quat
-- Записывает кватернион как произведение двух кватернионов (композиция поворотов)
quat.mul(a: quat, b: quat, dst: quat)
Поворот 3д вектора на кватернион - quat.mul_vec3(...)
-- Поворачивает вектор на заданный кватернион
quat.mul_vec3(a: quat, b: vec3) -> vec3
-- Записывает результат поворота вектора на заданный кватернион
quat.mul_vec3(a: quat, b: vec3, dst: vec3)
Сферическая линейная интерполяция - quat.slerp(...)
Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью.
-- создаёт кватернион как интерполяцию между a и b,
-- где t - фактор интерполяции
quat.slerp(a: quat, b: quat, t: number) -> quat
-- записывает кватернион как интерполяцию между a и b в dst,
-- где t - фактор интерполяции
quat.slerp(a: quat, b: quat, t: number, dst: quat)
Перевод в строку - quat.tostring(...)
-- возвращает строку, представляющую содержимое кватерниона
quat.tostring(q: quat) -> string