Jet  v1.3.3
intersection_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_INTERSECTION_QUERY_ENGINE3_H_
8 #define INCLUDE_JET_INTERSECTION_QUERY_ENGINE3_H_
9 
10 #include <jet/bounding_box3.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 Vector3D&)>;
28 
30 template <typename T>
32  std::function<bool(const T&, const BoundingBox3D&)>;
33 
35 template <typename T>
36 using RayIntersectionTestFunc3 = std::function<bool(const T&, const Ray3D&)>;
37 
39 template <typename T>
40 using GetRayIntersectionFunc3 = std::function<double(const T&, const Ray3D&)>;
41 
43 template <typename T>
44 using IntersectionVisitorFunc3 = std::function<void(const T&)>;
45 
47 template <typename T>
49  public:
51  virtual bool intersects(
52  const BoundingBox3D& box,
53  const BoxIntersectionTestFunc3<T>& testFunc) const = 0;
54 
56  virtual bool intersects(
57  const Ray3D& ray,
58  const RayIntersectionTestFunc3<T>& testFunc) const = 0;
59 
62  const BoundingBox3D& box, const BoxIntersectionTestFunc3<T>& testFunc,
63  const IntersectionVisitorFunc3<T>& visitorFunc) const = 0;
64 
67  const Ray3D& ray, const RayIntersectionTestFunc3<T>& testFunc,
68  const IntersectionVisitorFunc3<T>& visitorFunc) const = 0;
69 
72  const Ray3D& ray, const GetRayIntersectionFunc3<T>& testFunc) const = 0;
73 };
74 
75 } // namespace jet
76 
77 #endif // INCLUDE_JET_INTERSECTION_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::IntersectionQueryEngine3::forEachIntersectingItem
virtual void forEachIntersectingItem(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const =0
Invokes visitorFunc for every intersecting items.
jet::BoundingBox< T, 3 >
3-D axis-aligned bounding box class.
Definition: bounding_box3.h:41
jet::ClosestIntersectionQueryResult3::distance
double distance
Definition: intersection_query_engine3.h:21
jet::ClosestIntersectionDistanceFunc3
std::function< double(const T &, const Vector3D &)> ClosestIntersectionDistanceFunc3
Closest intersection distance measure function.
Definition: intersection_query_engine3.h:27
jet::IntersectionQueryEngine3::closestIntersection
virtual ClosestIntersectionQueryResult3< T > closestIntersection(const Ray3D &ray, const GetRayIntersectionFunc3< T > &testFunc) const =0
Returns the closest intersection for given ray.
jet::IntersectionQueryEngine3::forEachIntersectingItem
virtual void forEachIntersectingItem(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc, const IntersectionVisitorFunc3< T > &visitorFunc) const =0
Invokes visitorFunc for every intersecting items.
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::IntersectionQueryEngine3::intersects
virtual bool intersects(const BoundingBox3D &box, const BoxIntersectionTestFunc3< T > &testFunc) const =0
Returns true if given box intersects with any of the stored items.
jet::Ray< T, 3 >
Class for 2-D ray.
Definition: ray3.h:21
jet::IntersectionQueryEngine3::intersects
virtual bool intersects(const Ray3D &ray, const RayIntersectionTestFunc3< T > &testFunc) const =0
Returns true if given ray intersects with any of the stored items.
jet::kMaxD
constexpr double kMaxD
Max double.
Definition: constants.h:88
constants.h
jet::Vector< T, 3 >
3-D vector class.
Definition: vector3.h:25
jet::ClosestIntersectionQueryResult3::item
const T * item
Definition: intersection_query_engine3.h:20
bounding_box3.h
jet::IntersectionQueryEngine3
Abstract base class for 3-D intersection test query engine.
Definition: intersection_query_engine3.h:48
jet::ClosestIntersectionQueryResult3
Closest intersection query result.
Definition: intersection_query_engine3.h:19