static inline void m3x3_scale( m3x3f m, v3f v )
{
- m[0][0] = m[0][0] * v[0];
- m[0][1] = m[0][1] * v[0];
- m[0][2] = m[0][2] * v[0];
+ v3_muls( m[0], v[0], m[0] );
+ v3_muls( m[1], v[1], m[1] );
+ v3_muls( m[2], v[2], m[2] );
+}
- m[1][0] = m[1][0] * v[1];
- m[1][1] = m[1][1] * v[1];
- m[1][2] = m[1][2] * v[1];
+static inline void m3x3_scalef( m3x3f m, float f )
+{
+ v3f v;
+ v3_fill( v, f );
+ m3x3_scale( m, v );
}
static inline void m3x3_rotate( m3x3f m, float angle )
v3_muladds( m[3], m[2], v[2], m[3] );
}
-static inline void m4x3_scale( m4x3f m, float s )
-{
- v3_muls( m[0], s, m[0] );
- v3_muls( m[1], s, m[1] );
- v3_muls( m[2], s, m[2] );
-}
-
-static inline void m4x3_scalev( m4x3f m, v3f v )
-{
- v3_muls(m[0], v[0], m[0]);
- v3_muls(m[1], v[1], m[1]);
- v3_muls(m[2], v[2], m[2]);
-}
-
static inline void m4x3_rotate_x( m4x3f m, float angle )
{
m4x3f t = M4X3_IDENTITY;
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 );
}
static inline float vg_randf(void)
{
+ /* TODO: replace with our own rand */
return (float)rand()/(float)(RAND_MAX);
}
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 */