terrain

Real-time terrain generation using marching cubes
git clone git://git.christianermann.dev/terrain
Log | Files | Refs | README | LICENSE

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