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