From 621fac845141b81f04bcd02f26e691465fab1e32 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 5 Nov 2020 16:50:25 +0300 Subject: [PATCH] Rewrite point-segment distance --- libs/geom/include/psemek/geom/simplex.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/libs/geom/include/psemek/geom/simplex.hpp b/libs/geom/include/psemek/geom/simplex.hpp index 3ff6b1a9..bd6ff329 100644 --- a/libs/geom/include/psemek/geom/simplex.hpp +++ b/libs/geom/include/psemek/geom/simplex.hpp @@ -48,10 +48,13 @@ namespace psemek::geom { T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]); - if (t >= 0 && t <= 1) + if (t <= 0) + return distance(p, s[0]); + else if (t >= 1) + return distance(p, s[1]); + else return distance(p, lerp(s[0], s[1], t)); - return std::min(distance(p, s[0]), distance(p, s[1])); } }