Vector of Euler rotation angles. More...
#include <Euler.h>
Public Member Functions | |
Euler () | |
Default constructor generates zero filled Double vector of length 3, with (1,2,3) axes. | |
Euler (const Euler &other) | |
Copy constructor. | |
Euler & | operator= (const Euler &other) |
Copy assignment. | |
Euler (Double in0, Double in1=0, Double in2=0) | |
Constructs an Euler with specified angles and (1,2,3) axes. | |
Euler (Double in0, uInt ax0, Double in1=0, uInt ax1=0, Double in2=0, uInt ax2=0) | |
Constructs an Euler with specified angles and axes. | |
Euler (const Quantity &in0) | |
Euler (const Quantity &in0, const Quantity &in1) | |
Euler (const Quantity &in0, const Quantity &in1, const Quantity &in2) | |
Euler (const Quantity &in0, uInt ax0) | |
Euler (const Quantity &in0, uInt ax0, const Quantity &in1, uInt ax1=0) | |
Euler (const Quantity &in0, uInt ax0, const Quantity &in1, uInt ax1, const Quantity &in2, uInt ax2=0) | |
Euler (const Quantum< Vector< Double > > &in) | |
Constructs an Euler (zero filled) from elements of Quantity vector. | |
Euler (const Quantum< Vector< Double > > &in, const Vector< uInt > &ax) | |
~Euler () | |
Destructor. | |
Euler | operator- () const |
The unary minus reverses the sign and order of the Euler angles. | |
Euler & | operator+= (const Euler &right) |
Addition and subtraction. | |
Euler | operator+ (const Euler &right) const |
Euler & | operator-= (const Euler &right) |
Euler | operator- (const Euler &right) const |
Double & | operator() (uInt which) |
Return the which' angle. | |
const Double & | operator() (uInt which) const |
Quantum< Vector< Double > > | getAngle () const |
with the optional conversion units. | |
Quantum< Vector< Double > > | getAngle (const Unit &unit) const |
void | set (uInt which, uInt ax) |
Set an axis. | |
void | set (uInt ax0, uInt ax1, uInt ax2) |
Set all axes. | |
Int | get (uInt which) const |
Get an axis. | |
Private Types | |
typedef std::pair< Vector < Double > *, Vector< Int > * > | DataArrays |
Private Member Functions | |
DataArrays | get_arrays () |
void | return_arrays (DataArrays array) |
Static Private Member Functions | |
static Double | makeRad (const Quantity &in) |
The makeRad functions check and convert the input Quantities to radians. | |
static Vector< Double > | makeRad (const Quantum< Vector< Double > > &in) |
Private Attributes | |
DataArrays | data |
data container | |
Vector< Double > & | euler |
vector with 3 Euler angles (data.first) | |
Vector< Int > & | axes |
Axes (data.second). | |
Friends | |
ostream & | operator<< (ostream &os, const Euler &eul) |
Output Euler angles. |
Vector of Euler rotation angles.
Internal
Euler angles describe the rotation of a coordinate system
The Euler class is a vector of three angles, together with a vector of three signed integers. The angles describe the rotation around an axis of a coordinate system, the integers the actual axis around which to rotate. The integer can be 0 (do not use this angle) or 1,2,3 to indicate the axis. Given angles (a1,a2,a3) and axes (i1,i2,i3), the actual rotation matrix constructed will be:
R = Ri3(a3).Ri2(a2).Ri1(a1)
It has the following constructors:
Quantum<Vector<Double> >
) creates a zero expanded Euler from at most the first three elements of Quantity vector; with (1,2,3) Quantum<Vector<Double> >, Vector<uInt>
) creates a zero expanded Euler with given values It has a unary minus operator, which reverses the sign and order of the three angles, and the order of the axes, to produce the Euler angles for a rotation with opposite signs, so that RotMatrix(-Euler)
will generate the inverse rotation matrix as compared with RotMatrix(Euler)
.
getAngle() functions return the Euler angles as a Quantum vector.
Eulers have addition and subtraction (on the angles). Note that this produces the correct angles for a combined rotation only if the axes are identical.
A (which) operator returns the indicated angle. Set/get functions manipulate the axes.
Quantity angle(25,"deg"); // 25 degrees Euler eul(angle.get().getValue(),2); // rotate over axis 2 (radians) RotMatrix rot(eul); // generates rotation matrix
To use generated precession and nutation results
Definition at line 116 of file Euler.h.
typedef std::pair<Vector<Double> *, Vector<Int> *> casacore::Euler::DataArrays [private] |
casacore::Euler::Euler | ( | ) |
Default constructor generates zero filled Double vector of length 3, with (1,2,3) axes.
casacore::Euler::Euler | ( | const Euler & | other | ) |
Copy constructor.
Constructs an Euler with specified angles and (1,2,3) axes.
casacore::Euler::Euler | ( | Double | in0, | |
uInt | ax0, | |||
Double | in1 = 0 , |
|||
uInt | ax1 = 0 , |
|||
Double | in2 = 0 , |
|||
uInt | ax2 = 0 | |||
) |
Constructs an Euler with specified angles and axes.
casacore::Euler::Euler | ( | const Quantity & | in0 | ) |
casacore::Euler::Euler | ( | const Quantity & | in0, | |
uInt | ax0, | |||
const Quantity & | in1, | |||
uInt | ax1, | |||
const Quantity & | in2, | |||
uInt | ax2 = 0 | |||
) |
Constructs an Euler (zero filled) from elements of Quantity vector.
casacore::Euler::~Euler | ( | ) |
Destructor.
DataArrays casacore::Euler::get_arrays | ( | ) | [private] |
static Vector<Double> casacore::Euler::makeRad | ( | const Quantum< Vector< Double > > & | in | ) | [static, private] |
The makeRad functions check and convert the input Quantities to radians.
Euler casacore::Euler::operator- | ( | ) | const |
The unary minus reverses the sign and order of the Euler angles.
void casacore::Euler::return_arrays | ( | DataArrays | array | ) | [private] |
Vector<Int>& casacore::Euler::axes [private] |
DataArrays casacore::Euler::data [private] |
Vector<Double>& casacore::Euler::euler [private] |
vector with 3 Euler angles (data.first)