engine

game engine on C
git clone git://git.evenfri.pw/engine.git
Log | Files | Refs | README

vec3.c (660B)


      1 #include <math.h>
      2 #include "engine.h"
      3 
      4 vec3 vec3_make(float x, float y, float z) {
      5   vec3 v = {x, y, z}; 
      6   return v;
      7 }
      8 
      9 vec3 vec3_sub(vec3 a, vec3 b) { 
     10   return vec3_make(a.x - b.x, a.y - b.y, a.z - b.z); 
     11 }
     12 
     13 vec3 vec3_scale(vec3 a, float s) { 
     14   return vec3_make(a.x * s, a.y * s, a.z * s);  
     15 }
     16 
     17 float vec3_dot(vec3 a, vec3 b) { 
     18   return a.x * b.x + a.y * b.y + a.z * b.z; 
     19 }
     20 
     21 vec3 vec3_cross(vec3 a, vec3 b) {
     22   return vec3_make(a.y * b.z - a.z * b.y,
     23       a.z * b.x - a.x * b.z,
     24       a.x * b.y - a.y * b.x);
     25 }
     26 
     27 vec3 vec3_norm(vec3 a) {
     28   float l = sqrtf(vec3_dot(a, a));
     29   if (l < 1e-6f) return vec3_make(0, 0, 0);
     30   return vec3_scale(a, 1.0f / l);
     31 }
     32