USGS

Isis 3.0 Object Programmers' Reference

Home

Isis::Quaternion Class Reference

Provide operations for quaternion arithmetic. More...

#include <Quaternion.h>

Collaboration diagram for Isis::Quaternion:
Collaboration graph

Public Member Functions

 Quaternion ()
 Constructs an empty quaternion.
 
 Quaternion (const std::vector< double > matrix)
 Construct a Quaternion class from a matrix stored as a vector < double > with 9 elements or from a quaternion stored as a vector < double > with 4 elements.
 
 ~Quaternion ()
 Destroys the Quaternion object.
 
std::vector< double > ToMatrix ()
 Converts quaternion to 3x3 rotational matrix.
 
std::vector< double > ToAngles (int axis3, int axis2, int axis1)
 Return the camera angles (right ascension, declination, and twist) for the quaternion.
 
void Set (std::vector< double >)
 Sets the quaternion value.
 
std::vector< double > GetQuaternion () const
 Return the quaternion as a vector.
 
Quaternionoperator= (const Quaternion &quat)
 Assign value of quaternion class to another quaternion.
 
Quaternionoperator*= (const Quaternion &quat)
 Multiply current Naif quaternion by another Naif quaternion, replacing the current quaternion.
 
Quaternion operator* (const Quaternion &quat) const
 Multiply two Naif quaternions to create a new quaternion.
 
Quaternion operator* (const double &scalar)
 Multiply a quaternion by a scalar.
 
double & operator[] (int index)
 Return a member of a quaternion.
 
std::vector< double > Qxv (const std::vector< double > &vin)
 Multiply a vector by a quaternion (rotate the vector)
 
Quaternion Conjugate ()
 Returns the conjugate of the quaternion.
 

Private Member Functions

void Polish (Quaternion &quat)
 Polish the quaternion – make the first component positive.
 

Private Attributes

std::vector< double > p_quaternion
 Quaternion.
 

Detailed Description

Provide operations for quaternion arithmetic.

This class provides a wrapper for existing Naif quaternion functions and also includes other operators and methods useful for working with quaternions.

Author
2005-12-07 Debbie A. Cook
History:
????-??-?? Steven Lambright Fixed documentation

Definition at line 51 of file Quaternion.h.

Constructor & Destructor Documentation

Isis::Quaternion::Quaternion ( )

Constructs an empty quaternion.

Definition at line 41 of file Quaternion.cpp.

References p_quaternion.

Isis::Quaternion::Quaternion ( const std::vector< double >  rotation)

Construct a Quaternion class from a matrix stored as a vector < double > with 9 elements or from a quaternion stored as a vector < double > with 4 elements.

Parameters
rotationrotation defined as either a matrix or another quaternion loaded as a vector

Definition at line 57 of file Quaternion.cpp.

References p_quaternion, and Set().

Isis::Quaternion::~Quaternion ( )

Destroys the Quaternion object.

Definition at line 64 of file Quaternion.cpp.

Member Function Documentation

Quaternion Isis::Quaternion::Conjugate ( )

Returns the conjugate of the quaternion.

Definition at line 210 of file Quaternion.cpp.

References p_quaternion.

Referenced by Qxv().

std::vector<double> Isis::Quaternion::GetQuaternion ( ) const
inline

Return the quaternion as a vector.

Definition at line 69 of file Quaternion.h.

References p_quaternion.

Referenced by Isis::SpiceRotation::Cache().

Quaternion Isis::Quaternion::operator* ( const Quaternion quat) const

Multiply two Naif quaternions to create a new quaternion.

For example,

Quaternion q1(),q(2);
...
Quaternion q3() = q1*q2;

More information is available on quaternions and the multiplication algorithm in the Naif routine qxq_c.c

Parameters
[in]quat(const Quaternion &) quaternion to multiply on the right
Returns
(Quaternion) product of quaternions

Definition at line 160 of file Quaternion.cpp.

Quaternion Isis::Quaternion::operator* ( const double &  scalar)

Multiply a quaternion by a scalar.

Just multiply the rotation part and polish the resulting quaternion so it is still a unit quaternion with positive rotation. For example,

Quaternion q1(),q(2);
double scalar
...
q2() = scalar*q2;
Parameters
[in]scalar(const double &) scalar value to be multiplied times the current quaternion
Returns
(Quaternion) product of scalar and quaternion

Definition at line 185 of file Quaternion.cpp.

References _FILEINFO_, p_quaternion, Polish(), and Isis::IException::Programmer.

Quaternion & Isis::Quaternion::operator*= ( const Quaternion quat)

Multiply current Naif quaternion by another Naif quaternion, replacing the current quaternion.

For example,

Quaternion q1(),q(2);
...
Quaternion q2() *= q1;

More information on quaternions and the multiplication algorithm is available in the Naif routine qxq_c.

Parameters
[in]quat(const Quaternion &) quaternion to multiply on the right
Returns
(Quaternion) product of quaternions

Definition at line 130 of file Quaternion.cpp.

References p_quaternion.

Quaternion & Isis::Quaternion::operator= ( const Quaternion quat)

Assign value of quaternion class to another quaternion.

For example,

Quaternion q1( matrix );
...
q2 = q1;
Parameters
quatThe Quaternion to copy

Definition at line 108 of file Quaternion.cpp.

References p_quaternion.

double& Isis::Quaternion::operator[] ( int  index)
inline

Return a member of a quaternion.

For example,

...
double angle = q[0];
Parameters
[in]index(const int &) quaternion member to return
Returns
(double&) value pointed to by iter

Definition at line 94 of file Quaternion.h.

References p_quaternion.

void Isis::Quaternion::Polish ( Quaternion quat)
private

Polish the quaternion – make the first component positive.

Definition at line 255 of file Quaternion.cpp.

References p_quaternion.

Referenced by operator*().

std::vector< double > Isis::Quaternion::Qxv ( const std::vector< double > &  vin)

Multiply a vector by a quaternion (rotate the vector)

Parameters
[in]vin(const std::vector<double>(3)) Vector to be multiplied (rotated)

Definition at line 228 of file Quaternion.cpp.

References _FILEINFO_, Conjugate(), p_quaternion, and Isis::IException::Programmer.

void Isis::Quaternion::Set ( std::vector< double >  rotation)

Sets the quaternion value.

Parameters
rotationrotation defined as either a matrix or a set of 3 angles

Definition at line 71 of file Quaternion.cpp.

References _FILEINFO_, p_quaternion, and Isis::IException::Programmer.

Referenced by Quaternion().

std::vector< double > Isis::Quaternion::ToAngles ( int  axis3,
int  axis2,
int  axis1 
)

Return the camera angles (right ascension, declination, and twist) for the quaternion.

Definition at line 273 of file Quaternion.cpp.

References ToMatrix().

std::vector< double > Isis::Quaternion::ToMatrix ( )

Converts quaternion to 3x3 rotational matrix.

Definition at line 88 of file Quaternion.cpp.

References p_quaternion.

Referenced by Isis::SpiceRotation::LoadCache(), and ToAngles().

Member Data Documentation

std::vector<double> Isis::Quaternion::p_quaternion
private

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