Developer Documentation
Centre for Vision, Speech & Signal Processing
USER IN NAMESPACE AMMA TREE ROOT AMMA SEARCH AMMA HOME
 

  PUBLIC
HomtmC::HomtmC(void)
HomtmC::HomtmC(RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT)
HomtmC::HomtmC(JointT,const Vector3dC &,BooleanT)
HomtmC::HomtmC(HtmOperT,double)
HomtmC::HomtmC(HtmOperT,HtmOperT,HtmOperT,const Vector3dC &,BooleanT)
HomtmC::HomtmC(Vector3dC,double)
HomtmC::HomtmC(double,double,double)
HomtmC::HomtmC(const Vector3dC &)
HomtmC::HomtmC(const Matrix4d4C &)
HomtmC::HomtmC(const Matrix3d3C &)
HomtmC::HomtmC(const QuarternC &)
HomtmC::HomtmC(const HomtmC &)
HomtmC::~HomtmC(void)
HomtmC::Transform(Vector3dC &)
HomtmC::Dump(void) const
HomtmC::DumpLong(void) const
HomtmC::Inv(void)
HomtmC::RotMat(void) const
HomtmC::Pos(void) const
HomtmC::SetPos(const Vector3dC &)
HomtmC::SetPos(RealT,RealT,RealT)
HomtmC::ExportQuartern(void) const
HomtmC::ExportRotVector(void) const
HomtmC::ExportRotAngle(void) const
HomtmC::ExportRotation(void) const
HomtmC::ImportQuartern(const QuarternC &)
HomtmC::ImportRotation(const Matrix3d3C &)
HomtmC::ImportRotation(Vector3dC &)
HomtmC::operator=(const HomtmC &)
HomtmC::operator=(const Matrix4d4C &)
HomtmC::operator*(const HomtmC &) const
HomtmC::ExportEuler(JointT,BooleanT) const
HomtmC::RotToEuler(const Matrix3d3C &,JointT,BooleanT)
HomtmC::RotToEuler(const Matrix4d4C &,JointT,BooleanT)
HomtmC
 
include "amma/Homtm.hh"
User Level:Default
Library:RigidT
Example:aff_transf.cc
Section:default.Andrew Stoddart
In Scope:std

Comments:
-----------------------------------------------------------------------------

Variables:
Matrix4d4C T;
The class data is public to allow full access to its member functions. We suppose that Matrix4d4C is sufficiently "protected" by itself and that the programmer is "carefull?". Constructors ------------

Methods:
HomtmC()
Null constructor, sets to identity transform

HomtmC(RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT,RealT)
Constructor with direct value initialisation

HomtmC(JointT t,const Vector3dC & angles,BooleanT premult = TRUE)
constructs a Homtm which is a pure rotation using the 1-3 angles stored in the Vector. If premult is TRUE the rotations are applied in the order 3 2 1 otherwise 1 2 3

HomtmC(HtmOperT t,double a)
specific rotations, eg RX, theta in radians

HomtmC(HtmOperT t0,HtmOperT t1,HtmOperT t2,const Vector3dC & angles,BooleanT premult = TRUE)
specific rotations, eg RX, theta in radians

HomtmC(Vector3dC axis,double theta)
Axis and angle, axis will be normalised!!

HomtmC(double roll,double pitch,double yaw)
roll, pitch, yaw

HomtmC(const Vector3dC & trans)
Constructor from a translation

HomtmC(const Matrix4d4C &)
Constructor from a Matrix4d4C

HomtmC(const Matrix3d3C &)
Constructor from a Matrix3d3C

HomtmC(const QuarternC &)
Constructor from a quarternion

HomtmC(const HomtmC &)

~HomtmC()
Destructor Access/ Action Functions ------------------------

Vector3dC & Transform(Vector3dC & v)
transform the supplied vector, the vector is changed!

void Dump() const
Outputs the contents of the matrix to stdout in a comprehensive format

void DumpLong() const
Outputs the contents of the matrix to stdout in a comprehensive format

HomtmC Inv()
Returns an HomtmC which is the inverse of this Htm. It does not modify this instance. Additionally, this is not a typical 4x4 inverse function and therefore cannot be applied to derive the inverse of any 4x4 matrix. It only works for Htms with their perspective sub-matrix equal to [0 0 0] and their scale equal to [1]. So, the result is hard-coded to return an Htm with such characteristics.

Matrix3d3C RotMat() const
Returns the rotation matrix which is described by the 3x3 upper left

Vector3dC Pos() const
Returns the position vector which is described by the 3x1 upper right sub-matrix of this Htm.

void SetPos(const Vector3dC &)

void SetPos(RealT,RealT,RealT)
Sets the position sub-matrix of the Htm.

QuarternC ExportQuartern() const
Returns the quaternion which describes this Htm's rotation.

Vector3dC ExportRotVector() const
Exports the unit vector of the rotation axis.

RealT ExportRotAngle() const
Exports the angle of rotation (in radians) about the previous rotation axis.

Vector3dC ExportRotation() const
Exports the represented rotation in the form of a single vector r(rx,ry,rz). Recall, that if |r| is the length of the vector (i.e. sqrt(rx^2+ry^2+rz^2) then the rotation is theta=|r|, about a unit vector u=(rx,ry,rz)/|r|.

void ImportQuartern(const QuarternC &)
Sets the rotation sub-matrix from a given quarternion

void ImportRotation(const Matrix3d3C &)
Import the rotation represented by the given 3x3 matrix

void ImportRotation(Vector3dC &)
Import the rotation represented by the given vector, into the rot. sub-matrix. Rotation expressed in radians Vector3dC GetEuler(JointT t) const; removed calculates and gives the euler angles of the rotation matrix homtm Warning - not available for all rotation types Warning - not tested over a wide range of angles, eg near 0 and 180 It is the users responsibility to make a request compatible with the actual contents of the Homtm, eg dont ask for RXRY if general rotation! The exact scheme for Euler angle conventions will be documented later by Dorien van de Belt Overloaded Operators --------------------

HomtmC & operator=(const HomtmC &)
Assignment

HomtmC & operator=(const Matrix4d4C &)
Assignment to a Matrix4d4C

HomtmC operator*(const HomtmC &) const
HomtmC * HomtmC = HomtmC (Breaks down to Matrix4d4C *) ------------- Shoemake's Euler Angle Conversion, ---------------------- ------------- Graphic Gems IV, pp. 222 - 229 --------------------------

Vector3dC ExportEuler(JointT jtype = RXRYRZ,BooleanT premult = TRUE) const
the angles correspond to rotations around static axes XYZ (in radians)

Vector3dC RotToEuler(const Matrix3d3C & m,JointT jtype = RXRYRZ,BooleanT premult = TRUE)
the angles correspond to rotations around static axes XYZ (in radians)

Vector3dC RotToEuler(const Matrix4d4C & m,JointT jtype = RXRYRZ,BooleanT premult = TRUE)
the angles correspond to rotations around static axes XYZ (in radians) ------------- End of Shoemake's Euler Angle Conversion ---------------


Programmer:Andrew Stoddart, Documentation by CxxDoc: Tue Mar 20 10:49:27 2001