#import "vector.h" #include vector make_vector(float x, float y, float z) { vector v = {x, y, z}; return v; } vector vec_add(vector a, vector b) { return make_vector(a.x + b.x, a.y + b.y, a.z + b.z); } vector vec_sub(vector a, vector b) { return make_vector(a.x - b.x, a.y - b.y, a.z - b.z); } float vec_dot(vector a, vector b) { return a.x * b.x + a.y * b.y + a.z * b.z; } vector vec_cross(vector a, vector b) { return make_vector(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); } vector vec_mult(vector b, float a) { return make_vector(a * b.x, a * b.y, a * b.z); } vector vec_div(vector b, float a) { return make_vector(b.x / a, b.y / a, b.z / a); } vector vec_neg(vector a) { return vec_mult(a, -1); } float vec_mag(vector a) { return sqrt(vec_dot(a, a)); } vector normalize(vector a) { return vec_div(a, vec_mag(a)); } const vector zero_vector = {0,0,0};