42#ifndef UFO_CONTAINER_TREE_PREDICATE_INTERSECTS_HPP
43#define UFO_CONTAINER_TREE_PREDICATE_INTERSECTS_HPP
46#include <ufo/container/tree/predicate/filter.hpp>
47#include <ufo/container/tree/predicate/spatial.hpp>
48#include <ufo/geometry/intersects.hpp>
55template <
class Geometry>
60template <
class Geometry>
65 static constexpr void init(
Pred&,
Tree const&)
noexcept
69 template <
class Value>
70 [[nodiscard]]
static constexpr bool returnableValue(
Pred const& p,
71 Value
const& v)
noexcept
73 if constexpr (is_pair_v<std::remove_cvref_t<Value>>) {
81 [[nodiscard]]
static constexpr bool returnable(
Pred const& p,
Tree const& t,
88 [[nodiscard]]
static constexpr bool traversable(
Pred const& p,
Tree const& t,
95 [[nodiscard]]
static constexpr bool returnableRay(
Pred const& p,
Tree const& t,
99 return returnable(p, t, n);
102 template <
class Tree>
103 [[nodiscard]]
static constexpr bool traversableRay(
Pred const& p,
Tree const& t,
107 return traversable(p, t, n);
113template <
class Geometry>
Utilizing curiously recurring template pattern (CRTP)
Bounds bounds() const
Returns the bounds of the tree (/ root node).
constexpr bool intersects(A const &a, B const &b)
Checks if two shapes intersect.