Add unit vector utilities
This commit is contained in:
parent
a4e67ebc18
commit
0b7ca65967
@ -30,29 +30,34 @@ typedef struct {
|
||||
#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
|
||||
|
@ -22,6 +22,11 @@ i32 vec_magnitude_vec2i_t(vec2i_t v) {
|
||||
return (i32)sqrtf((f32)dot_product);
|
||||
}
|
||||
|
||||
vec2i_t vec_unit_vec2i_t(vec2i_t v) {
|
||||
i32 magnitude = vec_magnitude_vec2i_t(v);
|
||||
return (vec2i_t){v.x / magnitude, v.y / magnitude};
|
||||
}
|
||||
|
||||
vec2f_t vec_add_vec2f_t(vec2f_t v1, vec2f_t v2) {
|
||||
return (vec2f_t){.x = v1.x + v2.x, .y = v1.y + v2.y};
|
||||
}
|
||||
@ -43,6 +48,11 @@ f32 vec_magnitude_vec2f_t(vec2f_t v) {
|
||||
return sqrtf(dot_product);
|
||||
}
|
||||
|
||||
vec2f_t vec_unit_vec2f_t(vec2f_t v) {
|
||||
f32 magnitude = vec_magnitude_vec2f_t(v);
|
||||
return (vec2f_t){v.x / magnitude, v.y / magnitude};
|
||||
}
|
||||
|
||||
vec3i_t vec_add_vec3i_t(vec3i_t v1, vec3i_t v2) {
|
||||
return (vec3i_t){.x = v1.x + v2.x, .y = v1.y + v2.y, .z = v1.z + v2.z};
|
||||
}
|
||||
@ -64,6 +74,11 @@ i32 vec_magnitude_vec3i_t(vec3i_t v) {
|
||||
return (i32)sqrtf((f32)dot_product);
|
||||
}
|
||||
|
||||
vec3i_t vec_unit_vec3i_t(vec3i_t v) {
|
||||
i32 magnitude = vec_magnitude_vec3i_t(v);
|
||||
return (vec3i_t){v.x / magnitude, v.y / magnitude, v.z / magnitude};
|
||||
}
|
||||
|
||||
vec3f_t vec_add_vec3f_t(vec3f_t v1, vec3f_t v2) {
|
||||
return (vec3f_t){.x = v1.x + v2.x, .y = v1.y + v2.y, .z = v1.z + v2.z};
|
||||
}
|
||||
@ -84,3 +99,8 @@ f32 vec_magnitude_vec3f_t(vec3f_t v) {
|
||||
f32 dot_product = vec_dot_vec3f_t(v, v);
|
||||
return sqrtf(dot_product);
|
||||
}
|
||||
|
||||
vec3f_t vec_unit_vec3f_t(vec3f_t v) {
|
||||
f32 magnitude = vec_magnitude_vec3f_t(v);
|
||||
return (vec3f_t){v.x / magnitude, v.y / magnitude, v.z / magnitude};
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user