From 284705b982b8d8dcbb184b1ba45644ced5a46793 Mon Sep 17 00:00:00 2001 From: metalvoidzz Date: Wed, 27 Mar 2019 18:18:35 +0100 Subject: Add the option to avoid inline (c89 compatibility) --- linmath.h | 102 +++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 54 insertions(+), 48 deletions(-) diff --git a/linmath.h b/linmath.h index c1c3ab5..de9bae8 100644 --- a/linmath.h +++ b/linmath.h @@ -3,27 +3,33 @@ #include +#ifdef LINMATH_NO_INLINE +#define LINMATH_H_FUNC static +#else +#define LINMATH_H_FUNC static inline +#endif + #define LINMATH_H_DEFINE_VEC(n) \ typedef float vec##n[n]; \ -static inline void vec##n##_add(vec##n r, vec##n const a, vec##n const b) \ +LINMATH_H_FUNC void vec##n##_add(vec##n r, vec##n const a, vec##n const b) \ { \ int i; \ for(i=0; i Date: Mon, 15 Apr 2019 16:08:07 -0400 Subject: Fix bug in mat4x4_orthonormalize The Gram-Schmidt process was incorrect, resulting in non-orthogonal columns. --- linmath.h | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/linmath.h b/linmath.h index de9bae8..96725e8 100644 --- a/linmath.h +++ b/linmath.h @@ -321,12 +321,11 @@ LINMATH_H_FUNC void mat4x4_orthonormalize(mat4x4 R, mat4x4 M) s = vec3_mul_inner(R[1], R[2]); vec3_scale(h, R[2], s); vec3_sub(R[1], R[1], h); - vec3_norm(R[2], R[2]); + vec3_norm(R[1], R[1]); - s = vec3_mul_inner(R[1], R[2]); + s = vec3_mul_inner(R[0], R[2]); vec3_scale(h, R[2], s); - vec3_sub(R[1], R[1], h); - vec3_norm(R[1], R[1]); + vec3_sub(R[0], R[0], h); s = vec3_mul_inner(R[0], R[1]); vec3_scale(h, R[1], s); -- cgit v1.2.3 From 25f349f408cc56607bed89d8438b0b4fdcba586d Mon Sep 17 00:00:00 2001 From: Shima Date: Sun, 28 Apr 2019 12:07:46 +0500 Subject: Added const qualifier for read-only parameters --- linmath.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/linmath.h b/linmath.h index 96725e8..fe44641 100644 --- a/linmath.h +++ b/linmath.h @@ -46,13 +46,13 @@ LINMATH_H_FUNC void vec##n##_norm(vec##n r, vec##n const v) \ float k = 1.0 / vec##n##_len(v); \ vec##n##_scale(r, v, k); \ } \ -LINMATH_H_FUNC void vec##n##_min(vec##n r, vec##n a, vec##n b) \ +LINMATH_H_FUNC void vec##n##_min(vec##n r, vec##n const a, vec##n const b) \ { \ int i; \ for(i=0; i