136 using Pred = Then<SurfelMap, PredPost>;
138 template <
class Map,
class Node>
139 static constexpr bool apply(Pred
const& p,
Map const& m, Node
const& n)
141 if constexpr (ValueCheck<SurfelMap>::apply(p.pre, m, n)) {
142 return ValueCheck<PredPost>::apply(p.post, m, n);
168 template <
class Map,
class Node>
169 static constexpr bool apply(
Pred const& p,
Map const& m, Node
const& n)
171 if constexpr (PredicateCompare::EQUAL == PC) {
172 return m.getNumSurfelPoints(n.index()) == p.num_surfel_points;
173 }
else if constexpr (PredicateCompare::LESS_EQUAL == PC) {
174 return m.getNumSurfelPoints(n.index()) <= p.num_surfel_points;
175 }
else if constexpr (PredicateCompare::GREATER_EQUAL == PC) {
176 return m.getNumSurfelPoints(n.index()) >= p.num_surfel_points;
177 }
else if constexpr (PredicateCompare::LESS == PC) {
178 return m.getNumSurfelPoints(n.index()) < p.num_surfel_points;
179 }
else if constexpr (PredicateCompare::GREATER == PC) {
180 return m.getNumSurfelPoints(n.index()) > p.num_surfel_points;
182 static_assert(
"Non-supported predicate comparison.");
203 template <
class Map,
class Node>
204 static constexpr bool apply(
Pred const& p,
Map const& m, Node
const& n)
206 if constexpr (PredicateCompare::EQUAL == PC) {
207 return m.getSurfel(n.index()).getPlanarity() == p.planarity;
208 }
else if constexpr (PredicateCompare::LESS_EQUAL == PC) {
209 return m.getSurfel(n.index()).getPlanarity() <= p.planarity;
210 }
else if constexpr (PredicateCompare::GREATER_EQUAL == PC) {
211 return m.getSurfel(n.index()).getPlanarity() >= p.planarity;
212 }
else if constexpr (PredicateCompare::LESS == PC) {
213 return m.getSurfel(n.index()).getPlanarity() < p.planarity;
214 }
else if constexpr (PredicateCompare::GREATER == PC) {
215 return m.getSurfel(n.index()).getPlanarity() > p.planarity;
217 static_assert(
"Non-supported predicate comparison.");
251 using Pred = Then<SurfelMap, PredPost>;
253 template <
class Map,
class Node>
254 static constexpr bool apply(Pred
const& p,
Map const& m, Node
const& n)
256 if constexpr (InnerCheck<SurfelMap>::apply(p.pre, m, n)) {
257 return InnerCheck<PredPost>::apply(p.post, m, n);
283 template <
class Map,
class Node>
284 static constexpr bool apply(
Pred const& p,
Map const& m, Node
const& n)
288 if constexpr (PredicateCompare::EQUAL == PC) {
289 return m.getNumSurfelPoints(n.index()) >= p.num_surfel_points;
290 }
else if constexpr (PredicateCompare::LESS_EQUAL == PC) {
292 }
else if constexpr (PredicateCompare::GREATER_EQUAL == PC) {
293 return m.getNumSurfelPoints(n.index()) >= p.num_surfel_points;
294 }
else if constexpr (PredicateCompare::LESS == PC) {
296 }
else if constexpr (PredicateCompare::GREATER == PC) {
297 return m.getNumSurfelPoints(n.index()) > p.num_surfel_points;
299 static_assert(
"Non-supported predicate comparison.");
constexpr Vec< Geometry::dimension(), typename Geometry::value_type > max(Geometry const &g)
Returns the maximum coordinate of the minimum spanning axis-aligned bounding box of a geometry.
constexpr Vec< Geometry::dimension(), typename Geometry::value_type > min(Geometry const &g)
Returns the minimum coordinate of the minimum spanning axis-aligned bounding box of a geometry.