50 lines
1.7 KiB
C
50 lines
1.7 KiB
C
#pragma once
|
|
|
|
#include <iron_math.h>
|
|
#include "iron_vec4.h"
|
|
#include "iron_quat.h"
|
|
#include "iron_array.h"
|
|
|
|
typedef struct mat4_decomposed {
|
|
vec4_t loc;
|
|
quat_t rot;
|
|
vec4_t scl;
|
|
} mat4_decomposed_t;
|
|
|
|
mat4_t mat4_create(float _00, float _10, float _20, float _30,
|
|
float _01, float _11, float _21, float _31,
|
|
float _02, float _12, float _22, float _32,
|
|
float _03, float _13, float _23, float _33);
|
|
mat4_t mat4_identity();
|
|
mat4_t mat4_from_f32_array(f32_array_t *a, int offset);
|
|
mat4_t mat4_persp(float fov_y, float aspect, float zn, float zf);
|
|
mat4_t mat4_ortho(float left, float right, float bottom, float top, float znear, float zfar);
|
|
mat4_t mat4_rot_z(float alpha);
|
|
mat4_t mat4_compose(vec4_t loc, quat_t rot, vec4_t scl);
|
|
mat4_decomposed_t *mat4_decompose(mat4_t m);
|
|
mat4_t mat4_set_loc(mat4_t m, vec4_t v);
|
|
mat4_t mat4_from_quat(quat_t q);
|
|
mat4_t mat4_init_translate(float x, float y, float z);
|
|
mat4_t mat4_translate(mat4_t m, float x, float y, float z);
|
|
mat4_t mat4_scale(mat4_t m, vec4_t v);
|
|
mat4_t mat4_mult_mat3x4(mat4_t a, mat4_t b);
|
|
mat4_t mat4_mult_mat(mat4_t a, mat4_t b);
|
|
mat4_t mat4_inv(mat4_t a);
|
|
mat4_t mat4_transpose(mat4_t m);
|
|
mat4_t mat4_transpose3x3(mat4_t m);
|
|
mat4_t mat4_clone(mat4_t m);
|
|
vec4_t mat4_get_loc(mat4_t m);
|
|
vec4_t mat4_get_scale(mat4_t m);
|
|
mat4_t mat4_mult(mat4_t m, float s);
|
|
mat4_t mat4_to_rot(mat4_t m);
|
|
vec4_t mat4_right(mat4_t m);
|
|
vec4_t mat4_look(mat4_t m);
|
|
vec4_t mat4_up(mat4_t m);
|
|
f32_array_t *mat4_to_f32_array(mat4_t m);
|
|
float mat4_cofactor(float m0, float m1, float m2, float m3, float m4, float m5, float m6, float m7, float m8);
|
|
float mat4_determinant(mat4_t m);
|
|
mat4_t mat4_nan();
|
|
bool mat4_isnan(mat4_t m);
|
|
|
|
#define mat4nan (mat4_nan())
|