Jet  v1.3.3
list_query_engine2.h
Go to the documentation of this file.
1 // Copyright (c) 2018 Doyub Kim
2 //
3 // I am making my contributions/submissions to this project solely in my
4 // personal capacity and am not conveying any rights to any intellectual
5 // property of any third parties.
6 
7 #ifndef INCLUDE_JET_LIST_QUERY_ENGINE2_H_
8 #define INCLUDE_JET_LIST_QUERY_ENGINE2_H_
9 
12 #include <vector>
13 
14 namespace jet {
15 
17 template <typename T>
19  public NearestNeighborQueryEngine2<T> {
20  public:
22  void add(const T& item);
23 
25  void add(const std::vector<T>& items);
26 
28  bool intersects(const BoundingBox2D& box,
29  const BoxIntersectionTestFunc2<T>& testFunc) const override;
30 
32  bool intersects(const Ray2D& ray,
33  const RayIntersectionTestFunc2<T>& testFunc) const override;
34 
37  const BoundingBox2D& box, const BoxIntersectionTestFunc2<T>& testFunc,
38  const IntersectionVisitorFunc2<T>& visitorFunc) const override;
39 
42  const Ray2D& ray, const RayIntersectionTestFunc2<T>& testFunc,
43  const IntersectionVisitorFunc2<T>& visitorFunc) const override;
44 
47  const Ray2D& ray,
48  const GetRayIntersectionFunc2<T>& testFunc) const override;
49 
53  const Vector2D& pt,
54  const NearestNeighborDistanceFunc2<T>& distanceFunc) const override;
55 
56  private:
57  std::vector<T> _items;
58 };
59 
60 } // namespace jet
61 
62 #include "detail/list_query_engine2-inl.h"
63 
64 #endif // INCLUDE_JET_LIST_QUERY_ENGINE2_H_
jet::IntersectionQueryEngine2
Abstract base class for 2-D intersection test query engine.
Definition: intersection_query_engine2.h:48
jet::ListQueryEngine2
Ad-hoc list-based 2-D intersection/nearest-neighbor query engine.
Definition: list_query_engine2.h:19
nearest_neighbor_query_engine2.h
jet::ListQueryEngine2::intersects
bool intersects(const Ray2D &ray, const RayIntersectionTestFunc2< T > &testFunc) const override
Returns true if given ray intersects with any of the stored items.
jet::Ray< T, 2 >
Class for 2-D ray.
Definition: ray2.h:21
jet::NearestNeighborQueryResult2
Nearest neighbor query result.
Definition: nearest_neighbor_query_engine2.h:19
jet
Definition: advection_solver2.h:18
jet::BoxIntersectionTestFunc2
std::function< bool(const T &, const BoundingBox2D &)> BoxIntersectionTestFunc2
Box-item intersection test function.
Definition: intersection_query_engine2.h:32
intersection_query_engine2.h
jet::ListQueryEngine2::closestIntersection
ClosestIntersectionQueryResult2< T > closestIntersection(const Ray2D &ray, const GetRayIntersectionFunc2< T > &testFunc) const override
Returns the closest intersection for given ray.
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::NearestNeighborQueryEngine2
Abstract base class for 2-D nearest neigbor query engine.
Definition: nearest_neighbor_query_engine2.h:31
jet::ListQueryEngine2::intersects
bool intersects(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc) const override
Returns true if given box intersects with any of the stored items.
jet::GetRayIntersectionFunc2
std::function< double(const T &, const Ray2D &)> GetRayIntersectionFunc2
Ray-item closest intersection evaluation function.
Definition: intersection_query_engine2.h:40
jet::NearestNeighborDistanceFunc2
std::function< double(const T &, const Vector2D &)> NearestNeighborDistanceFunc2
Nearest neighbor distance measure function.
Definition: nearest_neighbor_query_engine2.h:27
jet::IntersectionVisitorFunc2
std::function< void(const T &)> IntersectionVisitorFunc2
Visitor function which is invoked for each intersecting item.
Definition: intersection_query_engine2.h:44
jet::BoundingBox< T, 2 >
2-D axis-aligned bounding box class.
Definition: bounding_box2.h:41
jet::ListQueryEngine2::forEachIntersectingItem
void forEachIntersectingItem(const Ray2D &ray, const RayIntersectionTestFunc2< T > &testFunc, const IntersectionVisitorFunc2< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
jet::ListQueryEngine2::add
void add(const std::vector< T > &items)
Adds items to the container.
jet::ListQueryEngine2::forEachIntersectingItem
void forEachIntersectingItem(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc, const IntersectionVisitorFunc2< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
jet::ListQueryEngine2::nearest
NearestNeighborQueryResult2< T > nearest(const Vector2D &pt, const NearestNeighborDistanceFunc2< T > &distanceFunc) const override
jet::ListQueryEngine2::add
void add(const T &item)
Adds an item to the container.
jet::ClosestIntersectionQueryResult2
Closest intersection query result.
Definition: intersection_query_engine2.h:19
jet::RayIntersectionTestFunc2
std::function< bool(const T &, const Ray2D &)> RayIntersectionTestFunc2
Ray-item intersection test function.
Definition: intersection_query_engine2.h:36