X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=gph-cmath;a=blobdiff_plain;f=src%2Fcgmath.h;h=12d9795a1362cf9acfa28228bf05e7d84ddf597c;hp=9ec2fc8bc43c9dd4692dc2a5d965aac668a3cdee;hb=859349dbac272d5308a3ee5028e269a4ccffef2a;hpb=ceeb6a82a05fb8e4a741adf5916085da5fadb11c diff --git a/src/cgmath.h b/src/cgmath.h index 9ec2fc8..12d9795 100644 --- a/src/cgmath.h +++ b/src/cgmath.h @@ -76,8 +76,9 @@ static inline void cgm_vreflect(cgm_vec3 *v, const cgm_vec3 *n); static inline void cgm_vrefract(cgm_vec3 *v, const cgm_vec3 *n, float ior); static inline void cgm_vrotate_quat(cgm_vec3 *v, const cgm_quat *q); -static inline void cgm_vrotate_axis(cgm_vec3 *v, const cgm_vec3 *axis, float angle); -static inline void cgm_vrotate_euler(cgm_vec3 *v, const cgm_vec3 *euler, enum cgm_euler_mode mode); +static inline void cgm_vrotate_axis(cgm_vec3 *v, int axis, float angle); +static inline void cgm_vrotate(cgm_vec3 *v, float angle, float x, float y, float z); +static inline void cgm_vrotate_euler(cgm_vec3 *v, float a, float b, float c, enum cgm_euler_mode mode); static inline void cgm_vlerp(cgm_vec3 *res, const cgm_vec3 *a, const cgm_vec3 *b, float t); @@ -129,14 +130,7 @@ static inline void cgm_mcopy(float *dest, const float *src); static inline void cgm_mzero(float *m); static inline void cgm_midentity(float *m); -static inline void cgm_msetrow_v3(float *m, int idx, const cgm_vec3 *v); -static inline void cgm_msetrow_v4(float *m, int idx, const cgm_vec4 *v); -static inline void cgm_msetcol_v3(float *m, int idx, const cgm_vec3 *v); -static inline void cgm_msetcol_v4(float *m, int idx, const cgm_vec4 *v); -static inline void cgm_mgetrow_v3(cgm_vec3 *v, const float *m, int idx); -static inline void cgm_mgetrow_v4(cgm_vec4 *v, const float *m, int idx); -static inline void cgm_mgetcol_v3(cgm_vec3 *v, const float *m, int idx); -static inline void cgm_mgetcol_v4(cgm_vec4 *v, const float *m, int idx); +static inline void cgm_mmul(float *a, const float *b); static inline void cgm_msubmatrix(float *m, int row, int col); static inline void cgm_mupper3(float *m); @@ -147,6 +141,33 @@ static inline void cgm_mtranspose(float *m); static inline void cgm_mcofmatrix(float *m); static inline int cgm_minverse(float *m); /* returns 0 on success, -1 for singular */ +static inline void cgm_mtranslation(float *m, float x, float y, float z); +static inline void cgm_mscaling(float *m, float sx, float sy, float sz); +static inline void cgm_mrotation_x(float *m, float angle); +static inline void cgm_mrotation_y(float *m, float angle); +static inline void cgm_mrotation_z(float *m, float angle); +static inline void cgm_mrotation_axis(float *m, int idx, float angle); +static inline void cgm_mrotation(float *m, float angle, float x, float y, float z); +static inline void cgm_mrotation_euler(float *m, float a, float b, float c, int mode); + +static inline void cgm_mtranslate(float *m, float x, float y, float z); +static inline void cgm_mscale(float *m, float sx, float sy, float sz); +static inline void cgm_mrotate_x(float *m, float angle); +static inline void cgm_mrotate_y(float *m, float angle); +static inline void cgm_mrotate_z(float *m, float angle); +static inline void cgm_mrotate_axis(float *m, int idx, float angle); +static inline void cgm_mrotate(float *m, float angle, float x, float y, float z); +static inline void cgm_mrotate_euler(float *m, float a, float b, float c, int mode); + +static inline void cgm_mpretranslate(float *m, float x, float y, float z); +static inline void cgm_mprescale(float *m, float sx, float sy, float sz); +static inline void cgm_mprerotate_x(float *m, float angle); +static inline void cgm_mprerotate_y(float *m, float angle); +static inline void cgm_mprerotate_z(float *m, float angle); +static inline void cgm_mprerotate_axis(float *m, int idx, float angle); +static inline void cgm_mprerotate(float *m, float angle, float x, float y, float z); +static inline void cgm_mprerotate_euler(float *m, float a, float b, float c, int mode); + #include "cgmvec3.inl" #include "cgmvec4.inl" #include "cgmquat.inl"