diff --git a/src/traversal/traversal_node_base.h b/src/traversal/traversal_node_base.h index 2e5419598df8c78ae1d4dcfb6656350b11b3c027..c4308fdc20334d1567bb47b672beb446c6ad9c45 100644 --- a/src/traversal/traversal_node_base.h +++ b/src/traversal/traversal_node_base.h @@ -47,7 +47,10 @@ namespace hpp namespace fcl { + /// @brief Node structure encoding the information required for traversal. +/// @internal TraversalNodeBase, private class. + class TraversalNodeBase { public: @@ -88,7 +91,9 @@ public: Transform3f tf2; }; + /// @brief Node structure encoding the information required for collision traversal. +/// @internal CollisionTraversalNodeBase, private class. class CollisionTraversalNodeBase : public TraversalNodeBase { public: @@ -129,6 +134,7 @@ public: }; /// @brief Node structure encoding the information required for distance traversal. +/// @internal DistanceTraversalNodeBase, private class. class DistanceTraversalNodeBase : public TraversalNodeBase { public: diff --git a/src/traversal/traversal_node_bvh_shape.h b/src/traversal/traversal_node_bvh_shape.h index b01351ac562581a0f09aef6e824a28091fb2ca75..17bb3a11fe5fd0dfdece12fce1f30ded0f6ac4a7 100644 --- a/src/traversal/traversal_node_bvh_shape.h +++ b/src/traversal/traversal_node_bvh_shape.h @@ -53,6 +53,7 @@ namespace fcl { /// @brief Traversal node for collision between BVH and shape +/// @internal BVHShapeCollisionTraversalNode, private class. template<typename BV, typename S> class BVHShapeCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -96,6 +97,7 @@ public: }; /// @brief Traversal node for collision between shape and BVH +/// @internal ShapeBVHCollisionTraversalNode, private class. template<typename S, typename BV> class ShapeBVHCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -146,6 +148,7 @@ public: /// @brief Traversal node for collision between mesh and shape +/// @internal MeshShapeCollisionTraversalNode, private class. template<typename BV, typename S, int _Options = RelativeTransformationIsIdentity> class MeshShapeCollisionTraversalNode : public BVHShapeCollisionTraversalNode<BV, S> @@ -260,6 +263,7 @@ public: }; /// @brief Traversal node for mesh and shape, when mesh BVH is one of the oriented node (OBB, RSS, OBBRSS, kIOS) +/// @internal MeshShapeCollisionTraversalNodeOBB/RSS/kIOS/OBBRSS, private class. template<typename S> class MeshShapeCollisionTraversalNodeOBB : public MeshShapeCollisionTraversalNode<OBB, S, 0> { @@ -307,6 +311,7 @@ public: /// @brief Traversal node for collision between shape and mesh +/// @internalShapeMeshCollisionTraversalNode, private class. template<typename S, typename BV, int _Options = RelativeTransformationIsIdentity> class ShapeMeshCollisionTraversalNode : public ShapeBVHCollisionTraversalNode<S, BV> @@ -420,6 +425,7 @@ public: }; /// @brief Traversal node for shape and mesh, when mesh BVH is one of the oriented node (OBB, RSS, OBBRSS, kIOS) +/// @internal ShapeMeshCollisionTraversalNodeOBB/RSS/kIOS/OBBRSS, private class. template<typename S> class ShapeMeshCollisionTraversalNodeOBB : public ShapeMeshCollisionTraversalNode<S, OBB, 0> { @@ -460,6 +466,7 @@ public: }; /// @brief Traversal node for distance computation between BVH and shape +/// @internal BVHShapeDistanceTraversalNode, private class. template<typename BV, typename S> class BVHShapeDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -508,6 +515,7 @@ public: }; /// @brief Traversal node for distance computation between shape and BVH +/// @internal ShapeBVHShapeDistanceTraversalNode, private class. template<typename S, typename BV> class ShapeBVHDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -557,6 +565,7 @@ public: /// @brief Traversal node for distance between mesh and shape +/// @internal MeshShapeDistanceTraversalNode, private class. template<typename BV, typename S> class MeshShapeDistanceTraversalNode : public BVHShapeDistanceTraversalNode<BV, S> { @@ -681,7 +690,8 @@ static inline void distancePreprocessOrientedNode(const BVHModel<BV>* model1, -/// @brief Traversal node for distance between mesh and shape, when mesh BVH is one of the oriented node (RSS, OBBRSS, kIOS) +/// @brief Traversal node for distance between mesh and shape, when mesh BVH is one of the oriented node (RSS, kIOS, OBBRSS) +/// @internal MeshShapeDistanceTraversalNodeRSS/kIOS/OBBRSS, private class. template<typename S> class MeshShapeDistanceTraversalNodeRSS : public MeshShapeDistanceTraversalNode<RSS, S> { @@ -780,6 +790,7 @@ public: }; /// @brief Traversal node for distance between shape and mesh +/// @internal ShapeMeshDistanceTraversalNode, private class. template<typename S, typename BV> class ShapeMeshDistanceTraversalNode : public ShapeBVHDistanceTraversalNode<S, BV> { @@ -838,6 +849,8 @@ public: const GJKSolver* nsolver; }; +/// @brief Traversal node for distance between shape and mesh, when mesh BVH is one of the oriented node (RSS, kIOS, OBBRSS) +/// @internal ShapeMeshDistanceTraversalNodeRSS/kIOS/OBBRSS, private class. template<typename S> class ShapeMeshDistanceTraversalNodeRSS : public ShapeMeshDistanceTraversalNode<S, RSS> { diff --git a/src/traversal/traversal_node_bvhs.h b/src/traversal/traversal_node_bvhs.h index b35e9783846d6618b792e8f6a3dd6828adc1d3e6..a124e2deef91e5f1f8f49afc6d19945befb9aecd 100644 --- a/src/traversal/traversal_node_bvhs.h +++ b/src/traversal/traversal_node_bvhs.h @@ -61,6 +61,7 @@ namespace hpp namespace fcl { /// @brief Traversal node for collision between BVH models +/// @internal BVHCollisionTraversalNode, private class. template<typename BV> class BVHCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -138,6 +139,7 @@ public: }; /// @brief Traversal node for collision between two meshes +/// @internal MeshCollisionTraversalNode, private class. template<typename BV, int _Options = RelativeTransformationIsIdentity> class MeshCollisionTraversalNode : public BVHCollisionTraversalNode<BV> { @@ -172,7 +174,7 @@ public: /// \retval sqrDistLowerBound square of a lower bound of the minimal /// distance between bounding volumes. bool BVDisjoints(int b1, int b2, FCL_REAL& sqrDistLowerBound) const - { + {/// @internal MeshCollisionTraversalNode, private class. if(this->enable_statistics) this->num_bv_tests++; if (RTIsIdentity) return !this->model1->getBV(b1).overlap(this->model2->getBV(b2), @@ -264,6 +266,7 @@ public: }; /// @brief Traversal node for collision between two meshes if their underlying BVH node is oriented node (OBB, RSS, OBBRSS, kIOS) +/// @internal MeshCollisionTraversalNode (OBB, RSS, OBBRSS, kIOS), private class. typedef MeshCollisionTraversalNode<OBB , 0> MeshCollisionTraversalNodeOBB ; typedef MeshCollisionTraversalNode<RSS , 0> MeshCollisionTraversalNodeRSS ; typedef MeshCollisionTraversalNode<kIOS , 0> MeshCollisionTraversalNodekIOS ; @@ -296,6 +299,7 @@ namespace details } // namespace details /// @brief Traversal node for distance computation between BVH models +/// @internal BVHDistanceTraversalNode, private class. template<typename BV> class BVHDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -381,6 +385,7 @@ public: /// @brief Traversal node for distance computation between two meshes +/// @internal MeshDistanceTraversalNode, private class. template<typename BV> class MeshDistanceTraversalNode : public BVHDistanceTraversalNode<BV> { @@ -448,6 +453,7 @@ public: }; /// @brief Traversal node for distance computation between two meshes if their underlying BVH node is oriented node (RSS, OBBRSS, kIOS) +/// @internal MeshDistanceTraversalNodeRSS/kIOS/OBBRSS, private class. class MeshDistanceTraversalNodeRSS : public MeshDistanceTraversalNode<RSS> { public: diff --git a/src/traversal/traversal_node_octree.h b/src/traversal/traversal_node_octree.h index 142531ef98a232910073b66ea5e0c9232be944f5..1590c99bc5bf1e33fa9ef611bf06bf10a16e9119 100644 --- a/src/traversal/traversal_node_octree.h +++ b/src/traversal/traversal_node_octree.h @@ -51,6 +51,7 @@ namespace fcl { /// @brief Algorithms for collision related with octree +/// @internal OcTreeSolver, private class. class OcTreeSolver { private: @@ -889,6 +890,7 @@ private: /// @brief Traversal node for octree collision +/// @internal OcTreeCollisionTraversalNode, private class. class OcTreeCollisionTraversalNode : public CollisionTraversalNodeBase { public: @@ -925,6 +927,7 @@ public: }; /// @brief Traversal node for octree distance +/// @internal OcTreeDistanceTraversalNode, private class. class OcTreeDistanceTraversalNode : public DistanceTraversalNodeBase { public: @@ -959,6 +962,7 @@ public: }; /// @brief Traversal node for shape-octree collision +/// @internal ShapeOcTreeCollisionTraversalNode, private class. template<typename S> class ShapeOcTreeCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -996,6 +1000,7 @@ public: }; /// @brief Traversal node for octree-shape collision +/// @internal OcTreeShapeCollisionTraversalNode, private class. template<typename S> class OcTreeShapeCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -1033,6 +1038,7 @@ public: }; /// @brief Traversal node for shape-octree distance +/// @internal ShapeOcTreeCollisionTraversalNode, private class. template<typename S> class ShapeOcTreeDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -1062,6 +1068,7 @@ public: }; /// @brief Traversal node for octree-shape distance +/// @internal OcTreeShapeDistanceTraversalNode, private class. template<typename S> class OcTreeShapeDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -1091,6 +1098,7 @@ public: }; /// @brief Traversal node for mesh-octree collision +/// @internal MeshOcTreeCollisionTraversalNode, private class. template<typename BV> class MeshOcTreeCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -1128,6 +1136,7 @@ public: }; /// @brief Traversal node for octree-mesh collision +/// @internal OcTreeMeshCollisionTraversalNode, private class. template<typename BV> class OcTreeMeshCollisionTraversalNode : public CollisionTraversalNodeBase { @@ -1165,6 +1174,7 @@ public: }; /// @brief Traversal node for mesh-octree distance +/// @internal MeshOcTreeDistanceTraversalNode, private class. template<typename BV> class MeshOcTreeDistanceTraversalNode : public DistanceTraversalNodeBase { @@ -1195,6 +1205,7 @@ public: }; /// @brief Traversal node for octree-mesh distance +/// @internal OcTreeMeshDistanceTraversalNode, private class. template<typename BV> class OcTreeMeshDistanceTraversalNode : public DistanceTraversalNodeBase { diff --git a/src/traversal/traversal_recurse.cpp b/src/traversal/traversal_recurse.cpp index 5aa55c448893b536e1efc23988af5fda1597ed03..4028f47825dedfb96c6b26593cda3505bd3d0a5a 100644 --- a/src/traversal/traversal_recurse.cpp +++ b/src/traversal/traversal_recurse.cpp @@ -89,6 +89,7 @@ void collisionRecurse(CollisionTraversalNodeBase* node, int b1, int b2, collisionRecurse(node, b1, c2, front_list, sqrDistLowerBound2); sqrDistLowerBound = std::min (sqrDistLowerBound1, sqrDistLowerBound2); } + return; } void collisionNonRecurse(CollisionTraversalNodeBase* node,