28 FORCE_TYPEDEF_TPL(Derived);
36 using Base::operator=;
60 return other.derived() == derived();
67 return derived().set(
other.derived());
72 return derived().set(
other.derived());
84 Derived & operator=(
const Eigen::MatrixBase<V6> & v)
93 ForcePlain operator-()
const
95 return derived().__opposite__();
100 return derived().__plus__(f.derived());
102 template<
typename F1>
105 return derived().__minus__(f.derived());
108 template<
typename F1>
111 return derived().__pequ__(f.derived());
113 template<
typename F1>
116 f.derived().addTo(derived());
120 template<
typename M1>
123 return derived().__mequ__(v.derived());
126 ForcePlain __opposite__()
const
131 template<
typename M1>
134 return ForcePlain(
linear() + v.linear(),
angular() + v.angular());
137 template<
typename M1>
140 return ForcePlain(
linear() - v.linear(),
angular() - v.angular());
143 template<
typename M1>
151 template<
typename M1>
159 template<
typename OtherScalar>
165 template<
typename OtherScalar>
171 template<
typename F1>
177 template<
typename M1,
typename M2>
180 fout.linear().noalias() = v.angular().cross(
linear());
181 fout.angular().noalias() = v.angular().cross(
angular()) + v.linear().cross(
linear());
184 template<
typename M1>
188 motionAction(v, res);
192 template<
typename M2>
195 const Scalar &
prec = Eigen::NumTraits<Scalar>::dummy_precision())
const
197 return derived().isApprox_impl(f,
prec);
200 template<
typename D2>
203 const Scalar &
prec = Eigen::NumTraits<Scalar>::dummy_precision())
const
208 bool isZero_impl(
const Scalar &
prec = Eigen::NumTraits<Scalar>::dummy_precision())
const
213 template<
typename S2,
int O2,
typename D2>
216 f.linear().noalias() = m.rotation() *
linear();
217 f.angular().noalias() = m.rotation() *
angular();
218 f.angular() += m.translation().cross(f.linear());
221 template<
typename S2,
int O2>
225 se3Action_impl(m, res);
229 template<
typename S2,
int O2,
typename D2>
232 f.linear().noalias() = m.rotation().transpose() *
linear();
233 f.angular().noalias() =
234 m.rotation().transpose() * (
angular() - m.translation().cross(
linear()));
237 template<
typename S2,
int O2>
241 se3ActionInverse_impl(m, res);
245 void disp_impl(std::ostream &
os)
const
247 os <<
" f = " <<
linear().transpose() << std::endl
248 <<
"tau = " <<
angular().transpose() << std::endl;
254 return derived().ref();
260 ForceDense(
const ForceDense &) =
delete;