diff --git a/common/mathlib.cc b/common/mathlib.cc index 14726ce7..189cd814 100644 --- a/common/mathlib.cc +++ b/common/mathlib.cc @@ -459,6 +459,10 @@ qvec3f ClosestPointOnLine(const qvec3f &v, const qvec3f &w, const qvec3f &p) const qvec3f vp = p - v; const qvec3f vw_norm = qv::normalize(w - v); + if (qv::emptyExact(vw_norm)) { + return p; + } + const float vp_scalarproj = qv::dot(vp, vw_norm); const qvec3f p_projected_on_vw = v + (vw_norm * vp_scalarproj); diff --git a/include/common/qvec.hh b/include/common/qvec.hh index f684beff..d5a80dc9 100644 --- a/include/common/qvec.hh +++ b/include/common/qvec.hh @@ -470,11 +470,7 @@ template template [[nodiscard]] constexpr bool equalExact(const qvec &v1, const qvec &v2) { - for (size_t i = 0; i < N; i++) { - if (v1[i] != v2[i]) - return false; - } - return true; + return v1 == v2; } template