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)); + } + }