From e4be2e9322303d7d1d1c22c8c857aaa8c08f2826 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 5 Nov 2020 16:51:07 +0300 Subject: [PATCH] Move point-segment distance to distance.hpp --- libs/geom/include/psemek/geom/distance.hpp | 14 ++++++++++++++ libs/geom/include/psemek/geom/simplex.hpp | 14 -------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/libs/geom/include/psemek/geom/distance.hpp b/libs/geom/include/psemek/geom/distance.hpp index a1935210..e4c154cf 100644 --- a/libs/geom/include/psemek/geom/distance.hpp +++ b/libs/geom/include/psemek/geom/distance.hpp @@ -3,6 +3,7 @@ #include #include #include +#include namespace psemek::geom { @@ -21,4 +22,17 @@ namespace psemek::geom return std::sqrt(s); } + template + T distance(point const & p, segment> const & s) + { + T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]); + + 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)); + } + } diff --git a/libs/geom/include/psemek/geom/simplex.hpp b/libs/geom/include/psemek/geom/simplex.hpp index bd6ff329..39483864 100644 --- a/libs/geom/include/psemek/geom/simplex.hpp +++ b/libs/geom/include/psemek/geom/simplex.hpp @@ -43,18 +43,4 @@ namespace psemek::geom return os << ')'; } - template - T distance(point const & p, segment> const & s) - { - T const t = dot(p - s[0], s[1] - s[0]) / length_sqr(s[1] - s[0]); - - 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)); - - } - }