X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=vg_m.h;h=2a5082d9b813c53687fb60254b47b5c141836caa;hb=e1f9315d807caad59c038b0796cf8792e1f96a9e;hp=3c78466b68ca046f23890a14aaf033bf36f3be55;hpb=0aea2ef68a5ed32fc940673402a1b4b67f38d4d3;p=vg.git diff --git a/vg_m.h b/vg_m.h index 3c78466..2a5082d 100644 --- a/vg_m.h +++ b/vg_m.h @@ -269,6 +269,11 @@ static inline void v3_add( v3f a, v3f b, v3f d ) d[0] = a[0]+b[0]; d[1] = a[1]+b[1]; d[2] = a[2]+b[2]; } +static inline void v3i_add( v3i a, v3i b, v3i d ) +{ + d[0] = a[0]+b[0]; d[1] = a[1]+b[1]; d[2] = a[2]+b[2]; +} + static inline void v4_add( v4f a, v4f b, v4f d ) { d[0] = a[0]+b[0]; @@ -282,6 +287,11 @@ static inline void v3_sub( v3f a, v3f b, v3f d ) d[0] = a[0]-b[0]; d[1] = a[1]-b[1]; d[2] = a[2]-b[2]; } +static inline void v3i_sub( v3i a, v3i b, v3i d ) +{ + d[0] = a[0]-b[0]; d[1] = a[1]-b[1]; d[2] = a[2]-b[2]; +} + static inline void v3_mul( v3f a, v3f b, v3f d ) { d[0] = a[0]*b[0]; d[1] = a[1]*b[1]; d[2] = a[2]*b[2]; @@ -1376,8 +1386,7 @@ static inline void q_inv( v4f q, v4f d ) static inline void q_nlerp( v4f a, v4f b, float t, v4f d ) { - if( v4_dot(a,b) < 0.0f ) - { + if( v4_dot(a,b) < 0.0f ){ v4_muls( b, -1.0f, d ); v4_lerp( a, d, t, d ); } @@ -2036,6 +2045,7 @@ static int spherecast_triangle( v3f tri[3], static inline float vg_randf(void) { + /* TODO: replace with our own rand */ return (float)rand()/(float)(RAND_MAX); } @@ -2073,4 +2083,13 @@ static void eval_bezier_time( v3f p0, v3f p1, v3f h0, v3f h1, float t, v3f p ) v3_muladds( p, p0, 3.0f*tt -ttt -3.0f*t +1.0f, p ); } +static void eval_bezier3( v3f p0, v3f p1, v3f p2, float t, v3f p ) +{ + float u = 1.0f-t; + + v3_muls( p0, u*u, p ); + v3_muladds( p, p1, 2.0f*u*t, p ); + v3_muladds( p, p2, t*t, p ); +} + #endif /* VG_M_H */