normalize: norm == 0.0f to norm < FLT_EPSILON, improving handling of very small vectors to prevent instability and overflow

This commit is contained in:
Recep Aslantas
2024-03-25 02:22:46 +03:00
parent 6a7d03bafb
commit 1de373a9bd
8 changed files with 30 additions and 22 deletions

View File

@@ -278,7 +278,7 @@ glm_vec2_scale_as(vec2 v, float s, vec2 dest) {
float norm;
norm = glm_vec2_norm(v);
if (norm == 0.0f) {
if (CGLM_UNLIKELY(norm < FLT_EPSILON)) {
glm_vec2_zero(dest);
return;
}
@@ -542,7 +542,7 @@ glm_vec2_normalize(vec2 v) {
norm = glm_vec2_norm(v);
if (norm == 0.0f) {
if (CGLM_UNLIKELY(norm < FLT_EPSILON)) {
v[0] = v[1] = 0.0f;
return;
}
@@ -563,7 +563,7 @@ glm_vec2_normalize_to(vec2 v, vec2 dest) {
norm = glm_vec2_norm(v);
if (norm == 0.0f) {
if (CGLM_UNLIKELY(norm < FLT_EPSILON)) {
glm_vec2_zero(dest);
return;
}