47 lines
1.4 KiB
C
47 lines
1.4 KiB
C
#ifndef MONS_VEC2_H
|
|
#define MONS_VEC2_H
|
|
|
|
typedef struct mons_vec2 {
|
|
float x;
|
|
float y;
|
|
} mons_vec2;
|
|
|
|
mons_vec2 mons_vec2_add(mons_vec2 a, mons_vec2 b);
|
|
void mons_vec2_add_inplace(mons_vec2 *a, mons_vec2 b);
|
|
|
|
mons_vec2 mons_vec2_sub(mons_vec2 a, mons_vec2 b);
|
|
void mons_vec2_sub_inplace(mons_vec2 *a, mons_vec2 b);
|
|
|
|
mons_vec2 mons_vec2_mul_f(mons_vec2 a, float b);
|
|
mons_vec2 mons_vec2_mul_i(mons_vec2 a, int b);
|
|
float mons_vec2_dot(mons_vec2 a, mons_vec2 b);
|
|
|
|
void mons_vec2_mul_f_inplace(mons_vec2 *a, float b);
|
|
void mons_vec2_mul_i_inplace(mons_vec2 *a, int b);
|
|
|
|
mons_vec2 mons_vec2_div_f(mons_vec2 a, float b);
|
|
mons_vec2 mons_vec2_div_i(mons_vec2 a, int b);
|
|
void mons_vec2_div_f_inplace(mons_vec2 *a, float b);
|
|
void mons_vec2_div_i_inplace(mons_vec2 *a, int b);
|
|
|
|
float mons_vec2_len(mons_vec2 a);
|
|
float mons_vec2_len_squared(mons_vec2 a);
|
|
|
|
struct mons_vec3 mons_vec2_extend(mons_vec2 a);
|
|
|
|
int mons_vec2_equal(mons_vec2 a, mons_vec2 b);
|
|
mons_vec2 mons_vec2_negate(mons_vec2 a);
|
|
void mons_vec2_negate_inplace(mons_vec2 *a);
|
|
|
|
mons_vec2 mons_vec2_normalize(mons_vec2 a);
|
|
void mons_vec2_normalize_inplace(mons_vec2 *a);
|
|
|
|
#define MONS_VEC2_ZERO (mons_vec2) { 0, 0 }
|
|
#define MONS_VEC2_ONE (mons_vec2) { 1, 1 }
|
|
#define MONS_VEC2_X (mons_vec2) { 1, 0 }
|
|
#define MONS_VEC2_Y (mons_vec2) { 0, 1 }
|
|
#define MONS_VEC2_NEG_X (mons_vec2) {-1,0}
|
|
#define MONS_VEC2_NEG_Y (mons_vec2) {0,-1}
|
|
|
|
#endif
|