# Библиотека *quat* Библиотека для работы с кватернионами. ## Кватернион из матрицы - *quat.from_mat4(...)* ```lua -- создаёт кватернион на основе матрицы вращения quat.from_mat4(m: matrix) -> quat -- записывает кватернион по матрице вращения в dst quat.from_mat4(m: matrix, dst: quat) ``` ## Кватернион из углов Эйлера - *quat.from_euler(...)* ```lua -- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) -- (значения углов строго в градусах) quat.from_euler(euler: vec3) -> quat -- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) -- (значения углов строго в градусах) quat.from_euler(euler: vec3, dst: quat) ``` ## Сферическая линейная интерполяция - *quat.slerp(...)* Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью. ```lua -- создаёт кватернион как интерполяцию между 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(...)* ```lua -- возвращает строку, представляющую содержимое кватерниона quat.tostring(q: quat) -> string ```