diff --git a/src/spatial/force-dense.hpp b/src/spatial/force-dense.hpp index 8dac2ba34b5ac7807987f6c79dc230626e91d1dc..a0531e2207be630b89f0cb3f91f82d907fb04e5b 100644 --- a/src/spatial/force-dense.hpp +++ b/src/spatial/force-dense.hpp @@ -48,6 +48,7 @@ namespace se3 using Base::angular; using Base::derived; using Base::isApprox; + using Base::operator=; Derived & setZero() { linear().setZero(); angular().setZero(); return derived(); } Derived & setRandom() { linear().setRandom(); angular().setRandom(); return derived(); } @@ -62,7 +63,7 @@ namespace se3 // Arithmetic operators template<typename D2> - Derived & operator=(const ForceDense<D2> & other) + Derived & __equl__(const ForceDense<D2> & other) { linear() = other.linear(); angular() = other.angular(); @@ -78,6 +79,12 @@ namespace se3 return derived(); } + template<typename D2> + Derived & operator=(const ForceDense<D2> & other) + { + return derived().__equl__(other.derived()); + } + ForcePlain operator-() const { return derived().__opposite__(); } template<typename M1> ForcePlain operator+(const ForceDense<M1> & v) const { return derived().__plus__(v.derived()); } diff --git a/src/spatial/force-tpl.hpp b/src/spatial/force-tpl.hpp index b4e0acac0052f4f5dd85a82a32ec4d32e96da433..ea8c7c3aee7a56a6b47c9cd80760e20b33a39700 100644 --- a/src/spatial/force-tpl.hpp +++ b/src/spatial/force-tpl.hpp @@ -85,6 +85,13 @@ namespace se3 explicit ForceTpl(const ForceDense<M2> & clone) { linear() = clone.linear(); angular() = clone.angular(); } + template<int O2> + ForceTpl & __equl__(const ForceTpl<Scalar,O2> & other) + { + m_data = other.toVector(); + return *this; + } + // initializers static ForceTpl Zero() { return ForceTpl(Vector6::Zero()); } static ForceTpl Random() { return ForceTpl(Vector6::Random()); }