64 lines
1.6 KiB
C
64 lines
1.6 KiB
C
#ifndef VEC_H
|
|
#define VEC_H
|
|
|
|
#include "c_cpp_aliases/aliases.h"
|
|
|
|
typedef struct {
|
|
i32 x;
|
|
i32 y;
|
|
} vec2i_t;
|
|
|
|
typedef struct {
|
|
f32 x;
|
|
f32 y;
|
|
} vec2f_t;
|
|
|
|
typedef struct {
|
|
i32 x;
|
|
i32 y;
|
|
i32 z;
|
|
} vec3i_t;
|
|
|
|
typedef struct {
|
|
f32 x;
|
|
f32 y;
|
|
f32 z;
|
|
} vec3f_t;
|
|
|
|
#define vec_add(T, v1, v2) vec_add_##T(v1, v2)
|
|
#define vec_sub(T, v1, v2) vec_sub_##T(v1, v2)
|
|
#define vec_mul(T, v1, v2) vec_mul_##T(v1, v2)
|
|
#define vec_dot(T, v1, v2) vec_dot_##T(v1, v2)
|
|
#define vec_magnitude(T, v) vec_magnitude_##T(v)
|
|
#define vec_unit(T, v) vec_unit_##T(v)
|
|
|
|
vec2i_t vec_add_vec2i_t(vec2i_t v1, vec2i_t v2);
|
|
vec2i_t vec_sub_vec2i_t(vec2i_t v1, vec2i_t v2);
|
|
vec2i_t vec_mul_vec2i_t(vec2i_t v1, vec2i_t v2);
|
|
i32 vec_dot_vec2i_t(vec2i_t v1, vec2i_t v2);
|
|
i32 vec_magnitude_vec2i_t(vec2i_t v);
|
|
vec2i_t vec_unit_vec2i_t(vec2i_t v);
|
|
|
|
vec2f_t vec_add_vec2f_t(vec2f_t v1, vec2f_t v2);
|
|
vec2f_t vec_sub_vec2f_t(vec2f_t v1, vec2f_t v2);
|
|
vec2f_t vec_mul_vec2f_t(vec2f_t v1, vec2f_t v2);
|
|
f32 vec_dot_vec2f_t(vec2f_t v1, vec2f_t v2);
|
|
f32 vec_magnitude_vec2f_t(vec2f_t v);
|
|
vec2f_t vec_unit_vec2f_t(vec2f_t v);
|
|
|
|
vec3i_t vec_add_vec3i_t(vec3i_t v1, vec3i_t v2);
|
|
vec3i_t vec_sub_vec3i_t(vec3i_t v1, vec3i_t v2);
|
|
vec3i_t vec_mul_vec3i_t(vec3i_t v1, vec3i_t v2);
|
|
i32 vec_dot_vec3i_t(vec3i_t v1, vec3i_t v2);
|
|
i32 vec_magnitude_vec3i_t(vec3i_t v);
|
|
vec3i_t vec_unit_vec3i_t(vec3i_t v);
|
|
|
|
vec3f_t vec_add_vec3f_t(vec3f_t v1, vec3f_t v2);
|
|
vec3f_t vec_sub_vec3f_t(vec3f_t v1, vec3f_t v2);
|
|
vec3f_t vec_mul_vec3f_t(vec3f_t v1, vec3f_t v2);
|
|
f32 vec_dot_vec3f_t(vec3f_t v1, vec3f_t v2);
|
|
f32 vec_magnitude_vec3f_t(vec3f_t v);
|
|
vec3f_t vec_unit_vec3f_t(vec3f_t v);
|
|
|
|
#endif // !VEC_H
|