From 76dd07c2661dc6bddcbac1afe26c25e62ad6a6dd Mon Sep 17 00:00:00 2001 From: lisyarus Date: Thu, 5 Nov 2020 16:44:15 +0300 Subject: [PATCH] Add segment-simplex intersection --- libs/geom/include/psemek/geom/intersection.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libs/geom/include/psemek/geom/intersection.hpp b/libs/geom/include/psemek/geom/intersection.hpp index 68cdafe1..e2567707 100644 --- a/libs/geom/include/psemek/geom/intersection.hpp +++ b/libs/geom/include/psemek/geom/intersection.hpp @@ -168,4 +168,19 @@ namespace psemek::geom return static_cast(intersection(r, s)); } + template 2)>> + std::optional intersection(segment> const & seg, simplex, N - 1> const & s) + { + auto i = intersection(ray{seg[0], seg[1] - seg[0]}, s); + if (!i || *i < 0 || *i > 1) + return std::nullopt; + return i; + } + + template 2)>> + bool intersect(segment> const & seg, simplex const & s) + { + return static_cast(intersection(seg, s)); + } + }