19 #ifndef __se3_force_base_hpp__    20 #define __se3_force_base_hpp__    39   template< 
class Derived>
    43     FORCE_TYPEDEF_TPL(Derived);
    45     Derived & derived() { 
return *
static_cast<Derived*
>(
this); }
    46     const Derived& derived()
 const { 
return *
static_cast<const Derived*
>(
this); }
    53     ConstAngularType 
angular()
 const { 
return derived().angular_impl(); }
    60     ConstLinearType 
linear()
 const { 
return derived().linear_impl(); }
    63     AngularType 
angular() { 
return derived().angular_impl(); }
    66     LinearType 
linear() { 
return derived().linear_impl(); }
    76     template<
typename V3Like>
    77     void angular(
const Eigen::MatrixBase<V3Like> & n)
    78     { derived().angular_impl(n.derived()); }
    87     template<
typename V3Like>
    88     void linear(
const Eigen::MatrixBase<V3Like> & f)
    89     { derived().linear_impl(f.derived()); }
    99     ToVectorConstReturnType 
toVector()
 const { 
return derived().toVector_impl(); }
   102     ToVectorReturnType 
toVector() { 
return derived().toVector_impl(); }
   108     operator Vector6()
 const { 
return toVector(); }
   114     template<
typename F2>
   119     template<
typename F2>
   124     bool isApprox(
const Derived & other, 
const Scalar & prec = Eigen::NumTraits<Scalar>::dummy_precision())
 const   125     { 
return derived().isApprox_impl(other, prec); }
   130     Derived & 
operator= (
const Derived & other) { 
return derived().__equl__(other); }
   136     Derived & 
operator+= (
const Derived & phi) { 
return derived().__pequ__(phi); }
   142     Derived & 
operator-= (
const Derived & phi) { 
return derived().__mequ__(phi); }
   146     Derived 
operator+(
const Derived & phi)
 const { 
return derived().__plus__(phi); }
   150     template<
typename OtherScalar>
   151     ForcePlain 
operator*(
const OtherScalar & alpha)
 const { 
return derived().__mult__(alpha); }
   155     template<
typename OtherScalar>
   156     ForcePlain 
operator/(
const OtherScalar & alpha)
 const { 
return derived().__div__(alpha); }
   160     Derived 
operator-()
 const { 
return derived().__opposite__(); }
   164     Derived 
operator-(
const Derived & phi)
 const { 
return derived().__minus__(phi); }
   168     Scalar 
dot(
const Motion & m)
 const { 
return derived().dot(m); }
   182     template<
typename S2, 
int O2>
   183     typename internal::SE3GroupAction<Derived>::ReturnType
   185     { 
return derived().se3Action_impl(m); }
   198     template<
typename S2, 
int O2>
   199     typename internal::SE3GroupAction<Derived>::ReturnType
   201     { 
return derived().se3ActionInverse_impl(m); }
   203     template<
typename M1>
   204     typename internal::MotionAlgebraAction<Derived,M1>::ReturnType
   207       return derived().motionAction(v.derived());
   210     void disp(std::ostream & os)
 const { derived().disp_impl(os); }
   211     friend std::ostream & operator << (std::ostream & os, const ForceBase<Derived> & X)
   221 #endif // ifndef __se3_force_base_hpp__ ForcePlain operator/(const OtherScalar &alpha) const 
 
bool operator!=(const ForceBase< F2 > &other) const 
 
AngularType angular()
Return the angular part of the force vector. 
 
Derived operator+(const Derived &phi) const 
 
void linear(const Eigen::MatrixBase< V3Like > &f)
Set the linear part of the force vector. 
 
Derived operator-(const Derived &phi) const 
 
internal::SE3GroupAction< Derived >::ReturnType se3Action(const SE3Tpl< S2, O2 > &m) const 
Transform from A to B coordinates the Force represented by *this such that . 
 
Derived & operator+=(const Derived &phi)
Replaces *this by *this + other. 
 
ConstAngularType angular() const 
Return the angular part of the force vector. 
 
Derived & operator-=(const Derived &phi)
Replaces *this by *this - other. 
 
internal::SE3GroupAction< Derived >::ReturnType se3ActionInverse(const SE3Tpl< S2, O2 > &m) const 
Transform from B to A coordinates the Force represented by *this such that . 
 
bool operator==(const ForceBase< F2 > &other) const 
 
ConstLinearType linear() const 
Return the linear part of the force vector. 
 
bool isApprox(const Derived &other, const Scalar &prec=Eigen::NumTraits< Scalar >::dummy_precision()) const 
 
void angular(const Eigen::MatrixBase< V3Like > &n)
Set the angular part of the force vector. 
 
Base interface for forces representation. 
 
Scalar dot(const Motion &m) const 
 
ForcePlain operator*(const OtherScalar &alpha) const 
 
ToVectorConstReturnType toVector() const 
Return the force as an Eigen vector. 
 
Derived & operator=(const Derived &other)
Copies the Derived Force into *this. 
 
Derived operator-() const 
 
LinearType linear()
Return the linear part of the force vector. 
 
ToVectorReturnType toVector()
Return the force as an Eigen vector.