X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=gph-cmath;a=blobdiff_plain;f=src%2Fcgmath.h;fp=src%2Fcgmath.h;h=60b4b927409c68b3c3d4e590070265dbff6cfd79;hp=c033a22b0569756d5137d5aa9b203e3f6e6d986a;hb=63b42239ff7d94b05e909419e570e7c525082b3b;hpb=b5babc8bdd95af48fc377bb888c70aad4956d58a diff --git a/src/cgmath.h b/src/cgmath.h index c033a22..60b4b92 100644 --- a/src/cgmath.h +++ b/src/cgmath.h @@ -12,6 +12,10 @@ typedef struct { float x, y, z, w; } cgm_quat; +/* vectors */ +static inline void cgm_vzero(cgm_vec3 *v); +static inline void cgm_vone(cgm_vec3 *v); + static inline void cgm_vadd(cgm_vec3 *a, const cgm_vec3 *b); static inline void cgm_vsub(cgm_vec3 *a, const cgm_vec3 *b); static inline void cgm_vmul(cgm_vec3 *a, const cgm_vec3 *b); @@ -25,6 +29,29 @@ static inline float cgm_vdist(const cgm_vec3 *a, const cgm_vec3 *b); static inline float cgm_vdist_sq(const cgm_vec3 *a, const cgm_vec3 *b); static inline void cgm_vnormalize(cgm_vec3 *v); +/* quaternions */ +static inline void cgm_qident(cgm_quat *q); + +static inline void cgm_qneg(cgm_quat *q); +static inline void cgm_qadd(cgm_quat *a, const cgm_quat *b); +static inline void cgm_qsub(cgm_quat *a, const cgm_quat *b); +static inline void cgm_qmul(cgm_quat *a, const cgm_quat *b); + +static inline float cgm_qlength(const cgm_quat *q); +static inline float cgm_qlength_sq(const cgm_quat *q); + +static inline void cgm_qnormalize(cgm_quat *q); + +static inline void cgm_qconjugate(cgm_quat *q); +static inline void cgm_qinvert(cgm_quat *q); + +static inline void cgm_qrot_axis(cgm_quat *q, float axis, float x, float y, float z); +static inline void cgm_qrot_quat(cgm_quat *q, const cgm_quat *rq); + +static inline void cgm_qmatrix(float *mat, const cgm_quat *q); + +static inline void cgm_qslerp(cgm_quat *res, const cgm_quat *a, const cgm_quat *b, float t); + #include "cgmath.inl" #endif /* CGMATH_H_ */