diff --git a/doc/en/scripting/builtins/libquat.md b/doc/en/scripting/builtins/libquat.md index f7cc7a0f6..5d72413e2 100644 --- a/doc/en/scripting/builtins/libquat.md +++ b/doc/en/scripting/builtins/libquat.md @@ -2,14 +2,36 @@ Quaternions manipulation library. -## Quaternion from matrix - *mat4.from_quat(...)* +Quaternions can be created as a table of 4 numbers: +`{w, x, y, z}` + +## Quaternion from matrix - *quat.from_mat4(...)* ```lua -- creates a quaternion based on the rotation matrix -quat.from_mat4(m: matrix) +quat.from_mat4(m: matrix, [optional] dst: quat) -> quat +``` --- writes a quaternion from the rotation matrix to dst -quat.from_mat4(m: matrix, dst: quat) +## Quaternion of Euler angles - *quat.from_euler(...)* + +```lua +-- creates quaternion from euler angles passed as XYZ (pitch, yaw, roll) +-- angles in degrees +quat.from_euler(euler: vec3, [optional] dst: quat) -> quat +``` + +## Quaternion composition - quat.mul(...) + +```lua +-- multiplies quaternions +quat.mul(a: quat, b: quat, [optional] dst: quat) -> quat +``` + +## 3D vector rotation - quat.mul_vec3(...) + +```lua +-- rotates vector by quaternion +quat.mul_vec3(a: quat, b: vec3, [optional] dst: vec3) -> vec3 ``` ## Spherical linear interpolation - *quat.slerp(...)* @@ -19,16 +41,12 @@ The interpolation always take the short path and the rotation is performed at co ```lua -- creates a quaternion as an interpolation between a and b, -- where t is interpolation factor -quat.slerp(a: quat, b: quat, t: number) - --- writes a quaternion as an interpolation between a and b to dst, --- where t is interpolation factor -quat.slerp(a: quat, b: quat, t: number, dst: quat) +quat.slerp(a: quat, b: quat, t: number, [optional] dst: quat) -> quat ``` ## Casting to string - *quat.tostring(...)* ```lua -- returns a string representing the contents of the quaternion -quat.tostring(q: quat) +quat.tostring(q: quat) -> string ``` diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index e991de252..a32a24e6d 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -2,14 +2,14 @@ Библиотека для работы с кватернионами. +Кватернионы задаюся таблицей, состоящей из 4 компонентов: +`{w, x, y, z}` + ## Кватернион из матрицы - *quat.from_mat4(...)* ```lua -- создаёт кватернион на основе матрицы вращения -quat.from_mat4(m: matrix) -> quat - --- записывает кватернион по матрице вращения в dst -quat.from_mat4(m: matrix, dst: quat) +quat.from_mat4(m: matrix, [опционально] dst: quat) -> quat ``` ## Кватернион из углов Эйлера - *quat.from_euler(...)* @@ -17,11 +17,21 @@ quat.from_mat4(m: matrix, dst: quat) ```lua -- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) -- (значения углов строго в градусах) -quat.from_euler(euler: vec3) -> quat +quat.from_euler(euler: vec3, [опционально] dst: quat) -> quat +``` --- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) --- (значения углов строго в градусах) -quat.from_euler(euler: vec3, dst: quat) +## Композиция кватернионов - quat.mul(...) + +```lua +-- Умножает два кватерниона (композиция поворотов) +quat.mul(a: quat, b: quat, [опционально] dst: quat) -> quat +``` + +## Поворот 3д вектора на кватернион - quat.mul_vec3(...) + +```lua +-- Поворачивает вектор на заданный кватернион +quat.mul_vec3(a: quat, b: vec3, [опционально] dst: vec3) -> vec3 ``` ## Сферическая линейная интерполяция - *quat.slerp(...)* @@ -31,11 +41,7 @@ quat.from_euler(euler: vec3, dst: quat) ```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.slerp(a: quat, b: quat, t: number, [опционально] dst: quat) -> quat ``` ## Перевод в строку - *quat.tostring(...)*