X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=gph-cmath;a=blobdiff_plain;f=src%2Fcgmath.h;h=33b07178dd3a2ef36321d698c859528edd32ce5f;hp=12d9795a1362cf9acfa28228bf05e7d84ddf597c;hb=c5a2f08ca01ec6f3b8f6974634c6adad72b61fa8;hpb=859349dbac272d5308a3ee5028e269a4ccffef2a diff --git a/src/cgmath.h b/src/cgmath.h index 12d9795..33b0717 100644 --- a/src/cgmath.h +++ b/src/cgmath.h @@ -1,4 +1,4 @@ -/* C version of the graphene math library +/* gph-cmath - C graphics math library * Copyright (C) 2018 John Tsiombikas * * This program is free software. Feel free to use, modify, and/or redistribute @@ -18,7 +18,7 @@ * * NOTE: matrices are treated by all operations as column-major, to match OpenGL * conventions, so everything is pretty much transposed. - */ +*/ #ifndef CGMATH_H_ #define CGMATH_H_ @@ -134,9 +134,9 @@ 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); -static inline float cgm_msubdet(float *m, int row, int col); -static inline float cgm_mcofactor(float *m, int row, int col); -static inline float cgm_mdet(float *m); +static inline float cgm_msubdet(const float *m, int row, int col); +static inline float cgm_mcofactor(const float *m, int row, int col); +static inline float cgm_mdet(const float *m); 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 */ @@ -168,6 +168,24 @@ 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); +static inline void cgm_mget_translation(const float *m, cgm_vec3 *res); +static inline void cgm_mget_rotation(const float *m, cgm_quat *res); +static inline void cgm_mget_scaling(const float *m, cgm_vec3 *res); +static inline void cgm_mget_frustum_plane(const float *m, int p, cgm_vec4 *res); + +static inline void cgm_mlookat(float *m, const cgm_vec3 *pos, const cgm_vec3 *targ, + const cgm_vec3 *up); +static inline void cgm_minv_lookat(float *m, const cgm_vec3 *pos, const cgm_vec3 *targ, + const cgm_vec3 *up); +static inline void cgm_mortho(float *m, float left, float right, float bot, float top, + float znear, float zfar); +static inline void cgm_mfrustum(float *m, float left, float right, float bot, float top, + float znear, float zfar); +static inline void cgm_mperspective(float *m, float vfov, float aspect, float znear, float zfar); + +static inline void cgm_mmirror(float *m, float a, float b, float c, float d); + + #include "cgmvec3.inl" #include "cgmvec4.inl" #include "cgmquat.inl"