diff --git a/include/cglm/util.h b/include/cglm/util.h index 3782af0..321b152 100644 --- a/include/cglm/util.h +++ b/include/cglm/util.h @@ -146,6 +146,17 @@ glm_clamp(float val, float minVal, float maxVal) { return glm_min(glm_max(val, minVal), maxVal); } +/*! + * @brief clamp a number to zero and one + * + * @param[in] val value to clamp + */ +CGLM_INLINE +float +glm_clamp_zo(float val) { + return glm_clamp(val, 0.0f, 1.0f); +} + /*! * @brief linear interpolation between two number * @@ -158,7 +169,7 @@ glm_clamp(float val, float minVal, float maxVal) { CGLM_INLINE float glm_lerp(float from, float to, float t) { - return from + glm_clamp(t, 0.0f, 1.0f) * (to - from); + return from + glm_clamp_zo(t) * (to - from); } /*! diff --git a/include/cglm/vec3.h b/include/cglm/vec3.h index 18d8a7b..fc763a7 100644 --- a/include/cglm/vec3.h +++ b/include/cglm/vec3.h @@ -736,7 +736,7 @@ glm_vec_lerp(vec3 from, vec3 to, float t, vec3 dest) { vec3 s, v; /* from + s * (to - from) */ - glm_vec_broadcast(glm_clamp(t, 0.0f, 1.0f), s); + glm_vec_broadcast(glm_clamp_zo(t), s); glm_vec_sub(to, from, v); glm_vec_mulv(s, v, v); glm_vec_add(from, v, dest); diff --git a/include/cglm/vec4.h b/include/cglm/vec4.h index 3b3a452..fa9f82c 100644 --- a/include/cglm/vec4.h +++ b/include/cglm/vec4.h @@ -698,7 +698,7 @@ glm_vec4_lerp(vec4 from, vec4 to, float t, vec4 dest) { vec4 s, v; /* from + s * (to - from) */ - glm_vec4_broadcast(glm_clamp(t, 0.0f, 1.0f), s); + glm_vec4_broadcast(glm_clamp_zo(t), s); glm_vec4_sub(to, from, v); glm_vec4_mulv(s, v, v); glm_vec4_add(from, v, dest);