diff --git a/include/fcl/BV/kIOS.h b/include/fcl/BV/kIOS.h index 091be68ea..1a168bcaf 100644 --- a/include/fcl/BV/kIOS.h +++ b/include/fcl/BV/kIOS.h @@ -179,7 +179,7 @@ Scalar distance( //============================================================================== template typename kIOS::kIOS_Sphere kIOS::encloseSphere( - const kIOS::kIOS_Sphere& s0, const kIOS::kIOS_Sphere& s1) + const typename kIOS::kIOS_Sphere& s0, const typename kIOS::kIOS_Sphere& s1) { Vector3 d = s1.o - s0.o; Scalar dist2 = d.squaredNorm(); diff --git a/include/fcl/narrowphase/gjk_solver_libccd.h b/include/fcl/narrowphase/gjk_solver_libccd.h index 4bbb2ba47..e2c642dce 100755 --- a/include/fcl/narrowphase/gjk_solver_libccd.h +++ b/include/fcl/narrowphase/gjk_solver_libccd.h @@ -953,7 +953,7 @@ void GJKSolver_libccd::enableCachedGuess(bool if_enable) const //============================================================================== template void GJKSolver_libccd::setCachedGuess( - const Vector3::Scalar>& guess) const + const Vector3& guess) const { // TODO: need change libccd to exploit spatial coherence } diff --git a/include/fcl/shape/sphere.h b/include/fcl/shape/sphere.h index 2582b726e..7d5afb1c6 100644 --- a/include/fcl/shape/sphere.h +++ b/include/fcl/shape/sphere.h @@ -108,7 +108,7 @@ NODE_TYPE Sphere::getNodeType() const template Matrix3 Sphere::computeMomentofInertia() const { - ScalarT I = 0.4 * radius * radius * computeVolume(); + ScalarT I = (ScalarT)0.4 * radius * radius * computeVolume(); return Vector3::Constant(I).asDiagonal(); } @@ -117,7 +117,7 @@ Matrix3 Sphere::computeMomentofInertia() const template ScalarT Sphere::computeVolume() const { - return 4.0 * constants::pi() * radius * radius * radius / 3.0; + return (ScalarT)4.0 * constants::pi() * radius * radius * radius / (ScalarT)3.0; } //============================================================================== diff --git a/include/fcl/traversal/distance/mesh_conservative_advancement_traversal_node.h b/include/fcl/traversal/distance/mesh_conservative_advancement_traversal_node.h index 4e2c06c11..9de87f883 100644 --- a/include/fcl/traversal/distance/mesh_conservative_advancement_traversal_node.h +++ b/include/fcl/traversal/distance/mesh_conservative_advancement_traversal_node.h @@ -111,7 +111,21 @@ class MeshConservativeAdvancementTraversalNodeRSS public: MeshConservativeAdvancementTraversalNodeRSS(Scalar w_ = 1); - Scalar BVTesting(int b1, int b2) const; + Scalar BVTesting(int b1, int b2) const + { + if (this->enable_statistics) + this->num_bv_tests++; + + Vector3 P1, P2; + Scalar d = distance( + tf, + this->model1->getBV(b1).bv, + this->model2->getBV(b2).bv, &P1, &P2); + + this->stack.emplace_back(P1, P2, b1, b2, d); + + return d; + } void leafTesting(int b1, int b2) const; @@ -143,7 +157,21 @@ class MeshConservativeAdvancementTraversalNodeOBBRSS public: MeshConservativeAdvancementTraversalNodeOBBRSS(Scalar w_ = 1); - Scalar BVTesting(int b1, int b2) const; + Scalar BVTesting(int b1, int b2) const + { + if (this->enable_statistics) + this->num_bv_tests++; + + Vector3 P1, P2; + Scalar d = distance( + tf, + this->model1->getBV(b1).bv, + this->model2->getBV(b2).bv, &P1, &P2); + + this->stack.emplace_back(P1, P2, b1, b2, d); + + return d; + } void leafTesting(int b1, int b2) const; @@ -234,8 +262,7 @@ void meshConservativeAdvancementOrientedNodeLeafTesting( //============================================================================== template MeshConservativeAdvancementTraversalNode:: -MeshConservativeAdvancementTraversalNode( - MeshConservativeAdvancementTraversalNode::Scalar w_) +MeshConservativeAdvancementTraversalNode(typename BV::Scalar w_) : MeshDistanceTraversalNode() { delta_t = 1; @@ -250,7 +277,7 @@ MeshConservativeAdvancementTraversalNode( //============================================================================== template -typename MeshConservativeAdvancementTraversalNode::Scalar +typename BV::Scalar MeshConservativeAdvancementTraversalNode::BVTesting(int b1, int b2) const { if(this->enable_statistics) this->num_bv_tests++; @@ -387,7 +414,7 @@ struct CanStopImpl //============================================================================== template bool MeshConservativeAdvancementTraversalNode::canStop( - MeshConservativeAdvancementTraversalNode::Scalar c) const + typename BV::Scalar c) const { return CanStopImpl::run(*this, c); } @@ -521,25 +548,6 @@ MeshConservativeAdvancementTraversalNodeRSS::MeshConservativeAdvancement tf.linear().setIdentity(); } -//============================================================================== -template -Scalar MeshConservativeAdvancementTraversalNodeRSS::BVTesting(int b1, int b2) const -{ - if(this->enable_statistics) - this->num_bv_tests++; - - Vector3 P1, P2; - Scalar d = distance( - tf.linear(), - tf.translation(), - this->model1->getBV(b1).bv, - this->model2->getBV(b2).bv, &P1, &P2); - - this->stack.emplace_back(P1, P2, b1, b2, d); - - return d; -} - //============================================================================== template void MeshConservativeAdvancementTraversalNodeRSS::leafTesting(int b1, int b2) const @@ -594,26 +602,6 @@ MeshConservativeAdvancementTraversalNodeOBBRSS(Scalar w_) tf.linear().setIdentity(); } -//============================================================================== -template -Scalar MeshConservativeAdvancementTraversalNodeOBBRSS:: -BVTesting(int b1, int b2) const -{ - if(this->enable_statistics) - this->num_bv_tests++; - - Vector3 P1, P2; - Scalar d = distance( - tf.linear(), - tf.translation(), - this->model1->getBV(b1).bv, - this->model2->getBV(b2).bv, &P1, &P2); - - this->stack.emplace_back(P1, P2, b1, b2, d); - - return d; -} - //============================================================================== template void MeshConservativeAdvancementTraversalNodeOBBRSS:: diff --git a/include/fcl/traversal/distance/mesh_distance_traversal_node.h b/include/fcl/traversal/distance/mesh_distance_traversal_node.h index aac46453f..c0b9c4eca 100644 --- a/include/fcl/traversal/distance/mesh_distance_traversal_node.h +++ b/include/fcl/traversal/distance/mesh_distance_traversal_node.h @@ -100,7 +100,12 @@ class MeshDistanceTraversalNodeRSS void postprocess(); - Scalar BVTesting(int b1, int b2) const; + Scalar BVTesting(int b1, int b2) const + { + if (this->enable_statistics) this->num_bv_tests++; + + return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); + } void leafTesting(int b1, int b2) const; @@ -135,7 +140,12 @@ class MeshDistanceTraversalNodekIOS void postprocess(); - Scalar BVTesting(int b1, int b2) const; + Scalar BVTesting(int b1, int b2) const + { + if (this->enable_statistics) this->num_bv_tests++; + + return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); + } void leafTesting(int b1, int b2) const; @@ -170,7 +180,12 @@ class MeshDistanceTraversalNodeOBBRSS void postprocess(); - Scalar BVTesting(int b1, int b2) const; + Scalar BVTesting(int b1, int b2) const + { + if (this->enable_statistics) this->num_bv_tests++; + + return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); + } void leafTesting(int b1, int b2) const; @@ -330,7 +345,7 @@ void MeshDistanceTraversalNode::leafTesting(int b1, int b2) const //============================================================================== template -bool MeshDistanceTraversalNode::canStop(MeshDistanceTraversalNode::Scalar c) const +bool MeshDistanceTraversalNode::canStop(typename BV::Scalar c) const { if((c >= this->result->min_distance - abs_err) && (c * (1 + rel_err) >= this->result->min_distance)) return true; @@ -444,15 +459,6 @@ void MeshDistanceTraversalNodeRSS::postprocess() *this->result); } -//============================================================================== -template -Scalar MeshDistanceTraversalNodeRSS::BVTesting(int b1, int b2) const -{ - if(this->enable_statistics) this->num_bv_tests++; - - return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); -} - //============================================================================== template void MeshDistanceTraversalNodeRSS::leafTesting(int b1, int b2) const @@ -512,15 +518,6 @@ void MeshDistanceTraversalNodekIOS::postprocess() *this->result); } -//============================================================================== -template -Scalar MeshDistanceTraversalNodekIOS::BVTesting(int b1, int b2) const -{ - if(this->enable_statistics) this->num_bv_tests++; - - return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); -} - //============================================================================== template void MeshDistanceTraversalNodekIOS::leafTesting(int b1, int b2) const @@ -580,15 +577,6 @@ void MeshDistanceTraversalNodeOBBRSS::postprocess() *this->result); } -//============================================================================== -template -Scalar MeshDistanceTraversalNodeOBBRSS::BVTesting(int b1, int b2) const -{ - if(this->enable_statistics) this->num_bv_tests++; - - return distance(tf, this->model1->getBV(b1).bv, this->model2->getBV(b2).bv); -} - //============================================================================== template void MeshDistanceTraversalNodeOBBRSS::leafTesting(int b1, int b2) const diff --git a/include/fcl/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h b/include/fcl/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h index f3bdbd2b0..f80f5397c 100644 --- a/include/fcl/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h +++ b/include/fcl/traversal/distance/shape_mesh_conservative_advancement_traversal_node.h @@ -477,7 +477,7 @@ leafTesting(int b1, int b2) const //============================================================================== template bool ShapeMeshConservativeAdvancementTraversalNodeOBBRSS:: -canStop(ShapeMeshConservativeAdvancementTraversalNodeOBBRSS::Scalar c) const +canStop(typename NarrowPhaseSolver::Scalar c) const { return details::meshShapeConservativeAdvancementOrientedNodeCanStop( c,