ListQueryEngine2.h
Go to the documentation of this file.
1 /*************************************************************************
2 > File Name: ListQueryEngine2.h
3 > Project Name: CubbyFlow
4 > Author: Chan-Ho Chris Ohk
5 > Purpose: Ad-hoc list-based 2-D intersection/nearest-neighbor query engine.
6 > Created Time: 2017/10/14
7 > Copyright (c) 2018, Chan-Ho Chris Ohk
8 *************************************************************************/
9 #ifndef CUBBYFLOW_LIST_QUERY_ENGINE2_H
10 #define CUBBYFLOW_LIST_QUERY_ENGINE2_H
11 
14 
15 namespace CubbyFlow
16 {
18  template <typename T>
20  {
21  public:
23  void Add(const T& item);
24 
26  void Add(const std::vector<T>& items);
27 
29  bool IsIntersects(const BoundingBox2D& box,
30  const BoxIntersectionTestFunc2<T>& testFunc) const override;
31 
33  bool IsIntersects(const Ray2D& ray,
34  const RayIntersectionTestFunc2<T>& testFunc) const override;
35 
38  const BoundingBox2D& box, const BoxIntersectionTestFunc2<T>& testFunc,
39  const IntersectionVisitorFunc2<T>& visitorFunc) const override;
40 
43  const Ray2D& ray, const RayIntersectionTestFunc2<T>& testFunc,
44  const IntersectionVisitorFunc2<T>& visitorFunc) const override;
45 
48  const Ray2D& ray,
49  const GetRayIntersectionFunc2<T>& testFunc) const override;
50 
53  const Vector2D& pt,
54  const NearestNeighborDistanceFunc2<T>& distanceFunc) const override;
55 
56  private:
57  std::vector<T> m_items;
58  };
59 }
60 
62 
63 #endif
Abstract base class for 2-D intersection test query engine.
Definition: IntersectionQueryEngine2.h:47
Closest intersection query result.
Definition: IntersectionQueryEngine2.h:19
Ad-hoc list-based 2-D intersection/nearest-neighbor query engine.
Definition: ListQueryEngine2.h:19
Class for 2-D ray.
Definition: Ray2.h:23
bool IsIntersects(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc) const override
Returns true if given box intersects with any of the stored items.
Definition: ListQueryEngine2-Impl.h:27
ClosestIntersectionQueryResult2< T > GetClosestIntersection(const Ray2D &ray, const GetRayIntersectionFunc2< T > &testFunc) const override
Returns the closest intersection for given ray.
Definition: ListQueryEngine2-Impl.h:86
std::function< bool(const T &, const BoundingBox2D &)> BoxIntersectionTestFunc2
Box-item intersection test function.
Definition: IntersectionQueryEngine2.h:31
Nearest neighbor query result.
Definition: NearestNeighborQueryEngine2.h:18
2-D axis-aligned bounding box class.
Definition: BoundingBox2.h:44
Definition: pybind11Utils.h:24
NearestNeighborQueryResult2< T > GetNearestNeighbor(const Vector2D &pt, const NearestNeighborDistanceFunc2< T > &distanceFunc) const override
Returns the nearest neighbor for given point and distance measure function.
Definition: ListQueryEngine2-Impl.h:105
std::function< void(const T &)> IntersectionVisitorFunc2
Visitor function which is invoked for each intersecting item.
Definition: IntersectionQueryEngine2.h:43
void ForEachIntersectingItem(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc, const IntersectionVisitorFunc2< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
Definition: ListQueryEngine2-Impl.h:58
void Add(const T &item)
Adds an item to the container.
Definition: ListQueryEngine2-Impl.h:15
2-D vector class.
Definition: Vector2.h:26
Abstract base class for 2-D nearest neighbor query engine.
Definition: NearestNeighborQueryEngine2.h:30
std::function< double(const T &, const Ray2D &)> GetRayIntersectionFunc2
Ray-item closest intersection evaluation function.
Definition: IntersectionQueryEngine2.h:39
std::function< bool(const T &, const Ray2D &)> RayIntersectionTestFunc2
Ray-item intersection test function.
Definition: IntersectionQueryEngine2.h:35
std::function< double(const T &, const Vector2D &)> NearestNeighborDistanceFunc2
Nearest neighbor distance measure function.
Definition: NearestNeighborQueryEngine2.h:26