From 22b70b701e192472ab859345fbc611cf69b7ce63 Mon Sep 17 00:00:00 2001 From: neveix Date: Sat, 15 Aug 2026 14:01:46 +0500 Subject: [PATCH] add quaternion mul* docs --- doc/en/scripting/builtins/libquat.md | 37 +++++++++++++++++++++++++++- doc/ru/scripting/builtins/libquat.md | 23 +++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) diff --git a/doc/en/scripting/builtins/libquat.md b/doc/en/scripting/builtins/libquat.md index f7cc7a0f6..4ad15bad7 100644 --- a/doc/en/scripting/builtins/libquat.md +++ b/doc/en/scripting/builtins/libquat.md @@ -2,7 +2,10 @@ 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 @@ -12,6 +15,38 @@ quat.from_mat4(m: matrix) 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) -> quat + +-- writes quaternion from euler angles passed as XYZ (pitch, yaw, roll) to dst +-- angles in degrees +quat.from_euler(euler: vec3, dst: quat) +``` + +## Quaternion composition - quat.mul(...) + +```lua +-- multiplies quaternions +quat.mul(a: quat, b: quat) -> quat + +-- writes a quaternions multiplication result to dst +quat.mul(a: quat, b: quat, dst: quat) +``` + +## 3D vector rotation - quat.mul_vec3(...) + +```lua +-- rotates vector by quaternion +quat.mul_vec3(a: quat, b: vec3) -> vec3 + +-- writes rotated vector by quaternion to dst +quat.mul_vec3(a: quat, b: vec3, dst: vec3) +``` + ## Spherical linear interpolation - *quat.slerp(...)* The interpolation always take the short path and the rotation is performed at constant speed. diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index e991de252..745ac6822 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -2,6 +2,9 @@ Библиотека для работы с кватернионами. +Кватернионы задаюся таблицей, состоящей из 4 компонентов: +`{w, x, y, z}` + ## Кватернион из матрицы - *quat.from_mat4(...)* ```lua @@ -24,6 +27,26 @@ quat.from_euler(euler: vec3) -> quat quat.from_euler(euler: vec3, dst: quat) ``` +## Композиция кватернионов - quat.mul(...) + +```lua +-- Умножает два кватерниона (композиция поворотов) +quat.mul(a: quat, b: quat) -> quat + +-- Записывает кватернион как произведение двух кватернионов (композиция поворотов) +quat.mul(a: quat, b: quat, dst: quat) +``` + +## Поворот 3д вектора на кватернион - quat.mul_vec3(...) + +```lua +-- Поворачивает вектор на заданный кватернион +quat.mul_vec3(a: quat, b: vec3) -> vec3 + +-- Записывает результат поворота вектора на заданный кватернион +quat.mul_vec3(a: quat, b: vec3, dst: vec3) +``` + ## Сферическая линейная интерполяция - *quat.slerp(...)* Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью.