Biorbd
IMU.h
1 #ifndef BIORBD_RIGIDBODY_IMU_H
2 #define BIORBD_RIGIDBODY_IMU_H
3 
4 #include <memory>
5 #include "biorbdConfig.h"
6 #include "Utils/RotoTransNode.h"
7 
8 namespace biorbd {
9 namespace utils {
10 class String;
11 }
12 
13 namespace rigidbody {
14 
18 #ifdef SWIG
19 class BIORBD_API IMU
20 #else
21 class BIORBD_API IMU : public biorbd::utils::RotoTransNode
22 #endif
23 {
24 public:
25 
31  IMU(
32  bool isTechnical = true,
33  bool isAnatomical = true);
34 
41  IMU(
42  const biorbd::utils::RotoTransNode& RotoTrans,
43  bool isTechnical = true,
44  bool isAnatomical = true);
45 
46 #ifdef BIORBD_USE_EIGEN3_MATH
47  template<typename OtherDerived> IMU(
52  const Eigen::MatrixBase<OtherDerived>& other) :
54 #endif
55 #ifdef BIORBD_USE_CASADI_MATH
56  IMU(
57  const biorbd::rigidbody::IMU& imu);
58 
59  biorbd::rigidbody::IMU operator*(const biorbd::rigidbody::IMU& other) const;
60 #endif
61 
62 
67  biorbd::rigidbody::IMU DeepCopy() const;
68 
73  void DeepCopy(const biorbd::rigidbody::IMU& other);
74 
79  bool isTechnical() const;
80 
85  bool isAnatomical() const;
86 
87 #ifndef SWIG
88 #ifdef BIORBD_USE_EIGEN3_MATH
89  template<typename OtherDerived>
95  biorbd::rigidbody::IMU& operator=(const Eigen::MatrixBase <OtherDerived>& other){
97  return *this;
98  }
99 #endif
100 #endif
101 
102 protected:
103  std::shared_ptr<bool> m_technical;
104  std::shared_ptr<bool> m_anatomical;
105 
106 };
107 
108 }}
109 
110 #endif // BIORBD_RIGIDBODY_IMU_H
biorbd::rigidbody::IMU::m_technical
std::shared_ptr< bool > m_technical
If a IMU is a technical IMU.
Definition: IMU.h:103
biorbd::rigidbody::IMU
Class IMU.
Definition: IMU.h:23
biorbd::utils::RotoTransNode
A RotoTrans which is attached to a segment.
Definition: RotoTransNode.h:16
biorbd::rigidbody::IMU::m_anatomical
std::shared_ptr< bool > m_anatomical
It IMU is a anatomical IMU.
Definition: IMU.h:104
biorbd::utils::RotoTransNode::operator=
void operator=(const biorbd::utils::RotoTrans &other)
operator= Matrix multiplication
Definition: RotoTransNode.cpp:41