XRPrimer (C++ API)  0.6.0
pose.h
Go to the documentation of this file.
1 // Copyright (c) OpenXRLab. All rights reserved.
2 
3 #pragma once
4 
5 #include <Eigen/Eigen>
6 
7 class Pose {
8 
9  public:
10  Pose();
11  Pose(const Eigen::Quaterniond &quaternion, const Eigen::Vector3d &position);
12  Pose(const Eigen::AngleAxisd &angle_axis, const Eigen::Vector3d &position);
13  Pose(const Eigen::Matrix3d &rotate_matrix, const Eigen::Vector3d &position);
14 
15  // properties
16  const Eigen::Quaterniond &quaternion() const;
17  const Eigen::Vector3d &position() const;
18  Eigen::Matrix3d get_rotation() const;
19  Eigen::AngleAxisd get_angle_axis() const;
20 
21  void set_quternion(const Eigen::Quaterniond &quaternion);
22  void set_quternion(double w, double x, double y, double z);
23  void set_quternion(const Eigen::Matrix3d &rotation);
24  void set_quternion(const Eigen::AngleAxisd &angle_axis);
25 
26  void set_position(const Eigen::Vector3d &position);
27 
28  void SetIdentity();
29  Pose Inverse() const;
30  void InverseMutable();
31  Pose Scale(double s) const;
32  void ScaleMutable(double s);
33  Eigen::Vector3d Center() const;
34 
39  void PoseMult(const Pose &lhs, const Pose &rhs);
40 
44  Eigen::Vector3d operator*(const Eigen::Vector3d &vec) const;
45 
49  Eigen::Quaterniond operator*(const Eigen::Quaterniond &quaternion) const;
50 
54  Eigen::Vector3d operator()(const Eigen::Vector3d &vec) const;
55 
56  private:
57  Eigen::Quaterniond quaternion_;
58  Eigen::Vector3d position_;
59 
60  friend bool operator!=(const Pose &lhs, const Pose &rhs);
61  friend bool operator==(const Pose &lhs, const Pose &rhs);
62 };
63 
64 bool operator!=(const Pose &lhs, const Pose &rhs);
65 bool operator==(const Pose &lhs, const Pose &rhs);
void ScaleMutable(double s)
Definition: pose.cpp:80
void set_position(const Eigen::Vector3d &position)
Definition: pose.cpp:51
friend bool operator==(const Pose &lhs, const Pose &rhs)
Definition: pose.cpp:117
Pose Inverse() const
Definition: pose.cpp:74
void PoseMult(const Pose &lhs, const Pose &rhs)
Set the current Pose as the value of the product of two Pose, This = Pose1 * Pose2.
Definition: pose.cpp:95
Eigen::Vector3d operator*(const Eigen::Vector3d &vec) const
the Pose of the vector
Definition: pose.cpp:101
const Eigen::Quaterniond & quaternion() const
Definition: pose.cpp:29
void set_quternion(const Eigen::Quaterniond &quaternion)
Definition: pose.cpp:33
Eigen::Matrix3d get_rotation() const
Definition: pose.cpp:55
Eigen::AngleAxisd get_angle_axis() const
Definition: pose.cpp:59
Pose Scale(double s) const
Definition: pose.cpp:82
Eigen::Vector3d Center() const
Definition: pose.cpp:88
const Eigen::Vector3d & position() const
Definition: pose.cpp:31
friend bool operator!=(const Pose &lhs, const Pose &rhs)
Definition: pose.cpp:115
Definition: pose.h:7
void SetIdentity()
Definition: pose.cpp:64
Pose()
Definition: pose.cpp:5
Eigen::Vector3d operator()(const Eigen::Vector3d &vec) const
the Pose of the vector
Definition: pose.cpp:111
void InverseMutable()
Definition: pose.cpp:69