Choreonoid  1.8
PositionTag.h
Go to the documentation of this file.
1 #ifndef CNOID_POSITION_TAG_H
2 #define CNOID_POSITION_TAG_H
3 
4 #include "Referenced.h"
5 #include "EigenTypes.h"
6 #include "exportdecl.h"
7 
8 namespace cnoid {
9 
10 class Mapping;
11 class ArchiveSession;
12 
13 class CNOID_EXPORT PositionTag : public Referenced
14 {
15 public:
16  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
17 
18  PositionTag();
19  PositionTag(const Isometry3& T);
20  PositionTag(const Vector3& location);
21  PositionTag(const PositionTag& org);
22 
23  PositionTag& operator=(const PositionTag& rhs);
24 
25  Isometry3::ConstTranslationPart translation() const {
26  return position_.translation();
27  }
28  template<typename Derived>
29  void setTranslation(const Eigen::MatrixBase<Derived>& p) {
30  position_.translation() = p.template cast<Isometry3::Scalar>();
31  }
32 
33  bool hasAttitude() const { return hasAttitude_; }
34 
35  void clearAttitude() {
36  position_.linear().setIdentity();
37  hasAttitude_ = false;
38  }
39 
40  const Isometry3& position() const { return position_; }
41 
42  template<class Scalar, int Mode, int Options>
43  void setPosition(const Eigen::Transform<Scalar, 3, Mode, Options>& p) {
44  position_ = p.template cast<Isometry3::Scalar>();
45  hasAttitude_ = true;
46  }
47 
48  Isometry3::ConstLinearPart rotation() const { return position_.linear(); }
49 
50  template<typename Derived>
51  void setRotation(const Eigen::MatrixBase<Derived>& R) {
52  position_.linear() = R.template cast<Isometry3::Scalar>();
53  hasAttitude_ = true;
54  }
55 
56  bool read(const Mapping* archive, ArchiveSession& session);
57  bool write(Mapping* archive, ArchiveSession& session) const;
58 
59 private:
60  Isometry3 position_;
61  bool hasAttitude_;
62 };
63 
65 
66 }
67 
68 #endif
cnoid::PositionTag::clearAttitude
void clearAttitude()
Definition: PositionTag.h:35
Referenced.h
cnoid::Mapping
Definition: ValueTree.h:251
cnoid::Vector3
Eigen::Vector3d Vector3
Definition: EigenTypes.h:57
cnoid::write
Listing * write(Mapping *mapping, const std::string &key, const Eigen::MatrixBase< Derived > &x)
Definition: EigenArchive.h:145
cnoid::PositionTag
Definition: PositionTag.h:13
cnoid::Isometry3
Eigen::Isometry3d Isometry3
Definition: EigenTypes.h:73
cnoid::PositionTag::translation
Isometry3::ConstTranslationPart translation() const
Definition: PositionTag.h:25
cnoid::read
bool read(const Mapping *mapping, const std::string &key, Eigen::MatrixBase< Derived > &x)
Definition: EigenArchive.h:43
cnoid::PositionTag::position
const Isometry3 & position() const
Definition: PositionTag.h:40
cnoid::PositionTag::hasAttitude
bool hasAttitude() const
Definition: PositionTag.h:33
cnoid::ref_ptr
Definition: Referenced.h:103
cnoid::ArchiveSession
Definition: ArchiveSession.h:13
cnoid
Definition: AbstractSceneLoader.h:11
cnoid::PositionTag::rotation
Isometry3::ConstLinearPart rotation() const
Definition: PositionTag.h:48
cnoid::Referenced
Definition: Referenced.h:54
EigenTypes.h
cnoid::PositionTag::setRotation
void setRotation(const Eigen::MatrixBase< Derived > &R)
Definition: PositionTag.h:51
cnoid::PositionTag::setPosition
void setPosition(const Eigen::Transform< Scalar, 3, Mode, Options > &p)
Definition: PositionTag.h:43
cnoid::PositionTag::setTranslation
void setTranslation(const Eigen::MatrixBase< Derived > &p)
Definition: PositionTag.h:29
cnoid::PositionTagPtr
ref_ptr< PositionTag > PositionTagPtr
Definition: PositionTag.h:64