Jet  v1.3.3
list_query_engine3.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_ENGINE3_H_
8 #define INCLUDE_JET_LIST_QUERY_ENGINE3_H_
9 
12 #include <vector>
13 
14 namespace jet {
15 
17 template <typename T>
19  public NearestNeighborQueryEngine3<T> {
20  public:
22  void add(const T& item);
23 
25  void add(const std::vector<T>& items);
26 
28  bool intersects(const BoundingBox3D& box,
29  const BoxIntersectionTestFunc3<T>& testFunc) const override;
30 
32  bool intersects(const Ray3D& ray,
33  const RayIntersectionTestFunc3<T>& testFunc) const override;
34 
37  const BoundingBox3D& box, const BoxIntersectionTestFunc3<T>& testFunc,
38  const IntersectionVisitorFunc3<T>& visitorFunc) const override;
39 
42  const Ray3D& ray, const RayIntersectionTestFunc3<T>& testFunc,
43  const IntersectionVisitorFunc3<T>& visitorFunc) const override;
44 
47  const Ray3D& ray,
48  const GetRayIntersectionFunc3<T>& testFunc) const override;
49 
53  const Vector3D& pt,
54  const NearestNeighborDistanceFunc3<T>& distanceFunc) const override;
55 
56  private:
57  std::vector<T> _items;
58 };
59 
60 } // namespace jet
61 
62 #include "detail/list_query_engine3-inl.h"
63 
64 #endif // INCLUDE_JET_LIST_QUERY_ENGINE3_H_
jet::GetRayIntersectionFunc3
std::function< double(const T &, const Ray3D &)> GetRayIntersectionFunc3
Ray-item closest intersection evaluation function.
Definition: intersection_query_engine3.h:40
jet::BoxIntersectionTestFunc3
std::function< bool(const T &, const BoundingBox3D &)> BoxIntersectionTestFunc3
Box-item intersection test function.
Definition: intersection_query_engine3.h:32
jet::IntersectionVisitorFunc3
std::function< void(const T &)> IntersectionVisitorFunc3
Visitor function which is invoked for each intersecting item.
Definition: intersection_query_engine3.h:44
jet::ListQueryEngine3::forEachIntersectingItem
void forEachIntersectingItem(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
jet::ListQueryEngine3::nearest
NearestNeighborQueryResult3< T > nearest(const Vector3D &pt, const NearestNeighborDistanceFunc3< T > &distanceFunc) const override
jet::ListQueryEngine3::add
void add(const std::vector< T > &items)
Adds items to the container.
jet::BoundingBox< T, 3 >
3-D axis-aligned bounding box class.
Definition: bounding_box3.h:41
jet::ListQueryEngine3::closestIntersection
ClosestIntersectionQueryResult3< T > closestIntersection(const Ray3D &ray, const GetRayIntersectionFunc3< T > &testFunc) const override
Returns the closest intersection for given ray.
jet::ListQueryEngine3::forEachIntersectingItem
void forEachIntersectingItem(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const override
Invokes visitorFunc for every intersecting items.
intersection_query_engine3.h
jet::NearestNeighborQueryResult3
Nearest neighbor query result.
Definition: nearest_neighbor_query_engine3.h:19
jet::ListQueryEngine3
Ad-hoc list-based 3-D intersection/nearest-neighbor query engine.
Definition: list_query_engine3.h:19
jet
Definition: advection_solver2.h:18
jet::RayIntersectionTestFunc3
std::function< bool(const T &, const Ray3D &)> RayIntersectionTestFunc3
Ray-item intersection test function.
Definition: intersection_query_engine3.h:36
jet::ListQueryEngine3::intersects
bool intersects(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc) const override
Returns true if given box intersects with any of the stored items.
nearest_neighbor_query_engine3.h
jet::Ray< T, 3 >
Class for 2-D ray.
Definition: ray3.h:21
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25
jet::NearestNeighborDistanceFunc3
std::function< double(const T &, const Vector3D &)> NearestNeighborDistanceFunc3
Nearest neighbor distance measure function.
Definition: nearest_neighbor_query_engine3.h:27
jet::IntersectionQueryEngine3
Abstract base class for 3-D intersection test query engine.
Definition: intersection_query_engine3.h:48
jet::NearestNeighborQueryEngine3
Abstract base class for 3-D nearest neigbor query engine.
Definition: nearest_neighbor_query_engine3.h:31
jet::ListQueryEngine3::add
void add(const T &item)
Adds an item to the container.
jet::ClosestIntersectionQueryResult3
Closest intersection query result.
Definition: intersection_query_engine3.h:19
jet::ListQueryEngine3::intersects
bool intersects(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc) const override
Returns true if given ray intersects with any of the stored items.