diff --git a/include/hpp/fcl/internal/traversal_node_base.h b/include/hpp/fcl/internal/traversal_node_base.h index 8c5fcadb5befdda376cd37ffd9eb16d437498174..441df058576a2032c4f8667b4107776c1ecb4b53 100644 --- a/include/hpp/fcl/internal/traversal_node_base.h +++ b/include/hpp/fcl/internal/traversal_node_base.h @@ -54,41 +54,46 @@ namespace fcl class TraversalNodeBase { public: - virtual ~TraversalNodeBase(); + TraversalNodeBase () : enable_statistics(false) {} + + virtual ~TraversalNodeBase() {} virtual void preprocess() {} virtual void postprocess() {} /// @brief Whether b is a leaf node in the first BVH tree - virtual bool isFirstNodeLeaf(int b) const; + virtual bool isFirstNodeLeaf(int /*b*/) const { return true; } /// @brief Whether b is a leaf node in the second BVH tree - virtual bool isSecondNodeLeaf(int b) const; + virtual bool isSecondNodeLeaf(int /*b*/) const { return true; } /// @brief Traverse the subtree of the node in the first tree first - virtual bool firstOverSecond(int b1, int b2) const; + virtual bool firstOverSecond(int /*b1*/, int /*b2*/) const { return true; } /// @brief Get the left child of the node b in the first tree - virtual int getFirstLeftChild(int b) const; + virtual int getFirstLeftChild(int b) const { return b; } /// @brief Get the right child of the node b in the first tree - virtual int getFirstRightChild(int b) const; + virtual int getFirstRightChild(int b) const { return b; } /// @brief Get the left child of the node b in the second tree - virtual int getSecondLeftChild(int b) const; + virtual int getSecondLeftChild(int b) const { return b; } /// @brief Get the right child of the node b in the second tree - virtual int getSecondRightChild(int b) const; + virtual int getSecondRightChild(int b) const { return b; } - /// @brief Enable statistics (verbose mode) - virtual void enableStatistics(bool enable) = 0; + /// @brief Whether store some statistics information during traversal + void enableStatistics(bool enable) { enable_statistics = enable; } /// @brief configuation of first object Transform3f tf1; /// @brief configuration of second object Transform3f tf2; + + /// @brief Whether stores statistics + bool enable_statistics; }; /// @defgroup Traversal_For_Collision @@ -100,9 +105,9 @@ class CollisionTraversalNodeBase : public TraversalNodeBase { public: CollisionTraversalNodeBase (const CollisionRequest& request_) : - request (request_), result(NULL), enable_statistics(false) {} + request (request_), result(NULL) {} - virtual ~CollisionTraversalNodeBase(); + virtual ~CollisionTraversalNodeBase() {} /// @brief BV test between b1 and b2 virtual bool BVDisjoints(int b1, int b2) const = 0; @@ -120,10 +125,7 @@ public: } /// @brief Check whether the traversal can stop - virtual bool canStop() const; - - /// @brief Whether store some statistics information during traversal - void enableStatistics(bool enable) { enable_statistics = enable; } + bool canStop() const { return this->request.isSatisfied(*(this->result)); } /// @brief request setting for collision const CollisionRequest& request; @@ -145,32 +147,30 @@ public: class DistanceTraversalNodeBase : public TraversalNodeBase { public: - DistanceTraversalNodeBase() : result(NULL), enable_statistics(false) {} + DistanceTraversalNodeBase() : result(NULL) {} - virtual ~DistanceTraversalNodeBase(); + virtual ~DistanceTraversalNodeBase() {} /// @brief BV test between b1 and b2 /// @return a lower bound of the distance between the two BV. /// @note except for OBB, this method returns the distance. - virtual FCL_REAL BVDistanceLowerBound(int b1, int b2) const; + virtual FCL_REAL BVDistanceLowerBound(int /*b1*/, int /*b2*/) const + { + return std::numeric_limits<FCL_REAL>::max(); + } /// @brief Leaf test between node b1 and b2, if they are both leafs virtual void leafComputeDistance(int b1, int b2) const = 0; /// @brief Check whether the traversal can stop - virtual bool canStop(FCL_REAL c) const; - - /// @brief Whether store some statistics information during traversal - void enableStatistics(bool enable) { enable_statistics = enable; } + virtual bool canStop(FCL_REAL /*c*/) const + { return false; } /// @brief request setting for distance DistanceRequest request; /// @brief distance result kept during the traversal iteration DistanceResult* result; - - /// @brief Whether stores statistics - bool enable_statistics; }; ///@} diff --git a/include/hpp/fcl/internal/traversal_node_bvh_shape.h b/include/hpp/fcl/internal/traversal_node_bvh_shape.h index 9f5b9e7938bc7847047736da3f953d2bd862c662..3613874ba2d1b417624ee950ab988ef6e0f23e30 100644 --- a/include/hpp/fcl/internal/traversal_node_bvh_shape.h +++ b/include/hpp/fcl/internal/traversal_node_bvh_shape.h @@ -253,12 +253,6 @@ public: assert (!this->result->isCollision () || sqrDistLowerBound > 0); } - /// @brief Whether the traversal process can stop early - bool canStop() const - { - return this->request.isSatisfied(*(this->result)); - } - Vec3f* vertices; Triangle* tri_indices; @@ -366,12 +360,6 @@ public: assert (!this->result->isCollision () || sqrDistLowerBound > 0); } - /// @brief Whether the traversal process can stop early - bool canStop() const - { - return this->request.isSatisfied(*(this->result)); - } - Vec3f* vertices; Triangle* tri_indices; diff --git a/include/hpp/fcl/internal/traversal_node_bvhs.h b/include/hpp/fcl/internal/traversal_node_bvhs.h index 39f3abff8479bef76e5b145f797a36df3e2f4481..4c35a542ebcac90e994f93928f8f3fa6a7b1f34f 100644 --- a/include/hpp/fcl/internal/traversal_node_bvhs.h +++ b/include/hpp/fcl/internal/traversal_node_bvhs.h @@ -252,12 +252,6 @@ public: } } - /// @brief Whether the traversal process can stop early - bool canStop() const - { - return this->request.isSatisfied(*(this->result)); - } - Vec3f* vertices1; Vec3f* vertices2; diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9e4e1dc2a76000042985368d4cfa91d83842fd4c..1ed2ace31dea793f9d60954e18d6726a22fe4ea7 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -66,10 +66,7 @@ set(${LIBRARY_NAME}_SOURCES distance_sphere_plane.cpp intersect.cpp math/transform.cpp - traversal/traversal_node_setup.cpp - traversal/traversal_node_bvhs.cpp traversal/traversal_recurse.cpp - traversal/traversal_node_base.cpp profile.cpp distance.cpp BVH/BVH_utility.cpp diff --git a/src/traversal/traversal_node_base.cpp b/src/traversal/traversal_node_base.cpp deleted file mode 100644 index 7ae6ab13286f29f06c8035d2f117a933255d9f7e..0000000000000000000000000000000000000000 --- a/src/traversal/traversal_node_base.cpp +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Software License Agreement (BSD License) - * - * Copyright (c) 2011-2014, Willow Garage, Inc. - * Copyright (c) 2014-2015, Open Source Robotics Foundation - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * * Neither the name of Open Source Robotics Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -/** \author Jia Pan */ - - -#include <hpp/fcl/internal/traversal_node_base.h> -#include <limits> - -namespace hpp -{ -namespace fcl -{ - -TraversalNodeBase::~TraversalNodeBase() -{ -} - - bool TraversalNodeBase::isFirstNodeLeaf(int /*b*/) const -{ - return true; -} - - bool TraversalNodeBase::isSecondNodeLeaf(int /*b*/) const -{ - return true; -} - - bool TraversalNodeBase::firstOverSecond(int /*b1*/, int /*b2*/) const -{ - return true; -} - -int TraversalNodeBase::getFirstLeftChild(int b) const -{ - return b; -} - -int TraversalNodeBase::getFirstRightChild(int b) const -{ - return b; -} - -int TraversalNodeBase::getSecondLeftChild(int b) const -{ - return b; -} - -int TraversalNodeBase::getSecondRightChild(int b) const -{ - return b; -} - -CollisionTraversalNodeBase::~CollisionTraversalNodeBase() -{ -} - -bool CollisionTraversalNodeBase::canStop() const -{ - return false; -} - - -DistanceTraversalNodeBase::~DistanceTraversalNodeBase() -{ -} - - FCL_REAL DistanceTraversalNodeBase::BVDistanceLowerBound(int /*b1*/, int /*b2*/) const -{ - return std::numeric_limits<FCL_REAL>::max(); -} - - bool DistanceTraversalNodeBase::canStop(FCL_REAL /*c*/) const -{ - return false; -} - -} - -} // namespace hpp