Jet  v1.3.3
intersection_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_INTERSECTION_QUERY_ENGINE2_H_
8 #define INCLUDE_JET_INTERSECTION_QUERY_ENGINE2_H_
9 
10 #include <jet/bounding_box2.h>
11 #include <jet/constants.h>
12 
13 #include <functional>
14 
15 namespace jet {
16 
18 template <typename T>
20  const T* item = nullptr;
21  double distance = kMaxD;
22 };
23 
25 template <typename T>
27  std::function<double(const T&, const Vector2D&)>;
28 
30 template <typename T>
32  std::function<bool(const T&, const BoundingBox2D&)>;
33 
35 template <typename T>
36 using RayIntersectionTestFunc2 = std::function<bool(const T&, const Ray2D&)>;
37 
39 template <typename T>
40 using GetRayIntersectionFunc2 = std::function<double(const T&, const Ray2D&)>;
41 
43 template <typename T>
44 using IntersectionVisitorFunc2 = std::function<void(const T&)>;
45 
47 template <typename T>
49  public:
51  virtual bool intersects(
52  const BoundingBox2D& box,
53  const BoxIntersectionTestFunc2<T>& testFunc) const = 0;
54 
56  virtual bool intersects(
57  const Ray2D& ray,
58  const RayIntersectionTestFunc2<T>& testFunc) const = 0;
59 
62  const BoundingBox2D& box, const BoxIntersectionTestFunc2<T>& testFunc,
63  const IntersectionVisitorFunc2<T>& visitorFunc) const = 0;
64 
67  const Ray2D& ray, const RayIntersectionTestFunc2<T>& testFunc,
68  const IntersectionVisitorFunc2<T>& visitorFunc) const = 0;
69 
72  const Ray2D& ray, const GetRayIntersectionFunc2<T>& testFunc) const = 0;
73 };
74 
75 } // namespace jet
76 
77 #endif // INCLUDE_JET_INTERSECTION_QUERY_ENGINE2_H_
jet::ClosestIntersectionQueryResult2::item
const T * item
Definition: intersection_query_engine2.h:20
jet::IntersectionQueryEngine2
Abstract base class for 2-D intersection test query engine.
Definition: intersection_query_engine2.h:48
jet::ClosestIntersectionQueryResult2::distance
double distance
Definition: intersection_query_engine2.h:21
jet::Ray< T, 2 >
Class for 2-D ray.
Definition: ray2.h:21
jet::ClosestIntersectionDistanceFunc2
std::function< double(const T &, const Vector2D &)> ClosestIntersectionDistanceFunc2
Closest intersection distance measure function.
Definition: intersection_query_engine2.h:27
jet::IntersectionQueryEngine2::intersects
virtual bool intersects(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc) const =0
Returns true if given box intersects with any of the stored items.
jet::IntersectionQueryEngine2::forEachIntersectingItem
virtual void forEachIntersectingItem(const Ray2D &ray, const RayIntersectionTestFunc2< T > &testFunc, const IntersectionVisitorFunc2< T > &visitorFunc) const =0
Invokes visitorFunc for every intersecting items.
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
jet::IntersectionQueryEngine2::closestIntersection
virtual ClosestIntersectionQueryResult2< T > closestIntersection(const Ray2D &ray, const GetRayIntersectionFunc2< T > &testFunc) const =0
Returns the closest intersection for given ray.
jet::Vector< T, 2 >
2-D vector class.
Definition: vector2.h:24
jet::IntersectionQueryEngine2::intersects
virtual bool intersects(const Ray2D &ray, const RayIntersectionTestFunc2< T > &testFunc) const =0
Returns true if given ray 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::kMaxD
constexpr double kMaxD
Max double.
Definition: constants.h:88
bounding_box2.h
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
constants.h
jet::ClosestIntersectionQueryResult2
Closest intersection query result.
Definition: intersection_query_engine2.h:19
jet::IntersectionQueryEngine2::forEachIntersectingItem
virtual void forEachIntersectingItem(const BoundingBox2D &box, const BoxIntersectionTestFunc2< T > &testFunc, const IntersectionVisitorFunc2< T > &visitorFunc) const =0
Invokes visitorFunc for every intersecting items.
jet::RayIntersectionTestFunc2
std::function< bool(const T &, const Ray2D &)> RayIntersectionTestFunc2
Ray-item intersection test function.
Definition: intersection_query_engine2.h:36