From fdd9b54d00a0bc80a0c94f48593ca573eafa345b Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Wed, 8 Jun 2016 13:09:28 +0200 Subject: [PATCH] Replace setValue by operator<< and remove normalize(bool) --- include/hpp/fcl/ccd/motion.h | 2 +- include/hpp/fcl/eigen/vec_3fx.h | 44 +- include/hpp/fcl/math/transform.h | 2 +- .../fcl/shape/geometric_shape_to_BVH_model.h | 16 +- src/BV/OBB.cpp | 6 +- src/BV/RSS.cpp | 48 +- src/BVH/BVH_model.cpp | 2 +- src/BVH/BVH_utility.cpp | 12 +- src/BVH/BV_fitter.cpp | 42 +- src/ccd/motion.cpp | 2 +- src/intersect.cpp | 14 +- src/math/transform.cpp | 12 +- src/narrowphase/gjk_libccd.cpp | 8 +- src/shape/geometric_shapes.cpp | 4 +- src/shape/geometric_shapes_utility.cpp | 18 +- test/test_fcl_bvh_models.cpp | 48 +- test/test_fcl_geometric_shapes.cpp | 466 +++++++++--------- test/test_fcl_utility.cpp | 6 +- 18 files changed, 360 insertions(+), 392 deletions(-) diff --git a/include/hpp/fcl/ccd/motion.h b/include/hpp/fcl/ccd/motion.h index 97bd248d..c9ddc388 100644 --- a/include/hpp/fcl/ccd/motion.h +++ b/include/hpp/fcl/ccd/motion.h @@ -268,7 +268,7 @@ public: ScrewMotion() : MotionBase() { // Default angular velocity is zero - axis.setValue(1, 0, 0); + axis << 1, 0, 0; angular_vel = 0; // Default reference point is local zero point diff --git a/include/hpp/fcl/eigen/vec_3fx.h b/include/hpp/fcl/eigen/vec_3fx.h index 0edb1db8..6eef9260 100644 --- a/include/hpp/fcl/eigen/vec_3fx.h +++ b/include/hpp/fcl/eigen/vec_3fx.h @@ -236,7 +236,7 @@ public: T yx, T yy, T yz, T zx, T zy, T zz) : Base() { - setValue(xx, xy, xz, yx, yy, yz, zx, zy, zz); + *this << xx, xy, xz, yx, yy, yz, zx, zy, zz; } template <typename Vector> @@ -303,42 +303,12 @@ public: return *this; } - inline FclMatrix& normalize(bool* signal) - { - T sqr_length = this->squaredNorm(); - if(sqr_length > 0) - { - this->operator/= ((T)std::sqrt(sqr_length)); - *signal = true; - } - else - *signal = false; - return *this; - } - inline FclMatrix& abs() { *this = this->cwiseAbs (); return *this; } - inline void setValue(T x, T y, T z) { - EIGEN_STATIC_ASSERT_VECTOR_SPECIFIC_SIZE(FclMatrix, 3); - this->m_storage.data()[0] = x; - this->m_storage.data()[1] = y; - this->m_storage.data()[2] = z; - } - inline void setValue(T xx, T xy, T xz, - T yx, T yy, T yz, - T zx, T zy, T zz) - { - EIGEN_STATIC_ASSERT_MATRIX_SPECIFIC_SIZE(FclMatrix, 3, 3); - this->operator()(0,0) = xx; this->operator()(0,1) = xy; this->operator()(0,2) = xz; - this->operator()(1,0) = yx; this->operator()(1,1) = yy; this->operator()(1,2) = yz; - this->operator()(2,0) = zx; this->operator()(2,1) = zy; this->operator()(2,2) = zz; - } - inline void setValue(T x) { this->setConstant (x); } - // inline void setZero () {data.setValue (0); } inline bool equal(const FclMatrix& other, T epsilon = std::numeric_limits<T>::epsilon() * 100) const { return ((*this - other).cwiseAbs().array () < epsilon).all(); @@ -440,9 +410,9 @@ public: Scalar sc = si * ch; Scalar ss = si * sh; - setValue(cj * ch, sj * sc - cs, sj * cc + ss, + *this << cj * ch, sj * sc - cs, sj * cc + ss, cj * sh, sj * ss + cc, sj * cs - sc, - -sj, cj * si, cj * ci); + -sj, cj * si, cj * ci; } @@ -672,7 +642,7 @@ void generateCoordinateSystem( template<typename Matrix, typename Vector> void hat(Matrix& mat, const Vector& vec) { - mat.setValue(0, -vec[2], vec[1], vec[2], 0, -vec[0], -vec[1], vec[0], 0); + mat << 0, -vec[2], vec[1], vec[2], 0, -vec[0], -vec[1], vec[0], 0; } template<typename Matrix, typename Vector> @@ -715,9 +685,9 @@ void eigen(const FclType<Matrix>& m, typename Matrix::Scalar dout[3], Vector* vo sm += std::abs(R(ip, iq)); if(sm == 0.0) { - vout[0].setValue(v[0][0], v[0][1], v[0][2]); - vout[1].setValue(v[1][0], v[1][1], v[1][2]); - vout[2].setValue(v[2][0], v[2][1], v[2][2]); + vout[0] << v[0][0], v[0][1], v[0][2]; + vout[1] << v[1][0], v[1][1], v[1][2]; + vout[2] << v[2][0], v[2][1], v[2][2]; dout[0] = d[0]; dout[1] = d[1]; dout[2] = d[2]; return; } diff --git a/include/hpp/fcl/math/transform.h b/include/hpp/fcl/math/transform.h index 900053fa..5dfbe7c9 100644 --- a/include/hpp/fcl/math/transform.h +++ b/include/hpp/fcl/math/transform.h @@ -362,7 +362,7 @@ public: inline void setIdentity() { R.setIdentity(); - T.setValue(0); + T.setZero(); q = Quaternion3f(); matrix_set = true; } diff --git a/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h b/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h index f7d827cb..9e97491f 100644 --- a/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h +++ b/include/hpp/fcl/shape/geometric_shape_to_BVH_model.h @@ -55,14 +55,14 @@ void generateBVHModel(BVHModel<BV>& model, const Box& shape, const Transform3f& double c = shape.side[2]; std::vector<Vec3f> points(8); std::vector<Triangle> tri_indices(12); - points[0].setValue(0.5 * a, -0.5 * b, 0.5 * c); - points[1].setValue(0.5 * a, 0.5 * b, 0.5 * c); - points[2].setValue(-0.5 * a, 0.5 * b, 0.5 * c); - points[3].setValue(-0.5 * a, -0.5 * b, 0.5 * c); - points[4].setValue(0.5 * a, -0.5 * b, -0.5 * c); - points[5].setValue(0.5 * a, 0.5 * b, -0.5 * c); - points[6].setValue(-0.5 * a, 0.5 * b, -0.5 * c); - points[7].setValue(-0.5 * a, -0.5 * b, -0.5 * c); + points[0] << 0.5 * a, -0.5 * b, 0.5 * c; + points[1] << 0.5 * a, 0.5 * b, 0.5 * c; + points[2] << -0.5 * a, 0.5 * b, 0.5 * c; + points[3] << -0.5 * a, -0.5 * b, 0.5 * c; + points[4] << 0.5 * a, -0.5 * b, -0.5 * c; + points[5] << 0.5 * a, 0.5 * b, -0.5 * c; + points[6] << -0.5 * a, 0.5 * b, -0.5 * c; + points[7] << -0.5 * a, -0.5 * b, -0.5 * c; tri_indices[0].set(0, 4, 1); tri_indices[1].set(1, 4, 5); diff --git a/src/BV/OBB.cpp b/src/BV/OBB.cpp index b88227f7..d69b4cf6 100644 --- a/src/BV/OBB.cpp +++ b/src/BV/OBB.cpp @@ -100,8 +100,8 @@ inline OBB merge_largedist(const OBB& b1, const OBB& b2) else { mid = 2; } - R1.setValue(E[0][max], E[1][max], E[2][max]); - R2.setValue(E[0][mid], E[1][mid], E[2][mid]); + R1 << E[0][max], E[1][max], E[2][max]; + R2 << E[0][mid], E[1][mid], E[2][mid]; // set obb centers and extensions Vec3f center, extent; @@ -588,7 +588,7 @@ OBB& OBB::operator += (const Vec3f& p) bvp.axis[0] = axis[0]; bvp.axis[1] = axis[1]; bvp.axis[2] = axis[2]; - bvp.extent.setValue(0); + bvp.extent.setZero(); *this += bvp; return *this; diff --git a/src/BV/RSS.cpp b/src/BV/RSS.cpp index b78323e9..607d5cbc 100644 --- a/src/BV/RSS.cpp +++ b/src/BV/RSS.cpp @@ -208,7 +208,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(a[0], t, 0); + *P << a[0], t, 0; *Q = S + (*P); } @@ -237,7 +237,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(a[0], t, 0); + *P << a[0], t, 0; *Q = S + (*P); } @@ -265,7 +265,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(0, t, 0); + *P << 0, t, 0; *Q = S + (*P); } @@ -293,7 +293,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(0, t, 0); + *P << 0, t, 0; *Q = S + (*P); } @@ -361,7 +361,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(a[0], t, 0); + *P << a[0], t, 0; *Q = S + (*P); } @@ -389,7 +389,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(a[0], t, 0); + *P << a[0], t, 0; *Q = S + (*P); } @@ -418,7 +418,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(0, t, 0); + *P << 0, t, 0; *Q = S + (*P); } @@ -447,7 +447,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P&& Q) { - P->setValue(0, t, 0); + *P << 0, t, 0; *Q = S + (*P); } @@ -515,7 +515,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, a[1], 0); + *P << t, a[1], 0; *Q = S + (*P); } @@ -543,7 +543,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, a[1], 0); + *P << t, a[1], 0; *Q = S + (*P); } @@ -571,7 +571,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, 0, 0); + *P << t, 0, 0; *Q = S + (*P); } @@ -599,7 +599,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, 0, 0); + *P << t, 0, 0; *Q = S + (*P); } @@ -660,7 +660,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, a[1], 0); + *P << t, a[1], 0; *Q = S + (*P); } @@ -688,7 +688,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, a[1], 0); + *P << t, a[1], 0; *Q = S + (*P); } @@ -717,7 +717,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, 0, 0); + *P << t, 0, 0; *Q = S + (*P); } @@ -745,7 +745,7 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(P && Q) { - P->setValue(t, 0, 0); + *P << t, 0, 0; *Q = S + (*P); } @@ -786,14 +786,14 @@ FCL_REAL rectDistance(const Matrix3f& Rab, Vec3f const& Tab, const FCL_REAL a[2] if(sep1 >= sep2 && sep1 >= 0) { if(Tab[2] > 0) - S.setValue(0, 0, sep1); + S << 0, 0, sep1; else - S.setValue(0, 0, -sep1); + S << 0, 0, -sep1; if(P && Q) { *Q = S; - P->setValue(0); + P->setZero(); } } @@ -1094,11 +1094,11 @@ RSS RSS::operator + (const RSS& other) const else { mid = 2; } // column first matrix, as the axis in RSS - bv.axis[0].setValue(E[0][max], E[1][max], E[2][max]); - bv.axis[1].setValue(E[0][mid], E[1][mid], E[2][mid]); - bv.axis[2].setValue(E[1][max]*E[2][mid] - E[1][mid]*E[2][max], - E[0][mid]*E[2][max] - E[0][max]*E[2][mid], - E[0][max]*E[1][mid] - E[0][mid]*E[1][max]); + bv.axis[0] << E[0][max], E[1][max], E[2][max]; + bv.axis[1] << E[0][mid], E[1][mid], E[2][mid]; + bv.axis[2] << E[1][max]*E[2][mid] - E[1][mid]*E[2][max], + E[0][mid]*E[2][max] - E[0][max]*E[2][mid], + E[0][max]*E[1][mid] - E[0][mid]*E[1][max]; // set rss origin, rectangle size and radius getRadiusAndOriginAndRectangleSize(v, NULL, NULL, NULL, 16, bv.axis, bv.Tr, bv.l, bv.r); diff --git a/src/BVH/BVH_model.cpp b/src/BVH/BVH_model.cpp index 99b4baf6..b283bfc4 100644 --- a/src/BVH/BVH_model.cpp +++ b/src/BVH/BVH_model.cpp @@ -712,7 +712,7 @@ int BVHModel<BV>::recursiveBuildTree(int bv_id, int first_primitive, int num_pri FCL_REAL x = (p1[0] + p2[0] + p3[0]) / 3.0; FCL_REAL y = (p1[1] + p2[1] + p3[1]) / 3.0; FCL_REAL z = (p1[2] + p2[2] + p3[2]) / 3.0; - p.setValue(x, y, z); + p << x, y, z; } else { diff --git a/src/BVH/BVH_utility.cpp b/src/BVH/BVH_utility.cpp index 36f51574..c748d022 100644 --- a/src/BVH/BVH_utility.cpp +++ b/src/BVH/BVH_utility.cpp @@ -520,9 +520,9 @@ static inline void getExtentAndCenter_pointcloud(Vec3f* ps, Vec3f* ps2, unsigned center = axis[0] * o[0] + axis[1] * o[1] + axis[2] * o[2]; - extent.setValue((max_coord[0] - min_coord[0]) / 2, - (max_coord[1] - min_coord[1]) / 2, - (max_coord[2] - min_coord[2]) / 2); + extent << (max_coord[0] - min_coord[0]) / 2, + (max_coord[1] - min_coord[1]) / 2, + (max_coord[2] - min_coord[2]) / 2; } @@ -589,9 +589,9 @@ static inline void getExtentAndCenter_mesh(Vec3f* ps, Vec3f* ps2, Triangle* ts, center = axis[0] * o[0] + axis[1] * o[1] + axis[2] * o[2]; - extent.setValue((max_coord[0] - min_coord[0]) / 2, - (max_coord[1] - min_coord[1]) / 2, - (max_coord[2] - min_coord[2]) / 2); + extent << (max_coord[0] - min_coord[0]) / 2, + (max_coord[1] - min_coord[1]) / 2, + (max_coord[2] - min_coord[2]) / 2; } diff --git a/src/BVH/BV_fitter.cpp b/src/BVH/BV_fitter.cpp index 91b4ac6b..6eda96e4 100644 --- a/src/BVH/BV_fitter.cpp +++ b/src/BVH/BV_fitter.cpp @@ -58,11 +58,11 @@ static inline void axisFromEigen(Vec3f eigenV[3], Matrix3f::U eigenS[3], Vec3f a else if(eigenS[2] > eigenS[max]) { mid = max; max = 2; } else { mid = 2; } - axis[0].setValue(eigenV[0][max], eigenV[1][max], eigenV[2][max]); - axis[1].setValue(eigenV[0][mid], eigenV[1][mid], eigenV[2][mid]); - axis[2].setValue(eigenV[1][max]*eigenV[2][mid] - eigenV[1][mid]*eigenV[2][max], - eigenV[0][mid]*eigenV[2][max] - eigenV[0][max]*eigenV[2][mid], - eigenV[0][max]*eigenV[1][mid] - eigenV[0][mid]*eigenV[1][max]); + axis[0] << eigenV[0][max], eigenV[1][max], eigenV[2][max]; + axis[1] << eigenV[0][mid], eigenV[1][mid], eigenV[2][mid]; + axis[2] << eigenV[1][max]*eigenV[2][mid] - eigenV[1][mid]*eigenV[2][max], + eigenV[0][mid]*eigenV[2][max] - eigenV[0][max]*eigenV[2][mid], + eigenV[0][max]*eigenV[1][mid] - eigenV[0][mid]*eigenV[1][max]; } namespace OBB_fit_functions @@ -71,10 +71,10 @@ namespace OBB_fit_functions void fit1(Vec3f* ps, OBB& bv) { bv.To = ps[0]; - bv.axis[0].setValue(1, 0, 0); - bv.axis[1].setValue(0, 1, 0); - bv.axis[2].setValue(0, 0, 1); - bv.extent.setValue(0); + bv.axis[0] << 1, 0, 0; + bv.axis[1] << 0, 1, 0; + bv.axis[2] << 0, 0, 1; + bv.extent.setZero(); } void fit2(Vec3f* ps, OBB& bv) @@ -88,10 +88,10 @@ void fit2(Vec3f* ps, OBB& bv) bv.axis[0] = p1p2; generateCoordinateSystem(bv.axis[0], bv.axis[1], bv.axis[2]); - bv.extent.setValue(len_p1p2 * 0.5, 0, 0); - bv.To.setValue(0.5 * (p1[0] + p2[0]), - 0.5 * (p1[1] + p2[1]), - 0.5 * (p1[2] + p2[2])); + bv.extent << len_p1p2 * 0.5, 0, 0; + bv.To << 0.5 * (p1[0] + p2[0]), + 0.5 * (p1[1] + p2[1]), + 0.5 * (p1[2] + p2[2]); } void fit3(Vec3f* ps, OBB& bv) @@ -156,9 +156,9 @@ namespace RSS_fit_functions void fit1(Vec3f* ps, RSS& bv) { bv.Tr = ps[0]; - bv.axis[0].setValue(1, 0, 0); - bv.axis[1].setValue(0, 1, 0); - bv.axis[2].setValue(0, 0, 1); + bv.axis[0] << 1, 0, 0; + bv.axis[1] << 0, 1, 0; + bv.axis[2] << 0, 0, 1; bv.l[0] = 0; bv.l[1] = 0; bv.r = 0; @@ -245,10 +245,10 @@ void fit1(Vec3f* ps, kIOS& bv) bv.spheres[0].o = ps[0]; bv.spheres[0].r = 0; - bv.obb.axis[0].setValue(1, 0, 0); - bv.obb.axis[1].setValue(0, 1, 0); - bv.obb.axis[2].setValue(0, 0, 1); - bv.obb.extent.setValue(0); + bv.obb.axis[0] << 1, 0, 0; + bv.obb.axis[1] << 0, 1, 0; + bv.obb.axis[2] << 0, 0, 1; + bv.obb.extent.setZero(); bv.obb.To = ps[0]; } @@ -267,7 +267,7 @@ void fit2(Vec3f* ps, kIOS& bv) generateCoordinateSystem(axis[0], axis[1], axis[2]); FCL_REAL r0 = len_p1p2 * 0.5; - bv.obb.extent.setValue(r0, 0, 0); + bv.obb.extent << r0, 0, 0; bv.obb.To = (p1 + p2) * 0.5; bv.spheres[0].o = bv.obb.To; diff --git a/src/ccd/motion.cpp b/src/ccd/motion.cpp index 6ef952cb..58d8792c 100644 --- a/src/ccd/motion.cpp +++ b/src/ccd/motion.cpp @@ -441,7 +441,7 @@ FCL_REAL TriangleMotionBoundVisitor::visit(const InterpMotion& motion) const InterpMotion::InterpMotion() : MotionBase() { // Default angular velocity is zero - angular_axis.setValue(1, 0, 0); + angular_axis << 1, 0, 0; angular_vel = 0; // Default reference point is local zero point diff --git a/src/intersect.cpp b/src/intersect.cpp index b4ac609a..bcf3d10d 100644 --- a/src/intersect.cpp +++ b/src/intersect.cpp @@ -1111,11 +1111,10 @@ FCL_REAL Intersect::distanceToPlane(const Vec3f& n, FCL_REAL t, const Vec3f& v) bool Intersect::buildTrianglePlane(const Vec3f& v1, const Vec3f& v2, const Vec3f& v3, Vec3f* n, FCL_REAL* t) { Vec3f n_ = (v2 - v1).cross(v3 - v1); - bool can_normalize = false; - n_.normalize(&can_normalize); - if(can_normalize) + FCL_REAL norm2 = n_.squaredNorm(); + if (n > 0) { - *n = n_; + *n = n_ / sqrt(norm2); *t = n_.dot(v1); return true; } @@ -1126,11 +1125,10 @@ bool Intersect::buildTrianglePlane(const Vec3f& v1, const Vec3f& v2, const Vec3f bool Intersect::buildEdgePlane(const Vec3f& v1, const Vec3f& v2, const Vec3f& tn, Vec3f* n, FCL_REAL* t) { Vec3f n_ = (v2 - v1).cross(tn); - bool can_normalize = false; - n_.normalize(&can_normalize); - if(can_normalize) + FCL_REAL norm2 = n_.squaredNorm(); + if (n > 0) { - *n = n_; + *n = n_ / sqrt(norm2); *t = n_.dot(v1); return true; } diff --git a/src/math/transform.cpp b/src/math/transform.cpp index c64b2666..5fb31596 100644 --- a/src/math/transform.cpp +++ b/src/math/transform.cpp @@ -103,9 +103,9 @@ void Quaternion3f::toRotation(Matrix3f& R) const FCL_REAL twoYZ = twoZ*data[2]; FCL_REAL twoZZ = twoZ*data[3]; - R.setValue(1.0 - (twoYY + twoZZ), twoXY - twoWZ, twoXZ + twoWY, - twoXY + twoWZ, 1.0 - (twoXX + twoZZ), twoYZ - twoWX, - twoXZ - twoWY, twoYZ + twoWX, 1.0 - (twoXX + twoYY)); + R << 1.0 - (twoYY + twoZZ), twoXY - twoWZ, twoXZ + twoWY, + twoXY + twoWZ, 1.0 - (twoXX + twoZZ), twoYZ - twoWX, + twoXZ - twoWY, twoYZ + twoWX, 1.0 - (twoXX + twoYY); } @@ -169,9 +169,9 @@ void Quaternion3f::toAxes(Vec3f axis[3]) const FCL_REAL twoYZ = twoZ*data[2]; FCL_REAL twoZZ = twoZ*data[3]; - axis[0].setValue(1.0 - (twoYY + twoZZ), twoXY + twoWZ, twoXZ - twoWY); - axis[1].setValue(twoXY - twoWZ, 1.0 - (twoXX + twoZZ), twoYZ + twoWX); - axis[2].setValue(twoXZ + twoWY, twoYZ - twoWX, 1.0 - (twoXX + twoYY)); + axis[0] << 1.0 - (twoYY + twoZZ), twoXY + twoWZ, twoXZ - twoWY; + axis[1] << twoXY - twoWZ, 1.0 - (twoXX + twoZZ), twoYZ + twoWX; + axis[2] << twoXZ + twoWY, twoYZ - twoWX, 1.0 - (twoXX + twoYY); } diff --git a/src/narrowphase/gjk_libccd.cpp b/src/narrowphase/gjk_libccd.cpp index 3afa4945..caa207ba 100644 --- a/src/narrowphase/gjk_libccd.cpp +++ b/src/narrowphase/gjk_libccd.cpp @@ -780,9 +780,9 @@ bool GJKCollide(void* obj1, ccd_support_fn supp1, ccd_center_fn cen1, res = ccdMPRPenetration(obj1, obj2, &ccd, &depth, &dir, &pos); if(res == 0) { - contact_points->setValue(ccdVec3X(&pos), ccdVec3Y(&pos), ccdVec3Z(&pos)); + *contact_points << ccdVec3X(&pos), ccdVec3Y(&pos), ccdVec3Z(&pos); *penetration_depth = depth; - normal->setValue(ccdVec3X(&dir), ccdVec3Y(&dir), ccdVec3Z(&dir)); + *normal << ccdVec3X(&dir), ccdVec3Y(&dir), ccdVec3Z(&dir); return true; } @@ -808,8 +808,8 @@ bool GJKDistance(void* obj1, ccd_support_fn supp1, ccd_vec3_t p1_, p2_; dist = libccd_extension::ccdGJKDist2(obj1, obj2, &ccd, &p1_, &p2_); - if(p1) p1->setValue(ccdVec3X(&p1_), ccdVec3Y(&p1_), ccdVec3Z(&p1_)); - if(p2) p2->setValue(ccdVec3X(&p2_), ccdVec3Y(&p2_), ccdVec3Z(&p2_)); + if(p1) *p1 << ccdVec3X(&p1_), ccdVec3Y(&p1_), ccdVec3Z(&p1_); + if(p2) *p2 << ccdVec3X(&p2_), ccdVec3Y(&p2_), ccdVec3Z(&p2_); if(res) *res = dist; if(dist < 0) return false; else return true; diff --git a/src/shape/geometric_shapes.cpp b/src/shape/geometric_shapes.cpp index 5af26610..bbd36068 100644 --- a/src/shape/geometric_shapes.cpp +++ b/src/shape/geometric_shapes.cpp @@ -109,7 +109,7 @@ void Halfspace::unitNormalTest() } else { - n.setValue(1, 0, 0); + n << 1, 0, 0; d = 0; } } @@ -125,7 +125,7 @@ void Plane::unitNormalTest() } else { - n.setValue(1, 0, 0); + n << 1, 0, 0; d = 0; } } diff --git a/src/shape/geometric_shapes_utility.cpp b/src/shape/geometric_shapes_utility.cpp index d6f6e69c..3cc09c6e 100644 --- a/src/shape/geometric_shapes_utility.cpp +++ b/src/shape/geometric_shapes_utility.cpp @@ -424,10 +424,10 @@ void computeBV<OBB, Sphere>(const Sphere& s, const Transform3f& tf, OBB& bv) const Vec3f& T = tf.getTranslation(); bv.To = T; - bv.axis[0].setValue(1, 0, 0); - bv.axis[1].setValue(0, 1, 0); - bv.axis[2].setValue(0, 0, 1); - bv.extent.setValue(s.radius); + bv.axis[0] << 1, 0, 0; + bv.axis[1] << 0, 1, 0; + bv.axis[2] << 0, 0, 1; + bv.extent.setConstant(s.radius); } template<> @@ -440,7 +440,7 @@ void computeBV<OBB, Capsule>(const Capsule& s, const Transform3f& tf, OBB& bv) bv.axis[0] = R.col(0); bv.axis[1] = R.col(1); bv.axis[2] = R.col(2); - bv.extent.setValue(s.radius, s.radius, s.lz / 2 + s.radius); + bv.extent << s.radius, s.radius, s.lz / 2 + s.radius; } template<> @@ -453,7 +453,7 @@ void computeBV<OBB, Cone>(const Cone& s, const Transform3f& tf, OBB& bv) bv.axis[0] = R.col(0); bv.axis[1] = R.col(1); bv.axis[2] = R.col(2); - bv.extent.setValue(s.radius, s.radius, s.lz / 2); + bv.extent << s.radius, s.radius, s.lz / 2; } template<> @@ -466,7 +466,7 @@ void computeBV<OBB, Cylinder>(const Cylinder& s, const Transform3f& tf, OBB& bv) bv.axis[0] = R.col(0); bv.axis[1] = R.col(1); bv.axis[2] = R.col(2); - bv.extent.setValue(s.radius, s.radius, s.lz / 2); + bv.extent << s.radius, s.radius, s.lz / 2; } template<> @@ -492,7 +492,7 @@ void computeBV<OBB, Halfspace>(const Halfspace& s, const Transform3f& tf, OBB& b bv.axis[1] = Vec3f(0, 1, 0); bv.axis[2] = Vec3f(0, 0, 1); bv.To = Vec3f(0, 0, 0); - bv.extent.setValue(std::numeric_limits<FCL_REAL>::max()); + bv.extent.setConstant(std::numeric_limits<FCL_REAL>::max()); } template<> @@ -723,7 +723,7 @@ void computeBV<OBB, Plane>(const Plane& s, const Transform3f& tf, OBB& bv) generateCoordinateSystem(n, bv.axis[1], bv.axis[2]); bv.axis[0] = n; - bv.extent.setValue(0, std::numeric_limits<FCL_REAL>::max(), std::numeric_limits<FCL_REAL>::max()); + bv.extent << 0, std::numeric_limits<FCL_REAL>::max(), std::numeric_limits<FCL_REAL>::max(); Vec3f p = s.n * s.d; bv.To = tf.transform(p); /// n'd' = R * n * (d + (R * n) * T) = R * (n * d) + T diff --git a/test/test_fcl_bvh_models.cpp b/test/test_fcl_bvh_models.cpp index 133a2553..c77805d4 100644 --- a/test/test_fcl_bvh_models.cpp +++ b/test/test_fcl_bvh_models.cpp @@ -67,14 +67,14 @@ void testBVHModelPointCloud() double b = box.side[1]; double c = box.side[2]; std::vector<Vec3f> points(8); - points[0].setValue(0.5 * a, -0.5 * b, 0.5 * c); - points[1].setValue(0.5 * a, 0.5 * b, 0.5 * c); - points[2].setValue(-0.5 * a, 0.5 * b, 0.5 * c); - points[3].setValue(-0.5 * a, -0.5 * b, 0.5 * c); - points[4].setValue(0.5 * a, -0.5 * b, -0.5 * c); - points[5].setValue(0.5 * a, 0.5 * b, -0.5 * c); - points[6].setValue(-0.5 * a, 0.5 * b, -0.5 * c); - points[7].setValue(-0.5 * a, -0.5 * b, -0.5 * c); + points[0] << 0.5 * a, -0.5 * b, 0.5 * c; + points[1] << 0.5 * a, 0.5 * b, 0.5 * c; + points[2] << -0.5 * a, 0.5 * b, 0.5 * c; + points[3] << -0.5 * a, -0.5 * b, 0.5 * c; + points[4] << 0.5 * a, -0.5 * b, -0.5 * c; + points[5] << 0.5 * a, 0.5 * b, -0.5 * c; + points[6] << -0.5 * a, 0.5 * b, -0.5 * c; + points[7] << -0.5 * a, -0.5 * b, -0.5 * c; int result; @@ -108,14 +108,14 @@ void testBVHModelTriangles() double c = box.side[2]; std::vector<Vec3f> points(8); std::vector<Triangle> tri_indices(12); - points[0].setValue(0.5 * a, -0.5 * b, 0.5 * c); - points[1].setValue(0.5 * a, 0.5 * b, 0.5 * c); - points[2].setValue(-0.5 * a, 0.5 * b, 0.5 * c); - points[3].setValue(-0.5 * a, -0.5 * b, 0.5 * c); - points[4].setValue(0.5 * a, -0.5 * b, -0.5 * c); - points[5].setValue(0.5 * a, 0.5 * b, -0.5 * c); - points[6].setValue(-0.5 * a, 0.5 * b, -0.5 * c); - points[7].setValue(-0.5 * a, -0.5 * b, -0.5 * c); + points[0] << 0.5 * a, -0.5 * b, 0.5 * c; + points[1] << 0.5 * a, 0.5 * b, 0.5 * c; + points[2] << -0.5 * a, 0.5 * b, 0.5 * c; + points[3] << -0.5 * a, -0.5 * b, 0.5 * c; + points[4] << 0.5 * a, -0.5 * b, -0.5 * c; + points[5] << 0.5 * a, 0.5 * b, -0.5 * c; + points[6] << -0.5 * a, 0.5 * b, -0.5 * c; + points[7] << -0.5 * a, -0.5 * b, -0.5 * c; tri_indices[0].set(0, 4, 1); tri_indices[1].set(1, 4, 5); @@ -162,14 +162,14 @@ void testBVHModelSubModel() double c = box.side[2]; std::vector<Vec3f> points(8); std::vector<Triangle> tri_indices(12); - points[0].setValue(0.5 * a, -0.5 * b, 0.5 * c); - points[1].setValue(0.5 * a, 0.5 * b, 0.5 * c); - points[2].setValue(-0.5 * a, 0.5 * b, 0.5 * c); - points[3].setValue(-0.5 * a, -0.5 * b, 0.5 * c); - points[4].setValue(0.5 * a, -0.5 * b, -0.5 * c); - points[5].setValue(0.5 * a, 0.5 * b, -0.5 * c); - points[6].setValue(-0.5 * a, 0.5 * b, -0.5 * c); - points[7].setValue(-0.5 * a, -0.5 * b, -0.5 * c); + points[0] << 0.5 * a, -0.5 * b, 0.5 * c; + points[1] << 0.5 * a, 0.5 * b, 0.5 * c; + points[2] << -0.5 * a, 0.5 * b, 0.5 * c; + points[3] << -0.5 * a, -0.5 * b, 0.5 * c; + points[4] << 0.5 * a, -0.5 * b, -0.5 * c; + points[5] << 0.5 * a, 0.5 * b, -0.5 * c; + points[6] << -0.5 * a, 0.5 * b, -0.5 * c; + points[7] << -0.5 * a, -0.5 * b, -0.5 * c; tri_indices[0].set(0, 4, 1); tri_indices[1].set(1, 4, 5); diff --git a/test/test_fcl_geometric_shapes.cpp b/test/test_fcl_geometric_shapes.cpp index 1704c661..7199b307 100644 --- a/test/test_fcl_geometric_shapes.cpp +++ b/test/test_fcl_geometric_shapes.cpp @@ -303,7 +303,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(30, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = Transform3f(); @@ -317,7 +317,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(29.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -337,7 +337,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-29.9, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -347,12 +347,12 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-30.0, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-30.01, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false); tf1 = transform; @@ -372,14 +372,14 @@ void testBoxBoxContactPoints(const Matrix3f& R) // Vertices of s2 std::vector<Vec3f> vertices(8); - vertices[0].setValue( 1, 1, 1); - vertices[1].setValue( 1, 1, -1); - vertices[2].setValue( 1, -1, 1); - vertices[3].setValue( 1, -1, -1); - vertices[4].setValue(-1, 1, 1); - vertices[5].setValue(-1, 1, -1); - vertices[6].setValue(-1, -1, 1); - vertices[7].setValue(-1, -1, -1); + vertices[0] << 1, 1, 1; + vertices[1] << 1, 1, -1; + vertices[2] << 1, -1, 1; + vertices[3] << 1, -1, -1; + vertices[4] << -1, 1, 1; + vertices[5] << -1, 1, -1; + vertices[6] << -1, -1, 1; + vertices[7] << -1, -1, -1; for (int i = 0; i < 8; ++i) { @@ -431,7 +431,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_boxbox) tf1 = Transform3f(); tf2 = Transform3f(); // TODO: Need convention for normal when the centers of two objects are at same position. The current result is (1, 0, 0). - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -442,7 +442,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_boxbox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(15, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = Transform3f(); @@ -451,7 +451,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_boxbox) tf1 = Transform3f(); tf2 = Transform3f(q); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -486,7 +486,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherebox) tf1 = Transform3f(); tf2 = Transform3f(); // TODO: Need convention for normal when the centers of two objects are at same position. The current result is (-1, 0, 0). - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -504,7 +504,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(22.4, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -540,7 +540,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(24.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -550,7 +550,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(25, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -560,7 +560,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spherecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(25.1, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, false); tf1 = transform; @@ -596,7 +596,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_cylindercylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(9.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -640,7 +640,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(9.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -658,7 +658,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 9.9)); - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -694,7 +694,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(9.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal, false, 0.061); tf1 = transform; @@ -712,7 +712,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_conecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 9.9)); - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s1, tf1, s2, tf2, GST_LIBCCD, true, NULL, NULL, &normal); tf1 = transform; @@ -733,9 +733,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheretriangle) { Sphere s(10); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -750,9 +750,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_spheretriangle) BOOST_CHECK(res); - t[0].setValue(30, 0, 0); - t[1].setValue(9.9, -20, 0); - t[2].setValue(9.9, 20, 0); + t[0] << 30, 0, 0; + t[1] << 9.9, -20, 0; + t[2] << 9.9, 20, 0; res = solver1.shapeTriangleIntersect(s, Transform3f(), t[0], t[1], t[2], NULL, NULL, NULL); BOOST_CHECK(res); @@ -772,9 +772,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacetriangle) { Halfspace hs(Vec3f(1, 0, 0), 0); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -791,9 +791,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacetriangle) BOOST_CHECK(res); - t[0].setValue(20, 0, 0); - t[1].setValue(0, -20, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << 0, -20, 0; + t[2] << 0, 20, 0; res = solver1.shapeTriangleIntersect(hs, Transform3f(), t[0], t[1], t[2], Transform3f(), NULL, NULL, NULL); BOOST_CHECK(res); @@ -813,9 +813,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planetriangle) { Plane hs(Vec3f(1, 0, 0), 0); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -832,9 +832,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planetriangle) BOOST_CHECK(res); - t[0].setValue(20, 0, 0); - t[1].setValue(-0.1, -20, 0); - t[2].setValue(-0.1, 20, 0); + t[0] << 20, 0, 0; + t[1] << -0.1, -20, 0; + t[2] << -0.1, 20, 0; res = solver1.shapeTriangleIntersect(hs, Transform3f(), t[0], t[1], t[2], Transform3f(), NULL, NULL, NULL); BOOST_CHECK(res); @@ -867,9 +867,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacesphere) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(-5, 0, 0); + contact << -5, 0, 0; depth = 10; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -881,9 +881,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacesphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(5, 0, 0)); - contact.setValue(-2.5, 0, 0); + contact << -2.5, 0, 0; depth = 15; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -895,9 +895,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacesphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-5, 0, 0)); - contact.setValue(-7.5, 0, 0); + contact << -7.5, 0, 0; depth = 5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -917,9 +917,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacesphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(10.1, 0, 0)); - contact.setValue(0.05, 0, 0); + contact << 0.05, 0, 0; depth = 20.1; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -949,7 +949,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planesphere) tf2 = Transform3f(); contact.setZero(); depth = 10; - normal.setValue(1, 0, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -961,9 +961,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planesphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(5, 0, 0)); - contact.setValue(5, 0, 0); + contact << 5, 0, 0; depth = 5; - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -975,9 +975,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planesphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-5, 0, 0)); - contact.setValue(-5, 0, 0); + contact << -5, 0, 0; depth = 5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1021,9 +1021,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacebox) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(-1.25, 0, 0); + contact << -1.25, 0, 0; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1035,9 +1035,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(1.25, 0, 0)); - contact.setValue(-0.625, 0, 0); + contact << -0.625, 0, 0; depth = 3.75; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1049,9 +1049,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-1.25, 0, 0)); - contact.setValue(-1.875, 0, 0); + contact << -1.875, 0, 0; depth = 1.25; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1063,9 +1063,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.51, 0, 0)); - contact.setValue(0.005, 0, 0); + contact << 0.005, 0, 0; depth = 5.01; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1105,9 +1105,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planebox) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 2.5; - normal.setValue(1, 0, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1119,9 +1119,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(1.25, 0, 0)); - contact.setValue(1.25, 0, 0); + contact << 1.25, 0, 0; depth = 1.25; - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1133,9 +1133,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-1.25, 0, 0)); - contact.setValue(-1.25, 0, 0); + contact << -1.25, 0, 0; depth = 1.25; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1183,9 +1183,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(-2.5, 0, 0); + contact << -2.5, 0, 0; depth = 5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1197,9 +1197,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(-1.25, 0, 0); + contact << -1.25, 0, 0; depth = 7.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1211,9 +1211,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-3.75, 0, 0); + contact << -3.75, 0, 0; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1225,9 +1225,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(5.1, 0, 0)); - contact.setValue(0.05, 0, 0); + contact << 0.05, 0, 0; depth = 10.1; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1252,9 +1252,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, -2.5, 0); + contact << 0, -2.5, 0; depth = 5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1266,9 +1266,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, -1.25, 0); + contact << 0, -1.25, 0; depth = 7.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1280,9 +1280,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -3.75, 0); + contact << 0, -3.75, 0; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1294,9 +1294,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 5.1, 0)); - contact.setValue(0, 0.05, 0); + contact << 0, 0.05, 0; depth = 10.1; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1321,9 +1321,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, -5); + contact << 0, 0, -5; depth = 10; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1335,9 +1335,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, -3.75); + contact << 0, 0, -3.75; depth = 12.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1349,9 +1349,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -6.25); + contact << 0, 0, -6.25; depth = 7.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1363,9 +1363,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 10.1)); - contact.setValue(0, 0, 0.05); + contact << 0, 0, 0.05; depth = 20.1; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1401,9 +1401,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(1, 0, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1415,9 +1415,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(2.5, 0, 0); + contact << 2.5, 0, 0; depth = 2.5; - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1429,9 +1429,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-2.5, 0, 0); + contact << -2.5, 0, 0; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1464,9 +1464,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(0, 1, 0); // (0, 1, 0) or (0, -1, 0) + normal << 0, 1, 0; // (0, 1, 0) or (0, -1, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1478,9 +1478,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, 2.5, 0); + contact << 0, 2.5, 0; depth = 2.5; - normal.setValue(0, 1, 0); + normal << 0, 1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1492,9 +1492,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -2.5, 0); + contact << 0, -2.5, 0; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1527,9 +1527,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 10; - normal.setValue(0, 0, 1); // (0, 0, 1) or (0, 0, -1) + normal << 0, 0, 1; // (0, 0, 1) or (0, 0, -1) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1541,9 +1541,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, 2.5); + contact << 0, 0, 2.5; depth = 7.5; - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1555,9 +1555,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -2.5); + contact << 0, 0, -2.5; depth = 7.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1601,9 +1601,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(-2.5, 0, 0); + contact << -2.5, 0, 0; depth = 5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1615,9 +1615,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(-1.25, 0, 0); + contact << -1.25, 0, 0; depth = 7.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1629,9 +1629,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-3.75, 0, 0); + contact << -3.75, 0, 0; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1643,9 +1643,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(5.1, 0, 0)); - contact.setValue(0.05, 0, 0); + contact << 0.05, 0, 0; depth = 10.1; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1670,9 +1670,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, -2.5, 0); + contact << 0, -2.5, 0; depth = 5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1684,9 +1684,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, -1.25, 0); + contact << 0, -1.25, 0; depth = 7.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1698,9 +1698,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -3.75, 0); + contact << 0, -3.75, 0; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1712,9 +1712,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 5.1, 0)); - contact.setValue(0, 0.05, 0); + contact << 0, 0.05, 0; depth = 10.1; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1739,9 +1739,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, -2.5); + contact << 0, 0, -2.5; depth = 5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1753,9 +1753,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, -1.25); + contact << 0, 0, -1.25; depth = 7.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1767,9 +1767,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -3.75); + contact << 0, 0, -3.75; depth = 2.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1781,9 +1781,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 5.1)); - contact.setValue(0, 0, 0.05); + contact << 0, 0, 0.05; depth = 10.1; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1819,9 +1819,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(1, 0, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1833,9 +1833,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(2.5, 0, 0); + contact << 2.5, 0, 0; depth = 2.5; - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1847,9 +1847,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-2.5, 0, 0); + contact << -2.5, 0, 0; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1882,9 +1882,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(0, 1, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1896,9 +1896,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, 2.5, 0); + contact << 0, 2.5, 0; depth = 2.5; - normal.setValue(0, 1, 0); + normal << 0, 1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1910,9 +1910,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -2.5, 0); + contact << 0, -2.5, 0; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1945,9 +1945,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(0, 0, 1); // (1, 0, 0) or (-1, 0, 0) + normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -1959,9 +1959,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, 2.5); + contact << 0, 0, 2.5; depth = 2.5; - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -1973,9 +1973,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -2.5); + contact << 0, 0, -2.5; depth = 2.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2020,9 +2020,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(-2.5, 0, -5); + contact << -2.5, 0, -5; depth = 5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2034,9 +2034,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(-1.25, 0, -5); + contact << -1.25, 0, -5; depth = 7.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2048,9 +2048,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-3.75, 0, -5); + contact << -3.75, 0, -5; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2062,9 +2062,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(5.1, 0, 0)); - contact.setValue(0.05, 0, -5); + contact << 0.05, 0, -5; depth = 10.1; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2089,9 +2089,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, -2.5, -5); + contact << 0, -2.5, -5; depth = 5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2103,9 +2103,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, -1.25, -5); + contact << 0, -1.25, -5; depth = 7.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2117,9 +2117,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -3.75, -5); + contact << 0, -3.75, -5; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2131,9 +2131,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 5.1, 0)); - contact.setValue(0, 0.05, -5); + contact << 0, 0.05, -5; depth = 10.1; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2158,9 +2158,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, -2.5); + contact << 0, 0, -2.5; depth = 5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2172,9 +2172,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, -1.25); + contact << 0, 0, -1.25; depth = 7.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2186,9 +2186,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -3.75); + contact << 0, 0, -3.75; depth = 2.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2200,9 +2200,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_halfspacecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 5.1)); - contact.setValue(0, 0, 0.05); + contact << 0, 0, 0.05; depth = 10.1; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2238,9 +2238,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(1, 0, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 1, 0, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -2252,9 +2252,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(2.5, 0, 0)); - contact.setValue(2.5, 0, -2.5); + contact << 2.5, 0, -2.5; depth = 2.5; - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2266,9 +2266,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-2.5, 0, 0)); - contact.setValue(-2.5, 0, -2.5); + contact << -2.5, 0, -2.5; depth = 2.5; - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2301,9 +2301,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(0, 1, 0); // (1, 0, 0) or (-1, 0, 0) + normal << 0, 1, 0; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -2315,9 +2315,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 2.5, 0)); - contact.setValue(0, 2.5, -2.5); + contact << 0, 2.5, -2.5; depth = 2.5; - normal.setValue(0, 1, 0); + normal << 0, 1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2329,9 +2329,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, -2.5, 0)); - contact.setValue(0, -2.5, -2.5); + contact << 0, -2.5, -2.5; depth = 2.5; - normal.setValue(0, -1, 0); + normal << 0, -1, 0; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2364,9 +2364,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(); - contact.setValue(0, 0, 0); + contact << 0, 0, 0; depth = 5; - normal.setValue(0, 0, 1); // (1, 0, 0) or (-1, 0, 0) + normal << 0, 0, 1; // (1, 0, 0) or (-1, 0, 0) testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal, true); tf1 = transform; @@ -2378,9 +2378,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 2.5)); - contact.setValue(0, 0, 2.5); + contact << 0, 0, 2.5; depth = 2.5; - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2392,9 +2392,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersection_planecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, -2.5)); - contact.setValue(0, 0, -2.5); + contact << 0, 0, -2.5; depth = 2.5; - normal.setValue(0, 0, -1); + normal << 0, 0, -1; testShapeInersection(s, tf1, hs, tf2, GST_LIBCCD, true, &contact, &depth, &normal); tf1 = transform; @@ -2724,7 +2724,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(30, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = Transform3f(); @@ -2738,7 +2738,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(29.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2758,7 +2758,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-29.9, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2768,12 +2768,12 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheresphere) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-30.0, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = Transform3f(); tf2 = Transform3f(Vec3f(-30.01, 0, 0)); - normal.setValue(-1, 0, 0); + normal << -1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, false); tf1 = transform; @@ -2802,7 +2802,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_boxbox) tf1 = Transform3f(); tf2 = Transform3f(); // TODO: Need convention for normal when the centers of two objects are at same position. The current result is (1, 0, 0). - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2813,7 +2813,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_boxbox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(15, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2822,7 +2822,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_boxbox) tf1 = Transform3f(); tf2 = Transform3f(q); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2858,7 +2858,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spherebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(22.5, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal, false, 1e-7); // built-in GJK solver requires larger tolerance than libccd tf1 = transform; @@ -2867,7 +2867,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spherebox) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(22.4, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal, false, 1e-2); // built-in GJK solver requires larger tolerance than libccd tf1 = transform; @@ -2905,7 +2905,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spherecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(24.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2915,7 +2915,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spherecapsule) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(25, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2951,7 +2951,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_cylindercylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(9.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal, false, 3e-1); // built-in GJK solver requires larger tolerance than libccd tf1 = transform; @@ -2963,7 +2963,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_cylindercylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(10, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -2998,7 +2998,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_conecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(9.9, 0, 0)); - normal.setValue(1, 0, 0); + normal << 1, 0, 0; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal, false, 5.7e-1); // built-in GJK solver requires larger tolerance than libccd tf1 = transform; @@ -3018,7 +3018,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_conecone) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 9.9)); - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -3072,7 +3072,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_conecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 9.9)); - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -3084,7 +3084,7 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_conecylinder) tf1 = Transform3f(); tf2 = Transform3f(Vec3f(0, 0, 10)); - normal.setValue(0, 0, 1); + normal << 0, 0, 1; testShapeInersection(s1, tf1, s2, tf2, GST_INDEP, true, NULL, NULL, &normal); tf1 = transform; @@ -3097,9 +3097,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheretriangle) { Sphere s(10); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -3115,9 +3115,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_spheretriangle) res = solver2.shapeTriangleIntersect(s, transform, t[0], t[1], t[2], transform, NULL, NULL, NULL); BOOST_CHECK(res); - t[0].setValue(30, 0, 0); - t[1].setValue(9.9, -20, 0); - t[2].setValue(9.9, 20, 0); + t[0] << 30, 0, 0; + t[1] << 9.9, -20, 0; + t[2] << 9.9, 20, 0; res = solver2.shapeTriangleIntersect(s, Transform3f(), t[0], t[1], t[2], NULL, NULL, NULL); BOOST_CHECK(res); @@ -3137,9 +3137,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_halfspacetriangle) { Halfspace hs(Vec3f(1, 0, 0), 0); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -3156,9 +3156,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_halfspacetriangle) BOOST_CHECK(res); - t[0].setValue(20, 0, 0); - t[1].setValue(0, -20, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << 0, -20, 0; + t[2] << 0, 20, 0; res = solver2.shapeTriangleIntersect(hs, Transform3f(), t[0], t[1], t[2], Transform3f(), NULL, NULL, NULL); BOOST_CHECK(res); @@ -3178,9 +3178,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_planetriangle) { Plane hs(Vec3f(1, 0, 0), 0); Vec3f t[3]; - t[0].setValue(20, 0, 0); - t[1].setValue(-20, 0, 0); - t[2].setValue(0, 20, 0); + t[0] << 20, 0, 0; + t[1] << -20, 0, 0; + t[2] << 0, 20, 0; Transform3f transform; generateRandomTransform(extents, transform); @@ -3197,9 +3197,9 @@ BOOST_AUTO_TEST_CASE(shapeIntersectionGJK_planetriangle) BOOST_CHECK(res); - t[0].setValue(20, 0, 0); - t[1].setValue(-0.1, -20, 0); - t[2].setValue(-0.1, 20, 0); + t[0] << 20, 0, 0; + t[1] << -0.1, -20, 0; + t[2] << -0.1, 20, 0; res = solver2.shapeTriangleIntersect(hs, Transform3f(), t[0], t[1], t[2], Transform3f(), NULL, NULL, NULL); BOOST_CHECK(res); diff --git a/test/test_fcl_utility.cpp b/test/test_fcl_utility.cpp index 7f7f1723..d01b6026 100644 --- a/test/test_fcl_utility.cpp +++ b/test/test_fcl_utility.cpp @@ -218,9 +218,9 @@ void eulerToMatrix(FCL_REAL a, FCL_REAL b, FCL_REAL c, Matrix3f& R) FCL_REAL s2 = sin(b); FCL_REAL s3 = sin(c); - R.setValue(c1 * c2, - c2 * s1, s2, - c3 * s1 + c1 * s2 * s3, c1 * c3 - s1 * s2 * s3, - c2 * s3, - s1 * s3 - c1 * c3 * s2, c3 * s1 * s2 + c1 * s3, c2 * c3); + R << c1 * c2, - c2 * s1, s2, + c3 * s1 + c1 * s2 * s3, c1 * c3 - s1 * s2 * s3, - c2 * s3, + s1 * s3 - c1 * c3 * s2, c3 * s1 * s2 + c1 * s3, c2 * c3; } void generateRandomTransform(FCL_REAL extents[6], Transform3f& transform) -- GitLab