1 static inline void cgm_mcopy(float *dest, const float *src)
3 memcpy(dest, src, 16 * sizeof(float));
6 static inline void cgm_mzero(float *m)
12 static inline void cgm_midentity(float *m)
14 static float id[16] = {1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1};
18 static inline void cgm_msetrow_v3(float *m, int idx, const cgm_vec3 *v)
26 static inline void cgm_msetrow_v4(float *m, int idx, const cgm_vec4 *v)
34 static inline void cgm_msetcol_v3(float *m, int idx, const cgm_vec3 *v)
37 m[idx * 4 + 1] = v->y;
38 m[idx * 4 + 2] = v->z;
39 m[idx * 4 + 3] = 0.0f;
42 static inline void cgm_msetcol_v4(float *m, int idx, const cgm_vec4 *v)
45 m[idx * 4 + 1] = v->y;
46 m[idx * 4 + 2] = v->z;
47 m[idx * 4 + 3] = v->w;
50 static inline void cgm_mgetrow_v3(cgm_vec3 *v, const float *m, int idx)
57 static inline void cgm_mgetrow_v4(cgm_vec4 *v, const float *m, int idx)
65 static inline void cgm_mgetcol_v3(cgm_vec3 *v, const float *m, int idx)
68 v->y = m[idx * 4 + 1];
69 v->z = m[idx * 4 + 2];
72 static inline void cgm_mgetcol_v4(cgm_vec4 *v, const float *m, int idx)
75 v->y = m[idx * 4 + 1];
76 v->z = m[idx * 4 + 2];
77 v->w = m[idx * 4 + 3];
80 static inline void cgm_msubmatrix(float *m, int row, int col)
90 if(si == i && sj == j) continue;
92 m[i * 4 + j] = m[si * 4 + sj];
97 static inline void cgm_mupper3(float *m)
99 m[3] = m[7] = m[11] = m[12] = m[13] = m[14] = 0.0f;