OPAL (Object Oriented Parallel Accelerator Library)
2024.2
OPAL
CoordinateSystemTrafo.cpp
Go to the documentation of this file.
1
#include "
Algorithms/CoordinateSystemTrafo.h
"
2
#include "
Utility/Inform.h
"
3
4
extern
Inform
*
gmsg
;
5
6
CoordinateSystemTrafo::CoordinateSystemTrafo
():
7
origin_m
(0.0),
8
orientation_m
(1.0, 0.0, 0.0, 0.0),
9
rotationMatrix_m
(3,3)
10
{
11
rotationMatrix_m
(0,0) = 1.0;
12
rotationMatrix_m
(0,1) = 0.0;
13
rotationMatrix_m
(0,2) = 0.0;
14
rotationMatrix_m
(1,0) = 0.0;
15
rotationMatrix_m
(1,1) = 1.0;
16
rotationMatrix_m
(1,2) = 0.0;
17
rotationMatrix_m
(2,0) = 0.0;
18
rotationMatrix_m
(2,1) = 0.0;
19
rotationMatrix_m
(2,2) = 1.0;
20
}
21
22
CoordinateSystemTrafo::CoordinateSystemTrafo
(
const
CoordinateSystemTrafo
&right):
23
origin_m
(right.
origin_m
),
24
orientation_m
(right.
orientation_m
),
25
rotationMatrix_m
(right.
rotationMatrix_m
)
26
{ }
27
28
CoordinateSystemTrafo::CoordinateSystemTrafo
(
const
Vector_t
&origin,
29
const
Quaternion
&orientation):
30
origin_m
(origin),
31
orientation_m
(orientation),
32
rotationMatrix_m
(
orientation_m
.getRotationMatrix())
33
{ }
34
35
void
CoordinateSystemTrafo::invert
() {
36
origin_m
= -
orientation_m
.rotate(
origin_m
);
37
orientation_m
=
orientation_m
.conjugate();
38
//rotationMatrix_m = transpose(rotationMatrix_m);
39
rotationMatrix_m
= boost::numeric::ublas::trans(
rotationMatrix_m
);
40
}
41
42
CoordinateSystemTrafo
CoordinateSystemTrafo::operator*
(
const
CoordinateSystemTrafo
&right)
const
{
43
CoordinateSystemTrafo
result(*
this
);
44
45
result *= right;
46
return
result;
47
}
48
49
void
CoordinateSystemTrafo::operator*=
(
const
CoordinateSystemTrafo
&right) {
50
origin_m
= right.
orientation_m
.
conjugate
().
rotate
(
origin_m
) + right.
origin_m
;
51
orientation_m
*= right.
orientation_m
;
52
orientation_m
.normalize();
53
rotationMatrix_m
=
orientation_m
.getRotationMatrix();
54
}
CoordinateSystemTrafo.h
gmsg
Inform * gmsg
Definition
Main.cpp:70
Inform.h
CoordinateSystemTrafo::origin_m
Vector_t origin_m
Definition
CoordinateSystemTrafo.h:35
CoordinateSystemTrafo::CoordinateSystemTrafo
CoordinateSystemTrafo()
Definition
CoordinateSystemTrafo.cpp:6
CoordinateSystemTrafo::operator*=
void operator*=(const CoordinateSystemTrafo &right)
Definition
CoordinateSystemTrafo.cpp:49
CoordinateSystemTrafo::rotationMatrix_m
matrix_t rotationMatrix_m
Definition
CoordinateSystemTrafo.h:37
CoordinateSystemTrafo::operator*
CoordinateSystemTrafo operator*(const CoordinateSystemTrafo &right) const
Definition
CoordinateSystemTrafo.cpp:42
CoordinateSystemTrafo::orientation_m
Quaternion orientation_m
Definition
CoordinateSystemTrafo.h:36
CoordinateSystemTrafo::invert
void invert()
Definition
CoordinateSystemTrafo.cpp:35
Quaternion
Definition
Quaternion.h:8
Quaternion::rotate
Vector_t rotate(const Vector_t &) const
Definition
Quaternion.cpp:122
Quaternion::conjugate
Quaternion conjugate() const
Definition
Quaternion.h:103
Inform
Definition
Inform.h:42
Vector_t
Vektor< double, 3 > Vector_t
Definition
src/Classic/Algorithms/Vektor.h:6