diff --git a/src/BV/OBB.cpp b/src/BV/OBB.cpp index 2628e9214fdc23a110ca59245401033849684afa..14b256d58b8d0e06387bec1ee08fccf1f6c9e92c 100644 --- a/src/BV/OBB.cpp +++ b/src/BV/OBB.cpp @@ -562,7 +562,7 @@ bool OBB::overlap(const OBB& other) const bool OBB::contain(const Vec3f& p) const { - Vec3f local_p = p - To; + Vec3f local_p (p - To); FCL_REAL proj = local_p.dot(axes.col(0)); if((proj > extent[0]) || (proj < -extent[0])) return false; @@ -581,7 +581,7 @@ bool OBB::contain(const Vec3f& p) const OBB& OBB::operator += (const Vec3f& p) { OBB bvp; - bvp.To.noalias() = p; + bvp.To = p; bvp.axes.noalias() = axes; bvp.extent.setZero(); diff --git a/src/BV/kIOS.cpp b/src/BV/kIOS.cpp index a482c4d0b150c7dc080bb49a1e25a38416f56fc8..b523f455759439c053fbee85700f6c50653c2b97 100644 --- a/src/BV/kIOS.cpp +++ b/src/BV/kIOS.cpp @@ -183,7 +183,7 @@ bool overlap(const Matrix3f& R0, const Vec3f& T0, const kIOS& b1, const kIOS& b2 b2_temp.obb.To = R0 * b2_temp.obb.To + T0; - b2_temp.obb.axes = R0 * b2_temp.obb.axes; + b2_temp.obb.axes.applyOnTheLeft(R0); return b1.overlap(b2_temp); } diff --git a/src/BVH/BVH_model.cpp b/src/BVH/BVH_model.cpp index ae4e903dac6352801adb3c10429a87d133b72a24..28d762b50f08f7ff67f9e8f3a61bb4c314f8b1e6 100644 --- a/src/BVH/BVH_model.cpp +++ b/src/BVH/BVH_model.cpp @@ -890,7 +890,8 @@ void BVHModel<OBB>::makeParentRelativeRecurse(int bv_id, Matrix3f& parent_axes, } // make self parent relative - obb.axes = parent_axes.transpose() * obb.axes; + // obb.axes = parent_axes.transpose() * obb.axes; + obb.axes.applyOnTheLeft(parent_axes.transpose()); Vec3f t (obb.To - parent_c); obb.To.noalias() = parent_axes.transpose() * t; @@ -908,7 +909,8 @@ void BVHModel<RSS>::makeParentRelativeRecurse(int bv_id, Matrix3f& parent_axes, } // make self parent relative - rss.axes = parent_axes.transpose() * rss.axes; + // rss.axes = parent_axes.transpose() * rss.axes; + rss.axes.applyOnTheLeft(parent_axes.transpose()); Vec3f t (rss.Tr - parent_c); rss.Tr.noalias() = parent_axes.transpose() * t;