17 #ifndef HPP_PINOCCHIO_LIEGROUP_ELEMENT_HH 18 # define HPP_PINOCCHIO_LIEGROUP_ELEMENT_HH 31 template <
typename vector_type>
32 class LiegroupElementConstBase
38 template <
typename Derived>
50 template <
typename Derived>
57 template <
typename vector_type2>
89 template <
typename vector_type2>
92 return ((*
space_ == *(other.space_)) && (
value_ == other.value_));
96 template <
typename vector_type2>
99 return ((*
space_ != *(other.space_)) || (
value_ != other.value_));
103 template <
typename Derived>
107 value_ (const_cast<Derived&>(value.derived())),
121 template <
typename vector_type>
132 Base (value, space, NULL) {}
137 Base (
vector_t (space->nq ()), space) {}
148 template <
typename vector_type2>
156 template <
typename vector_type2>
161 template <
typename vector_type2>
171 return Base::vector();
190 template <
typename vector_type2>
193 this->
space_ = other.space();
194 this->
value_ = other.vector();
199 template <
typename Vector>
202 EIGEN_STATIC_ASSERT_VECTOR_ONLY(Vector);
203 assert (this->
space_->nq() == v.derived().size());
204 this->
value_.noalias() = v.derived();
217 template <
typename vector_type>
227 template <
typename vector_type1,
typename vector_type2>
232 template <
typename vector_type>
235 template <
typename vector_type>
236 inline std::ostream& operator<< (std::ostream& os, const LiegroupElementConstBase<vector_type>& e)
238 os <<
"Lie group element in " << *(e.space ())
239 <<
" represented by vector (" << e.
vector ().transpose () <<
")";
247 #endif // HPP_PINOCCHIO_LIEGROUP_ELEMENT_HH LiegroupElement operator+(const LiegroupElementConstBase< vector_type > &e, vectorIn_t v)
const vector_type & vector() const
Const vector representation.
Definition: liegroup-element.hh:70
vector_t log(const LiegroupElementConstBase< vector_type > &lge)
Compute the log as a tangent vector of a Lie group element.
LiegroupElementBase(LiegroupElementBase< vector_type2 > &other)
Casting operator from LiegroupElement to LiegroupElementRef
Definition: liegroup-element.hh:162
bool operator!=(const LiegroupElementConstBase< vector_type2 > &other)
Equality operator.
Definition: liegroup-element.hh:97
const vector_type & vector() const
Const vector representation.
Definition: liegroup-element.hh:169
bool operator==(const LiegroupElementConstBase< vector_type2 > &other)
Equality operator.
Definition: liegroup-element.hh:90
size_type size() const
Size of the vector representation.
Definition: liegroup-element.hh:76
Utility functions.
Definition: body.hh:30
LiegroupElementConstBase(const Eigen::EigenBase< Derived > &value, const LiegroupSpacePtr_t &liegroupSpace)
Definition: liegroup-element.hh:39
LiegroupElementConstBase(const Eigen::EigenBase< Derived > &value)
Definition: liegroup-element.hh:51
LiegroupElementBase(const LiegroupSpacePtr_t &space)
Definition: liegroup-element.hh:136
LiegroupElementConstBase(const Eigen::EigenBase< Derived > &value, const LiegroupSpacePtr_t &space, void *)
Definition: liegroup-element.hh:104
matrix_t::Index size_type
Definition: fwd.hh:84
Definition: liegroup-space.hh:93
LiegroupElementBase()
Constructor of trivial element.
Definition: liegroup-element.hh:166
const LiegroupSpacePtr_t & space() const
get reference to vector of Lie groups
Definition: liegroup-element.hh:64
LiegroupElementConstBase< vector_type > Base
Definition: liegroup-element.hh:125
vector_t operator-(const LiegroupElementConstBase< vector_type1 > &e1, const LiegroupElementConstBase< vector_type2 > &e2)
Eigen::Matrix< value_type, Eigen::Dynamic, 1 > vector_t
Definition: fwd.hh:75
vector_type value_
Definition: liegroup-element.hh:111
LiegroupSpacePtr_t space_
Definition: liegroup-element.hh:112
Definition: collision-object.hh:31
LiegroupElementBase(const LiegroupElementBase< vector_type2 > &other)
Definition: liegroup-element.hh:157
LiegroupElementConstBase(const LiegroupElementConstBase< vector_type2 > &other)
Definition: liegroup-element.hh:58
Eigen::Ref< const vector_t > vectorIn_t
Definition: fwd.hh:80
LiegroupElementBase(const vector_type &value, const LiegroupSpacePtr_t &space)
Definition: liegroup-element.hh:130
void setNeutral()
Set element to neutral element.
Definition: liegroup-element.hh:181
void check() const
Definition: liegroup-element.hh:83
LiegroupElementBase(const LiegroupElementConstBase< vector_type2 > &other)
Definition: liegroup-element.hh:149
LiegroupElementBase(const vector_type &value)
Definition: liegroup-element.hh:143
vector_type & vector()
Modifiable vector representation.
Definition: liegroup-element.hh:175
shared_ptr< LiegroupSpace > LiegroupSpacePtr_t
Definition: fwd.hh:136