# Библиотека *mat4* *mat4* содержит набор функций для работы с матрицами трансформации размерностью 4x4. Большинство функций имеют несколько вариантов списка агрументов (перегрузок). ## Типы данных На данной странице будут использоваться условные обозначения типов. - vector - массив из трех или четырех чисел - vec3 - массив из трех чисел - vec4 - массив из четырех чисел - matrix - массив из 16 чисел - матрица > [!WARNING] > > Аннотации типов являются частью документации и не указываются при вызове использовании. ## Единичная матрица - *mat4.idt(...)* ```lua -- создает единичную матрицу mat4.idt() -- записывает единичную матрицу в dst mat4.idt(dst: matrix) ``` ## Определитель матрицы - *mat4.determinant(...)* ```lua -- вычисляет определитель матрицы mat4.determinant(m: matrix) ``` ## Умножение матриц - *mat4.mul(...)* ```lua -- возвращает результат умножения матриц mat4.mul(a: matrix, b: matrix) -- записывает результат умножения матриц в dst mat4.mul(a: matrix, b: matrix, dst: matrix) -- возвращает результат умножения матрицы и вектора mat4.mul(a: matrix, v: vector) -- записывает результат умножения матрицы и вектора в dst mat4.mul(a: matrix, v: vector, dst: vector) ``` ## Инверсия матрицы - *mat4.inverse(...)* ```lua -- возвращает результат инверсии матрицы mat4.inverse(m: matrix) -- записывает результат инверсии матрицы в dst mat4.inverse(m: matrix, dst: matrix) ``` ## Транспонирование матрицы - *mat4.transpose(...)* ```lua -- возвращает результат транспонирования матрицы mat4.transpose(m: matrix) -- записывает результат транспонирования матрицы в dst mat4.transpose(m: matrix, dst: matrix) ``` ## Смещение - *mat4.translate(...)* ```lua -- создает матрицу смещения mat4.translate(translation: vec3) -- возвращает результат применения смещения к матрице m mat4.translate(m: matrix, translation: vec3) -- записывает результат применения смещения к матрице m в dst mat4.translate(m: matrix, translation: vec3, dst: matrix) ``` ## Масштабирование - *mat4.scale(...)* ```lua -- создает матрицу масштабирования mat4.scale(scale: vec3) -- возвращает результат применения масштабирования к матрице m mat4.scale(m: matrix, scale: vec3) -- записывает результат применения масштабирования к матрице m в dst mat4.scale(m: matrix, scale: vec3, dst: matrix) ``` ## Вращение - *mat4.rotate(...)* Угол поворота (angle) указывается в градусах. ```lua -- создает матрицу поворота (angle - угол поворота) по заданной оси (axis - единичный вектор) mat4.rotate(axis: vec3, angle: number) -- возвращает результат применения вращения к матрице m mat4.rotate(m: matrix, axis: vec3, angle: number) -- записывает результат применения вращения к матрице m в dst mat4.rotate(m: matrix, axis: vec3, angle: number, dst: matrix) ``` ## Декомпозиция - *mat4.decompose(...)* Раскладывает матрицу трансформации на составляющие. ```lua mat4.decompose(m: matrix) -- возвращает таблицу: { scale=vec3, rotation=matrix, translation=vec3, skew=vec3, perspective=vec4 } ``` ## Перевод в строку - *mat4.tostring(...)* ```lua -- возвращает строку представляющую содержимое матрицы mat4.tostring(m: matrix) -- возвращает строку представляющую содержимое матрицы, многострочную, если multiline = true mat4.tostring(m: matrix, multiline: bool) ```