38 #ifndef FCL_TRAVERSAL_OCTREE_OCTREESOLVER_H 39 #define FCL_TRAVERSAL_OCTREE_OCTREESOLVER_H 41 #include "fcl/config.h" 42 #if not(FCL_HAVE_OCTOMAP) 43 #error "This header requires fcl to be compiled with octomap support" 46 #include "fcl/math/bv/utility.h" 47 #include "fcl/geometry/octree/octree.h" 48 #include "fcl/geometry/shape/utility.h" 49 #include "fcl/geometry/shape/box.h" 58 template <
typename NarrowPhaseSolver>
63 using S =
typename NarrowPhaseSolver::S;
65 const NarrowPhaseSolver* solver;
78 const Transform3<S>& tf1,
const Transform3<S>& tf2,
83 void OcTreeDistance(
const OcTree<S>* tree1,
const OcTree<S>* tree2,
84 const Transform3<S>& tf1,
const Transform3<S>& tf2,
89 template <
typename BV>
91 const Transform3<S>& tf1,
const Transform3<S>& tf2,
96 template <
typename BV>
98 const Transform3<S>& tf1,
const Transform3<S>& tf2,
103 template <
typename BV>
105 const Transform3<S>& tf1,
const Transform3<S>& tf2,
110 template <
typename BV>
112 const Transform3<S>& tf1,
const Transform3<S>& tf2,
117 template <
typename Shape>
119 const Transform3<S>& tf1,
const Transform3<S>& tf2,
124 template <
typename Shape>
126 const Transform3<S>& tf1,
const Transform3<S>& tf2,
131 template <
typename Shape>
133 const Transform3<S>& tf1,
const Transform3<S>& tf2,
138 template <
typename Shape>
140 const Transform3<S>& tf1,
const Transform3<S>& tf2,
146 template <
typename Shape>
147 bool OcTreeShapeDistanceRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
148 const Shape& s,
const AABB<S>& aabb2,
149 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
151 template <
typename Shape>
152 bool OcTreeShapeIntersectRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
153 const Shape& s,
const OBB<S>& obb2,
154 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
156 template <
typename BV>
157 bool OcTreeMeshDistanceRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
159 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
162 template <
typename BV>
163 bool OcTreeMeshIntersectRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
165 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
167 bool OcTreeDistanceRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
168 const OcTree<S>* tree2,
const typename OcTree<S>::OcTreeNode* root2,
const AABB<S>& bv2,
169 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
172 bool OcTreeIntersectRecurse(
const OcTree<S>* tree1,
const typename OcTree<S>::OcTreeNode* root1,
const AABB<S>& bv1,
173 const OcTree<S>* tree2,
const typename OcTree<S>::OcTreeNode* root2,
const AABB<S>& bv2,
174 const Transform3<S>& tf1,
const Transform3<S>& tf2)
const;
180 #include "fcl/narrowphase/detail/traversal/octree/octree_solver-inl.h" Main namespace.
Definition: broadphase_bruteforce-inl.h:45
void OcTreeIntersect(const OcTree< S > *tree1, const OcTree< S > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const CollisionRequest< S > &request_, CollisionResult< S > &result_) const
collision between two octrees
Definition: octree_solver-inl.h:66
collision result
Definition: collision_request.h:48
void OcTreeShapeDistance(const OcTree< S > *tree, const Shape &s, const Transform3< S > &tf1, const Transform3< S > &tf2, const DistanceRequest< S > &request_, DistanceResult< S > &result_) const
distance between octree and shape
Definition: octree_solver-inl.h:231
void ShapeOcTreeDistance(const Shape &s, const OcTree< S > *tree, const Transform3< S > &tf1, const Transform3< S > &tf2, const DistanceRequest< S > &request_, DistanceResult< S > &result_) const
distance between shape and octree
Definition: octree_solver-inl.h:253
distance result
Definition: distance_request.h:48
request to the collision algorithm
Definition: collision_request.h:52
Algorithms for collision related with octree.
Definition: octree_solver.h:59
void OcTreeDistance(const OcTree< S > *tree1, const OcTree< S > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const DistanceRequest< S > &request_, DistanceResult< S > &result_) const
distance between two octrees
Definition: octree_solver-inl.h:84
void OcTreeMeshDistance(const OcTree< S > *tree1, const BVHModel< BV > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const DistanceRequest< S > &request_, DistanceResult< S > &result_) const
distance between octree and mesh
Definition: octree_solver-inl.h:122
void MeshOcTreeDistance(const BVHModel< BV > *tree1, const OcTree< S > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const DistanceRequest< S > &request_, DistanceResult< S > &result_) const
distance between mesh and octree
Definition: octree_solver-inl.h:162
A class describing the bounding hierarchy of a mesh model or a point cloud model (which is viewed as ...
Definition: BVH_model.h:57
void ShapeOcTreeIntersect(const Shape &s, const OcTree< S > *tree, const Transform3< S > &tf1, const Transform3< S > &tf2, const CollisionRequest< S > &request_, CollisionResult< S > &result_) const
collision between shape and octree
Definition: octree_solver-inl.h:207
void OcTreeMeshIntersect(const OcTree< S > *tree1, const BVHModel< BV > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const CollisionRequest< S > &request_, CollisionResult< S > &result_) const
collision between octree and mesh
Definition: octree_solver-inl.h:103
void OcTreeShapeIntersect(const OcTree< S > *tree, const Shape &s, const Transform3< S > &tf1, const Transform3< S > &tf2, const CollisionRequest< S > &request_, CollisionResult< S > &result_) const
collision between octree and shape
Definition: octree_solver-inl.h:182
void MeshOcTreeIntersect(const BVHModel< BV > *tree1, const OcTree< S > *tree2, const Transform3< S > &tf1, const Transform3< S > &tf2, const CollisionRequest< S > &request_, CollisionResult< S > &result_) const
collision between mesh and octree
Definition: octree_solver-inl.h:141
request to the distance computation
Definition: distance_request.h:52