add quat Lua library

This commit is contained in:
MihailRis
2024-07-22 19:05:27 +03:00
parent b5e7b63a9d
commit e0cb57a10a
10 changed files with 152 additions and 27 deletions
+12
View File
@@ -13,11 +13,23 @@ Subsections:
- [entities](scripting/builtins/libentities.md)
- [cameras](scripting/builtins/libcameras.md)
- [mat4](scripting/builtins/libmat4.md)
- [quat](scripting/builtins/libquat.md)
- [vec2, vec3, vec4](scripting/builtins/libvecn.md)
- [Module core:bit_converter](scripting/modules/core_bit_converter.md)
- [Module core:data_buffer](scripting/modules/core_data_buffer.md)
- [Module core:vector2, core:vector3](scripting/modules/core_vector2_vector3.md)
## Type annotations
The documentation for Lua libraries uses type annotations,
not part of Lua syntax.
- vector - an array of three or four numbers
- vec2 - array of two numbers
- vec3 - array of three numbers
- vec4 - array of four numbers
- quat - array of four numbers - quaternion
- matrix - array of 16 numbers - matrix
## Core functions
-13
View File
@@ -4,19 +4,6 @@
Most functions have several options for argument lists (overloads).
## Data types
Type conventions will be used on this page.
- vector - an array of three or four numbers
- vec3 - array of three numbers
- vec4 - array of four numbers
- quat - array of four numbers - quaternion
- matrix - array of 16 numbers - matrix
> [!WARNING]
>
> Type annotations are part of the documentation and are not present in Lua.
## Identity matrix - *mat4.idt(...)*
```lua
+34
View File
@@ -0,0 +1,34 @@
# *quat* library
Quaternions manipulation library.
## Quaternion from matrix - *mat4.from_quat(...)*
```lua
-- creates a quaternion based on the rotation matrix
quat.from_mat4(m: matrix)
-- writes a quaternion from the rotation matrix to dst
quat.from_mat4(m: matrix, dst: quat)
```
## Spherical linear interpolation - *quat.slerp(...)*
The interpolation always take the short path and the rotation is performed at constant speed.
```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)
```
## Casting to string - *quat.tostring(...)*
```lua
-- returns a string representing the contents of the quaternion
quat.tostring(q: quat)
```
+12
View File
@@ -13,11 +13,23 @@
- [entities](scripting/builtins/libentities.md)
- [cameras](scripting/builtins/libcameras.md)
- [mat4](scripting/builtins/libmat4.md)
- [quat](scripting/builtins/libquat.md)
- [vec2, vec3, vec4](scripting/builtins/libvecn.md)
- [Модуль core:bit_converter](scripting/modules/core_bit_converter.md)
- [Модуль core:data_buffer](scripting/modules/core_data_buffer.md)
- [Модули core:vector2, core:vector3](scripting/modules/core_vector2_vector3.md)
## Аннотации типов данных
В документации к Lua библиотекам используются аннотации типов,
не являющиеся частью синтаксиса Lua.
- vector - массив из трех или четырех чисел
- vec2 - массив из двух чисел
- vec3 - массив из трех чисел
- vec4 - массив из четырех чисел
- quat - массив из четырех чисел - кватернион
- matrix - массив из 16 чисел - матрица
```lua
require "контентпак:имя_модуля" -- загружает lua модуль из папки modules (расширение не указывается)
-13
View File
@@ -4,19 +4,6 @@
Большинство функций имеют несколько вариантов списка агрументов (перегрузок).
## Типы данных
На данной странице будут использоваться условные обозначения типов.
- vector - массив из трех или четырех чисел
- vec3 - массив из трех чисел
- vec4 - массив из четырех чисел
- quat - массив из четырех чисел - кватернион
- matrix - массив из 16 чисел - матрица
> [!WARNING]
>
> Аннотации типов являются частью документации и не указываются при вызове использовании.
## Единичная матрица - *mat4.idt(...)*
```lua
+34
View File
@@ -0,0 +1,34 @@
# Библиотека *quat*
Библиотека для работы с кватернионами.
## Кватернион из матрицы - *mat4.from_quat(...)*
```lua
-- создает кватернион на основе матрицы вращения
quat.from_mat4(m: matrix)
-- записывает кватернион по матрице вращения в dst
quat.from_mat4(m: matrix, dst: quat)
```
## Сферическая линейная интерполяция - *quat.slerp(...)*
Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью.
```lua
-- создает кватернион как интерполяцию между a и b,
-- где t - фактор интерполяции
quat.slerp(a: quat, b: quat, t: number)
-- записывает кватернион как интерполяцию между a и b в dst,
-- где t - фактор интерполяции
quat.slerp(a: quat, b: quat, t: number, dst: quat)
```
## Перевод в строку - *quat.tostring(...)*
```lua
-- возвращает строку представляющую содержимое кватерниона
quat.tostring(q: quat)
```