Add cross product for 3D vectors
This commit is contained in:
parent
94287ff081
commit
83fa308a4b
@ -64,6 +64,7 @@ typedef struct {
|
|||||||
#define vec_mul_num(T, v1, num) vec_mul_num_##T(v1, num)
|
#define vec_mul_num(T, v1, num) vec_mul_num_##T(v1, num)
|
||||||
#define vec_div_num(T, v1, num) vec_div_num_##T(v1, num)
|
#define vec_div_num(T, v1, num) vec_div_num_##T(v1, num)
|
||||||
#define vec_dot(T, v1, v2) vec_dot_##T(v1, v2)
|
#define vec_dot(T, v1, v2) vec_dot_##T(v1, v2)
|
||||||
|
#define vec_cross(T, v1, v2) vec_cross_##T(v1, v2)
|
||||||
#define vec_magnitude(T, v) vec_magnitude_##T(v)
|
#define vec_magnitude(T, v) vec_magnitude_##T(v)
|
||||||
#define vec_unit(T, v) vec_unit_##T(v)
|
#define vec_unit(T, v) vec_unit_##T(v)
|
||||||
|
|
||||||
@ -91,6 +92,7 @@ vec3i_t vec_mul_vec3i_t(vec3i_t v1, vec3i_t v2);
|
|||||||
vec3i_t vec_mul_num_vec3i_t(vec3i_t v1, i32 num);
|
vec3i_t vec_mul_num_vec3i_t(vec3i_t v1, i32 num);
|
||||||
vec3i_t vec_div_num_vec3i_t(vec3i_t v1, i32 num);
|
vec3i_t vec_div_num_vec3i_t(vec3i_t v1, i32 num);
|
||||||
i32 vec_dot_vec3i_t(vec3i_t v1, vec3i_t v2);
|
i32 vec_dot_vec3i_t(vec3i_t v1, vec3i_t v2);
|
||||||
|
vec3i_t vec_cross_vec3i_t(vec3i_t v1, vec3i_t v2);
|
||||||
i32 vec_magnitude_vec3i_t(vec3i_t v);
|
i32 vec_magnitude_vec3i_t(vec3i_t v);
|
||||||
vec3i_t vec_unit_vec3i_t(vec3i_t v);
|
vec3i_t vec_unit_vec3i_t(vec3i_t v);
|
||||||
|
|
||||||
@ -100,6 +102,7 @@ vec3f_t vec_mul_vec3f_t(vec3f_t v1, vec3f_t v2);
|
|||||||
vec3f_t vec_mul_num_vec3f_t(vec3f_t v1, f32 num);
|
vec3f_t vec_mul_num_vec3f_t(vec3f_t v1, f32 num);
|
||||||
vec3f_t vec_div_num_vec3f_t(vec3f_t v1, f32 num);
|
vec3f_t vec_div_num_vec3f_t(vec3f_t v1, f32 num);
|
||||||
f32 vec_dot_vec3f_t(vec3f_t v1, vec3f_t v2);
|
f32 vec_dot_vec3f_t(vec3f_t v1, vec3f_t v2);
|
||||||
|
vec3f_t vec_cross_vec3f_t(vec3f_t v1, vec3f_t v2);
|
||||||
f32 vec_magnitude_vec3f_t(vec3f_t v);
|
f32 vec_magnitude_vec3f_t(vec3f_t v);
|
||||||
vec3f_t vec_unit_vec3f_t(vec3f_t v);
|
vec3f_t vec_unit_vec3f_t(vec3f_t v);
|
||||||
vec3f_t vec_rotate_vec3f_t(vec3f_t original, vec3f_t rotation);
|
vec3f_t vec_rotate_vec3f_t(vec3f_t original, vec3f_t rotation);
|
||||||
|
@ -94,6 +94,14 @@ i32 vec_dot_vec3i_t(vec3i_t v1, vec3i_t v2) {
|
|||||||
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
|
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3i_t vec_cross_vec3i_t(vec3i_t v1, vec3i_t v2) {
|
||||||
|
return (vec3i_t){
|
||||||
|
.x = v1.y * v2.z - v1.z * v2.y,
|
||||||
|
.y = v1.z * v2.x - v1.x * v2.z,
|
||||||
|
.z = v1.x * v2.y - v1.y * v2.x,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
i32 vec_magnitude_vec3i_t(vec3i_t v) {
|
i32 vec_magnitude_vec3i_t(vec3i_t v) {
|
||||||
i32 dot_product = vec_dot_vec3i_t(v, v);
|
i32 dot_product = vec_dot_vec3i_t(v, v);
|
||||||
return (i32)sqrtf((f32)dot_product);
|
return (i32)sqrtf((f32)dot_product);
|
||||||
@ -128,6 +136,14 @@ f32 vec_dot_vec3f_t(vec3f_t v1, vec3f_t v2) {
|
|||||||
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
|
return v1.x * v2.x + v1.y * v2.y + v1.z * v2.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
vec3f_t vec_cross_vec3f_t(vec3f_t v1, vec3f_t v2) {
|
||||||
|
return (vec3f_t){
|
||||||
|
.x = v1.y * v2.z - v1.z * v2.y,
|
||||||
|
.y = v1.z * v2.x - v1.x * v2.z,
|
||||||
|
.z = v1.x * v2.y - v1.y * v2.x,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
f32 vec_magnitude_vec3f_t(vec3f_t v) {
|
f32 vec_magnitude_vec3f_t(vec3f_t v) {
|
||||||
f32 dot_product = vec_dot_vec3f_t(v, v);
|
f32 dot_product = vec_dot_vec3f_t(v, v);
|
||||||
return sqrtf(dot_product);
|
return sqrtf(dot_product);
|
||||||
|
Loading…
Reference in New Issue
Block a user