casa  \$Rev:20696\$
casa::Euler Class Reference

Vector of Euler rotation angles. More...

`#include <Euler.h>`

List of all members.

## 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.
Euleroperator= (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.
Euleroperator+= (const Euler &right)
Euler operator+ (const Euler &right) const
Euleroperator-= (const Euler &right)
Euler operator- (const Euler &right) const
Doubleoperator() (uInt which)
Return the which' angle.
const Doubleoperator() (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.

## Static Private Member Functions

static Double makeRad (const Quantity &in)
static Vector< DoublemakeRad (const Quantum< Vector< Double > > &in)

## Private Attributes

Vector< Doubleeuler
Actual vector with 3 Euler angles.
Vector< Intaxes
Axes.

## Friends

ostream & operator<< (ostream &os, const Euler &eul)
Output Euler angles.

## Detailed Description

Vector of Euler rotation angles.

Internal

Reviewed By:
tcornwel
Date Reviewed:
1996/02/15
Test programs:
tMeasMath

### Etymology

Euler angles describe the rotation of a coordinate system

### Synopsis

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:

• Euler() creates a zero filled vector of length 3. Axes: (1,2,3)
• Euler(Euler) creates a copy
• Euler(Double, uInt, Double=0, uInt=0, Double=0, uInt=0) creates an Euler with specified values
• Euler(Double, Double=0, Double=0) creates an Euler with (1,2,3)
• Euler(Quantity, uInt, Quantity=0, uInt=0, Quantity=0, uInt=0) creates an Euler with specified values
• Euler(Quantity, Quantity=0, Quantity=0) creates an Euler with interpretation of angle units in the Quantities
• Euler(`Quantum<Vector<Double> >`) creates a zero expanded Euler from at most the first three elements of Quantity vector; with (1,2,3)
• Euler(`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.

### Example

```        Quantity angle(25,"deg");       // 25 degrees
Euler eul(angle.get().getValue(),2); // rotate over axis 2 (radians)
RotMatrix rot(eul);             // generates rotation matrix
```

### Motivation

To use generated precession and nutation results

Definition at line 115 of file Euler.h.

## Constructor & Destructor Documentation

 casa::Euler::Euler ( )

Default constructor generates zero filled Double vector of length 3, with (1,2,3) axes.

 casa::Euler::Euler ( const Euler & other )

Copy constructor.

 casa::Euler::Euler ( Double in0, Double in1 = `0`, Double in2 = `0` )

Constructs an Euler with specified angles and (1,2,3) axes.

 casa::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.

 casa::Euler::Euler ( const Quantity & in0 )

### Thrown Exceptions

Constructs an Euler from specified angle quantities

 casa::Euler::Euler ( const Quantity & in0, const Quantity & in1 )
 casa::Euler::Euler ( const Quantity & in0, const Quantity & in1, const Quantity & in2 )
 casa::Euler::Euler ( const Quantity & in0, uInt ax0 )
 casa::Euler::Euler ( const Quantity & in0, uInt ax0, const Quantity & in1, uInt ax1 = `0` )
 casa::Euler::Euler ( const Quantity & in0, uInt ax0, const Quantity & in1, uInt ax1, const Quantity & in2, uInt ax2 = `0` )
 casa::Euler::Euler ( const Quantum< Vector< Double > > & in )

Constructs an Euler (zero filled) from elements of Quantity vector.

 casa::Euler::Euler ( const Quantum< Vector< Double > > & in, const Vector< uInt > & ax )
 casa::Euler::~Euler ( )

Destructor.

## Member Function Documentation

 Int casa::Euler::get ( uInt which ) const

Get an axis.

 Quantum > casa::Euler::getAngle ( ) const

with the optional conversion units.

 Quantum > casa::Euler::getAngle ( const Unit & unit ) const
 static Double casa::Euler::makeRad ( const Quantity & in ) ` [static, private]`

 static Vector casa::Euler::makeRad ( const Quantum< Vector< Double > > & in ) ` [static, private]`
 Double& casa::Euler::operator() ( uInt which )

Return the which' angle.

 const Double& casa::Euler::operator() ( uInt which ) const
 Euler casa::Euler::operator+ ( const Euler & right ) const
 Euler& casa::Euler::operator+= ( const Euler & right )

 Euler casa::Euler::operator- ( ) const

The unary minus reverses the sign and order of the Euler angles.

 Euler casa::Euler::operator- ( const Euler & right ) const
 Euler& casa::Euler::operator-= ( const Euler & right )
 Euler& casa::Euler::operator= ( const Euler & other )

Copy assignment.

 void casa::Euler::set ( uInt which, uInt ax )

Set an axis.

 void casa::Euler::set ( uInt ax0, uInt ax1, uInt ax2 )

Set all axes.

## Friends And Related Function Documentation

 ostream& operator<< ( ostream & os, const Euler & eul ) ` [friend]`

Output Euler angles.

## Member Data Documentation

 Vector casa::Euler::axes` [private]`

Axes.

Definition at line 195 of file Euler.h.

 Vector casa::Euler::euler` [private]`

Actual vector with 3 Euler angles.

Definition at line 193 of file Euler.h.

The documentation for this class was generated from the following file: