vec.h (1129B)
1 #ifndef VEC_H 2 #define VEC_H 3 4 #include "types.h" 5 6 f32 radians(f32 degrees); 7 8 typedef i32 IVec3[3]; 9 10 b8 IVec3_equal(const IVec3 a, const IVec3 b); 11 12 typedef f32 Vec3[3]; 13 14 void Vec3_set(f32 x, f32 y, f32 z, Vec3 dst); 15 16 // dst = src * scale 17 void Vec3_scale(const Vec3 src, float scale, Vec3 dst); 18 19 // dst = src_a + src_b 20 void Vec3_add(const Vec3 src_a, const Vec3 src_b, Vec3 dst); 21 22 // dst = src_a - src_b 23 void Vec3_sub(const Vec3 src_a, const Vec3 src_b, Vec3 dst); 24 25 // dst = src_a x src_b 26 void Vec3_mul(const Vec3 src_a, const Vec3 src_b, Vec3 dst); 27 28 // dst = src / ||src|| 29 void Vec3_normalize(const Vec3 src, Vec3 dst); 30 31 // src_a * src_b 32 f32 Vec3_dot(const Vec3 src_a, const Vec3 src_b); 33 34 // ||src||^2 35 f32 Vec3_magSquared(const Vec3 src); 36 37 // ||src|| 38 f32 Vec3_mag(const Vec3 src); 39 40 typedef f32 Mat4[4][4]; 41 42 // dst = src_a * src_b 43 void Mat4_mul(const Mat4 src_a, const Mat4 src_b, Mat4 dst); 44 45 // Computes the view matrix. 46 void Mat4_lookAt(const Vec3 camera, const Vec3 target, const Vec3 up, Mat4 dst); 47 48 // Computes the perspective projection matrix. 49 void Mat4_perspective(f32 fov, f32 aspect, f32 near, f32 far, Mat4 dst); 50 51 #endif