2023-10-15 08:07:33 +00:00
|
|
|
|
|
|
|
#ifndef TC_MATH_H
|
|
|
|
#define TC_MATH_H
|
|
|
|
|
|
|
|
#include <utility/utility.h>
|
|
|
|
|
|
|
|
typedef struct tc_vec4f tc_vec4f_s;
|
|
|
|
typedef struct tc_vec3f tc_vec3f_s;
|
|
|
|
typedef struct tc_vec2f tc_vec2f_s;
|
|
|
|
|
|
|
|
typedef struct tc_vec4i tc_vec4i_s;
|
|
|
|
typedef struct tc_vec3i tc_vec3i_s;
|
|
|
|
typedef struct tc_vec2i tc_vec2i_s;
|
|
|
|
|
|
|
|
typedef struct tc_mat4f tc_mat4f_s;
|
|
|
|
typedef struct tc_mat3f tc_mat3f_s;
|
|
|
|
|
|
|
|
struct tc_vec4f
|
|
|
|
{
|
|
|
|
f32_t x;
|
|
|
|
f32_t y;
|
|
|
|
f32_t z;
|
|
|
|
f32_t w;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_vec3f
|
|
|
|
{
|
|
|
|
f32_t x;
|
|
|
|
f32_t y;
|
|
|
|
f32_t z;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_vec2f
|
|
|
|
{
|
|
|
|
f32_t x;
|
|
|
|
f32_t y;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_vec4i
|
|
|
|
{
|
|
|
|
i32_t x;
|
|
|
|
i32_t y;
|
|
|
|
i32_t z;
|
|
|
|
i32_t w;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_vec3i
|
|
|
|
{
|
|
|
|
i32_t x;
|
|
|
|
i32_t y;
|
|
|
|
i32_t z;
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_vec2i
|
|
|
|
{
|
|
|
|
i32_t x;
|
|
|
|
i32_t y;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct tc_mat4f
|
|
|
|
{
|
|
|
|
f32_t values[4][4];
|
|
|
|
};
|
|
|
|
|
|
|
|
struct tc_mat3f
|
|
|
|
{
|
|
|
|
f32_t values[3][3];
|
|
|
|
};
|
|
|
|
|
|
|
|
f32_t tc_deg_to_rad (f32_t degrees);
|
|
|
|
f32_t tc_rad_to_deg (f32_t radians);
|
|
|
|
|
2023-10-17 20:13:54 +00:00
|
|
|
i64_t tc_min (i64_t first, i64_t second);
|
|
|
|
|
2023-10-15 08:07:33 +00:00
|
|
|
bool_t tc_vec4f_equ (tc_vec4f_s vector_1, tc_vec4f_s vector_2);
|
|
|
|
bool_t tc_vec3f_equ (tc_vec3f_s vector_1, tc_vec3f_s vector_2);
|
|
|
|
bool_t tc_vec2f_equ (tc_vec2f_s vector_1, tc_vec2f_s vector_2);
|
|
|
|
|
|
|
|
bool_t tc_vec4i_equ (tc_vec4i_s vector_1, tc_vec4i_s vector_2);
|
|
|
|
bool_t tc_vec3i_equ (tc_vec3i_s vector_1, tc_vec3i_s vector_2);
|
|
|
|
bool_t tc_vec2i_equ (tc_vec2i_s vector_1, tc_vec2i_s vector_2);
|
|
|
|
|
|
|
|
tc_mat4f_s tc_mat4f_identity ();
|
|
|
|
tc_mat3f_s tc_mat3f_identity ();
|
|
|
|
|
|
|
|
tc_mat4f_s tc_mat4_rotate_x (tc_mat4f_s matrix, float radians);
|
|
|
|
tc_mat4f_s tc_mat4_rotate_y (tc_mat4f_s matrix, float radians);
|
|
|
|
tc_mat4f_s tc_mat4_rotate_z (tc_mat4f_s matrix, float radians);
|
|
|
|
|
|
|
|
tc_mat4f_s tc_mat4f_translate (tc_mat4f_s matrix, tc_vec3f_s translation);
|
|
|
|
tc_mat3f_s tc_mat3f_translate (tc_mat3f_s matrix, tc_vec3f_s translation);
|
|
|
|
|
|
|
|
tc_mat4f_s tc_mat4f_perspective (float fov, float aspect_ratio, float near, float far);
|
|
|
|
|
|
|
|
#endif // TC_MATH_H
|
|
|
|
|