Class MEAL::Rotation

class Rotation : public MEAL::Complex2

Represents a rotation (passive unitary transformation) about a free axis.

This class represents a unitary matrix,

\[ \rotat = \exp (\Ci\bm{\sigma}\cdot\hat{\bm{n}}\phi) = \pauli{0}\cos\phi + \Ci\bm{\sigma}\cdot\hat{\bm{n}}\sin\phi\, \]
that rotates the Stokes polarization vector about the axis \(\hat{\bm{n}}\) by an angle \(-2\phi\). The rotation is parameterized by a three-vector,
\[ \bm{r}=\hat{\bm{n}}\phi = (r_1, r_2, r_3) \]
such that \(\phi=|\bm{r}|\),
\[ \rotat = \pauli{0}\cos\phi + \Ci\bm{\sigma\cdot r}\,\sinc\phi, \]

\[ {\partial\phi\over\partial r_j} = {r_j\over\phi}, \]
and
\[ {\partial\rotat\over\partial r_j} = -\pauli{0}\,r_j\,\sinc\phi + \Ci \pauli{j}\,\sinc\phi + \Ci \bm{\sigma}\cdot\bm{r} {r_j\over\phi^2} (\cos\phi -\sinc\phi). \]

Public Functions

Rotation()

Default constructor.

Rotation(const Vector<3, double> &axis, double angle)

Construct with rotation axis and angle in radians.

void set_axis_angle(Vector<3, double> axis, double angle)

Set the rotation axis and angle in radians.

Vector<3, double> get_axis() const

Get the unit-vector along which the rotation occurs.

double get_phi() const

Get the rotation angle, phi.

void set_vector(const Vector<3, double>&)

Set the three free parameters as a vector.

Vector<3, double> get_vector() const

Get the three free parameters as a vector.

virtual std::string get_name() const

Return the name of the class.