Add vec_sub, vec_norm, vec_to_ang and RAD2DEG to util
This commit is contained in:
parent
9f64f544de
commit
e9f3031ca1
|
@ -14,7 +14,8 @@ typedef struct {
|
||||||
uint8_t r, g, b;
|
uint8_t r, g, b;
|
||||||
} rgb_t;
|
} rgb_t;
|
||||||
|
|
||||||
#define DEG2RAD(n) ((n)*M_PI / 180.0)
|
#define DEG2RAD(n) ((n)*M_PI / 180.0f)
|
||||||
|
#define RAD2DEG(n) ((n)*180.0f / M_PI)
|
||||||
#define CLAMP(val, min, max) \
|
#define CLAMP(val, min, max) \
|
||||||
(((val) > (max)) ? (max) : (((val) < (min)) ? (min) : (val)))
|
(((val) > (max)) ? (max) : (((val) < (min)) ? (min) : (val)))
|
||||||
|
|
||||||
|
@ -32,10 +33,13 @@ game_id get_cur_game(void);
|
||||||
vec3_t vec3(float x, float y, float z);
|
vec3_t vec3(float x, float y, float z);
|
||||||
void vec_copy(vec3_t* dst, const vec3_t* src);
|
void vec_copy(vec3_t* dst, const vec3_t* src);
|
||||||
vec3_t vec_add(vec3_t a, vec3_t b);
|
vec3_t vec_add(vec3_t a, vec3_t b);
|
||||||
|
vec3_t vec_sub(vec3_t a, vec3_t b);
|
||||||
bool vec_is_zero(vec3_t v);
|
bool vec_is_zero(vec3_t v);
|
||||||
float vec_len2d(vec3_t v);
|
float vec_len2d(vec3_t v);
|
||||||
void vec_clamp(vec3_t v);
|
void vec_clamp(vec3_t v);
|
||||||
|
void vec_norm(vec3_t v);
|
||||||
float angle_delta_rad(float a, float b);
|
float angle_delta_rad(float a, float b);
|
||||||
|
vec3_t vec_to_ang(vec3_t v);
|
||||||
vec3_t matrix_3x4_origin(matrix_3x4 m);
|
vec3_t matrix_3x4_origin(matrix_3x4 m);
|
||||||
bool world_to_screen(vec3_t vec, vec2_t screen);
|
bool world_to_screen(vec3_t vec, vec2_t screen);
|
||||||
void engine_draw_text(int x, int y, char* s, rgb_t c);
|
void engine_draw_text(int x, int y, char* s, rgb_t c);
|
||||||
|
|
20
src/util.c
20
src/util.c
|
@ -110,6 +110,10 @@ vec3_t vec_add(vec3_t a, vec3_t b) {
|
||||||
return vec3(a.x + b.x, a.y + b.y, a.z + b.z);
|
return vec3(a.x + b.x, a.y + b.y, a.z + b.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3_t vec_sub(vec3_t a, vec3_t b) {
|
||||||
|
return vec3(a.x - b.x, a.y - b.y, a.z - b.z);
|
||||||
|
}
|
||||||
|
|
||||||
bool vec_is_zero(vec3_t v) {
|
bool vec_is_zero(vec3_t v) {
|
||||||
return v.x == 0.0f && v.y == 0.0f && v.z == 0.0f;
|
return v.x == 0.0f && v.y == 0.0f && v.z == 0.0f;
|
||||||
}
|
}
|
||||||
|
@ -124,6 +128,12 @@ void vec_clamp(vec3_t v) {
|
||||||
v.z = CLAMP(v.z, -50.0f, 50.0f);
|
v.z = CLAMP(v.z, -50.0f, 50.0f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vec_norm(vec3_t v) {
|
||||||
|
v.x = isfinite(v.x) ? remainderf(v.x, 360.0f) : 0.0f;
|
||||||
|
v.y = isfinite(v.y) ? remainderf(v.y, 360.0f) : 0.0f;
|
||||||
|
v.z = 0.0f;
|
||||||
|
}
|
||||||
|
|
||||||
float angle_delta_rad(float a, float b) {
|
float angle_delta_rad(float a, float b) {
|
||||||
float delta = isfinite(a - b) ? remainder(a - b, 360) : 0;
|
float delta = isfinite(a - b) ? remainder(a - b, 360) : 0;
|
||||||
|
|
||||||
|
@ -135,6 +145,16 @@ float angle_delta_rad(float a, float b) {
|
||||||
return delta;
|
return delta;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3_t vec_to_ang(vec3_t v) {
|
||||||
|
vec3_t ret;
|
||||||
|
|
||||||
|
ret.x = RAD2DEG(atan2(-v.z, hypot(v.x, v.y)));
|
||||||
|
ret.y = RAD2DEG(atan2(v.y, v.x));
|
||||||
|
ret.z = 0.0f;
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
vec3_t matrix_3x4_origin(matrix_3x4 m) {
|
vec3_t matrix_3x4_origin(matrix_3x4 m) {
|
||||||
vec3_t ret;
|
vec3_t ret;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue