OPAL (Object Oriented Parallel Accelerator Library)  2024.1
OPAL
CoordinateSystemTrafo.h
Go to the documentation of this file.
1 #ifndef COORDINATESYSTEMTRAFO
2 #define COORDINATESYSTEMTRAFO
3 
5 #include "Algorithms/Vektor.h"
7 
9 public:
11 
13 
14  CoordinateSystemTrafo(const Vector_t &origin,
15  const Quaternion &orientation);
16 
17  Vector_t transformTo(const Vector_t &r) const;
18  Vector_t transformFrom(const Vector_t &r) const;
19 
20  Vector_t rotateTo(const Vector_t &r) const;
21  Vector_t rotateFrom(const Vector_t &r) const;
22 
23  void invert();
25 
26  CoordinateSystemTrafo& operator=(const CoordinateSystemTrafo& right) = default;
28  void operator*=(const CoordinateSystemTrafo &right);
29 
30  Vector_t getOrigin() const;
31  Quaternion getRotation() const;
32 
33  void print(std::ostream&) const;
34 private:
38 };
39 
40 inline
41 std::ostream& operator<<(std::ostream& os, const CoordinateSystemTrafo &trafo) {
42  trafo.print(os);
43  return os;
44 }
45 
46 inline
48  trafo.print(os.getStream());
49  return os;
50 }
51 
52 inline
53 void CoordinateSystemTrafo::print(std::ostream &os) const {
54  os << "Origin: " << origin_m << "\n"
55  << "z-axis: " << orientation_m.conjugate().rotate(Vector_t(0,0,1)) << "\n"
56  << "x-axis: " << orientation_m.conjugate().rotate(Vector_t(1,0,0));
57 }
58 
59 inline
61  return origin_m;
62 }
63 
64 inline
66  return orientation_m;
67 }
68 
69 inline
72  result.invert();
73 
74  return result;
75 }
76 
79 }
80 
82  return rotateFrom(r) + origin_m;
83 }
84 
87 }
88 
90  return prod_boost_vector(boost::numeric::ublas::trans(rotationMatrix_m), r);
91 }
92 
93 #endif
boost::numeric::ublas::matrix< double > matrix_t
Definition: BoostMatrix.h:23
void print(std::ostream &) const
Quaternion conjugate() const
Definition: Quaternion.h:103
Vector_t rotate(const Vector_t &) const
Definition: Quaternion.cpp:122
void operator*=(const CoordinateSystemTrafo &right)
CoordinateSystemTrafo inverted() const
std::ostream & operator<<(std::ostream &os, const Attribute &attr)
Definition: Attribute.cpp:169
Vektor< double, 3 > Vector_t
Definition: Vektor.h:6
Vector_t getOrigin() const
Vector_t transformFrom(const Vector_t &r) const
Vector_t rotateFrom(const Vector_t &r) const
Vector_t rotateTo(const Vector_t &r) const
Definition: Inform.h:42
std::ostream & getStream()
Definition: Inform.h:89
T prod_boost_vector(const boost::numeric::ublas::matrix< double > &rotation, const T &vector)
Definition: BoostMatrix.h:26
Vector_t transformTo(const Vector_t &r) const
float result
Definition: test.py:2
Quaternion getRotation() const
CoordinateSystemTrafo & operator=(const CoordinateSystemTrafo &right)=default
CoordinateSystemTrafo operator*(const CoordinateSystemTrafo &right) const