Add segment-simplex intersection

This commit is contained in:
Nikita Lisitsa 2020-11-05 16:44:15 +03:00
parent a1ecc8a2d6
commit 76dd07c266

View file

@ -168,4 +168,19 @@ namespace psemek::geom
return static_cast<bool>(intersection(r, s));
}
template <typename T, std::size_t N, typename = std::enable_if_t<(N > 2)>>
std::optional<T> intersection(segment<point<T, N>> const & seg, simplex<point<T, N>, 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 <typename T, std::size_t N, typename = std::enable_if_t<(N > 2)>>
bool intersect(segment<point<T, N>> const & seg, simplex<T, N> const & s)
{
return static_cast<bool>(intersection(seg, s));
}
}