38 #ifndef FCL_TRAVERSAL_OCTREE_OCTREESOLVER_H 
   39 #define FCL_TRAVERSAL_OCTREE_OCTREESOLVER_H 
   41 #include "fcl/config.h" 
   42 #if !(FCL_HAVE_OCTOMAP) 
   43 #error "This header requires fcl to be compiled with octomap support" 
   58 template <
typename NarrowPhaseSolver>
 
   63   using S = 
typename NarrowPhaseSolver::S;
 
   77   void OcTreeIntersect(
const OcTree<S>* tree1, 
const OcTree<S>* tree2,
 
   83   void OcTreeDistance(
const OcTree<S>* tree1, 
const OcTree<S>* tree2,
 
   89   template <
typename BV>
 
   90   void OcTreeMeshIntersect(
const OcTree<S>* tree1, 
const BVHModel<BV>* tree2,
 
   96   template <
typename BV>
 
   97   void OcTreeMeshDistance(
const OcTree<S>* tree1, 
const BVHModel<BV>* tree2,
 
  103   template <
typename BV>
 
  104   void MeshOcTreeIntersect(
const BVHModel<BV>* tree1, 
const OcTree<S>* tree2,
 
  110   template <
typename BV>
 
  111   void MeshOcTreeDistance(
const BVHModel<BV>* tree1, 
const OcTree<S>* tree2,
 
  117   template <
typename Shape>
 
  118   void OcTreeShapeIntersect(
const OcTree<S>* tree, 
const Shape& s,
 
  124   template <
typename Shape>
 
  125   void ShapeOcTreeIntersect(
const Shape& s, 
const OcTree<S>* tree,
 
  131   template <
typename Shape>
 
  132   void OcTreeShapeDistance(
const OcTree<S>* tree, 
const Shape& s,
 
  138   template <
typename Shape>
 
  139   void ShapeOcTreeDistance(
const Shape& s, 
const OcTree<S>* tree,
 
  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,
 
  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,
 
  156   template <
typename BV>
 
  157   bool OcTreeMeshDistanceRecurse(
const OcTree<S>* tree1, 
const typename OcTree<S>::OcTreeNode* root1, 
const AABB<S>& bv1,
 
  162   template <
typename BV>
 
  163   bool OcTreeMeshIntersectRecurse(
const OcTree<S>* tree1, 
const typename OcTree<S>::OcTreeNode* root1, 
const AABB<S>& bv1,
 
  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,
 
  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,