Vecmat 0.2.3
C math and linear algebra library for 2D/3D graphics, physics, and science.
Loading...
Searching...
No Matches
matrix3i.c
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2025-2026 Igal Alkon
2// SPDX-FileCopyrightText: 2026 ALKONTEK <git@alkontek.com>
3// SPDX-License-Identifier: BSD-3-Clause
4
5#include <vecmat.h>
6
15{
16 matrix3i m;
18 return m;
19}
20
31{
32 matrix3i res;
33 mat3i_mul_ptr(&res, &a, &b);
34 return res;
35}
36
46{
47 matrix3i res;
48 mat3i_transpose_ptr(&res, &m);
49 return res;
50}
51
59{
60 return m.v[0] * (m.v[4] * m.v[8] - m.v[5] * m.v[7]) -
61 m.v[1] * (m.v[3] * m.v[8] - m.v[5] * m.v[6]) +
62 m.v[2] * (m.v[3] * m.v[7] - m.v[4] * m.v[6]);
63}
64
74{
75 matrix3i res;
76 mat3i_inverse_ptr(&res, &m);
77 return res;
78}
79
90{
91 vector3i res;
92 mat3i_mul_vec3i_ptr(&res, &m, &v);
93 return res;
94}
95
106{
107 vector2i res;
108 mat3i_mul_vec2i_ptr(&res, &m, &v);
109 return res;
110}
vm_int_t mat3i_determinant(const matrix3i m)
Computes the determinant of a 3x3 integer matrix.
Definition matrix3i.c:58
matrix3i mat3i_inverse(const matrix3i m)
Computes the inverse of a 3x3 integer matrix.
Definition matrix3i.c:73
matrix3i mat3i_transpose(const matrix3i m)
Computes the transpose of a 3x3 integer matrix.
Definition matrix3i.c:45
vector2i mat3i_mul_vec2i(const matrix3i m, const vector2i v)
Applies a 3x3 integer affine transform to a vector2i.
Definition matrix3i.c:105
vector3i mat3i_mul_vec3i(const matrix3i m, const vector3i v)
Multiplies a 3x3 integer matrix by a vector3i.
Definition matrix3i.c:89
matrix3i mat3i_identity(void)
Constructs the 3x3 identity matrix.
Definition matrix3i.c:14
matrix3i mat3i_mul(const matrix3i a, const matrix3i b)
Multiplies two 3x3 integer matrices.
Definition matrix3i.c:30
vm_int_t v[VECMAT_MAT3_SIZE]
Definition vecmat.h:319
void mat3i_mul_ptr(matrix3i *res, const matrix3i *a, const matrix3i *b)
Multiplies two 3x3 integer matrices (standard matrix multiplication).
void mat3i_inverse_ptr(matrix3i *res, const matrix3i *m)
Computes the inverse of a 3x3 integer matrix using adjugate over determinant.
void mat3i_mul_vec2i_ptr(vector2i *res, const matrix3i *m, const vector2i *v)
Applies a 3x3 integer affine transform to a vector2i.
void mat3i_identity_ptr(matrix3i *res)
Fills the given 3x3 integer matrix with the identity matrix.
void mat3i_mul_vec3i_ptr(vector3i *res, const matrix3i *m, const vector3i *v)
Multiplies a 3x3 integer matrix by a vector3i.
void mat3i_transpose_ptr(matrix3i *res, const matrix3i *m)
Computes the transpose of a 3x3 integer matrix.
int8_t vm_int_t
Definition vecmat.h:103