Developer Documentation
RAVL, Recognition And Vision Library
USER HOME PAGE CLASS LIST CONTENTS
Ravl - Math - Geometry - 3D - RigidTransform3dC
 

  PUBLIC
RigidTransform3dC::RigidTransform3dC(void)
RigidTransform3dC::RigidTransform3dC(const Vector3dC &,const Quatern3dC &)
RigidTransform3dC::RigidTransform3dC(const Vector3dC &,const Vector3dC &)
RigidTransform3dC::RigidTransform3dC(const Vector3dC &,const Vector3dC &,double)
RigidTransform3dC::RigidTransform3dC(const Vector3dC &,const Matrix3dC &)
RigidTransform3dC::Set(const Vector3dC &,const Quatern3dC &)
RigidTransform3dC::Set(const Vector3dC &,const Vector3dC &,double)
RigidTransform3dC::Set(const Vector3dC &,const Matrix3dC &)
RigidTransform3dC::Rotation(void) const
RigidTransform3dC::SetRotation(const Quatern3dC &)
RigidTransform3dC::Translation(void) const
RigidTransform3dC::SetTranslation(const Vector3dC &)
RigidTransform3dC::NormalizeQuart(void)
RigidTransform3dC::Transform(const Vector3dC &) const
RigidTransform3dC::NTransform(const Vector3dC &) const
RigidTransform3dC::InverseTransform(const Vector3dC &)
RigidTransform3dC::InverseNTransform(const Vector3dC &)
RigidTransform3dC::Inverse(void) const
RigidTransform3dC::ApplyRotationOnly(const Quatern3dC &)
RigidTransform3dC::ApplyRotationPivot(const Quatern3dC &,const Vector3dC &)
RigidTransform3dC::ApplyTranslate(const Vector3dC &)
RigidTransform3dC::ExportTranslation(void) const
RigidTransform3dC::ExportAxTheta(void) const
RigidTransform3dC::ExportRotationAngle(void) const
RigidTransform3dC::ExportRotationAxis(void) const
RigidTransform3dC::ExportRotationQuart(void) const
RigidTransform3dC::ExportRotationMatrix(void) const
RigidTransform3dC::Print(void)
RigidTransform3dC::LongPrint(void)
RigidTransform3dC::Abs(void)
RigidTransform3dC::operator *(const RigidTransform3dC &) const
RigidTransform3dC::operator *(const Vector3dC &) const
RigidTransform3dC::operator *(const RealT &) const
RigidTransform3dC::operator +(const RigidTransform3dC &) const
RigidTransform3dC::operator -(const RigidTransform3dC &) const
RigidTransform3dC::operator <<(ostream &,const RigidTransform3dC &)

   RigidTransform3dC   
 
Rigid transform in 3 dimentions.
 
include "Ravl/RigidTransform3d.hh"
Created:13/11/95 
Source file:Ravl/Math/Geometry/Euclidean/3D/RigidTransform3d.hh
User Level:Normal
Library:RavlMath
In Scope:RavlN

Comments:
A RigigTransC is a 3D Rigid body transformation comprising of a rotation followed by a translation. The order is very important.

A RigigTransC can also be thought of as a Pose, i.e. a position and orientation.

This library is based on an active scheme, i.e. there is one fixed coordinate system and the rotation and translation may be envisaged as acting ON an object. [ See CoordSysC for a passive scheme ]

Variables:
Vector3dC trans;

Quatern3dC rot;

Methods:

Constructors, destructor, assignment
RigidTransform3dC()
Null Constructor

RigidTransform3dC(const Vector3dC & t,const Quatern3dC & q)
Constructor

RigidTransform3dC(const Vector3dC & t,const Vector3dC & axtheta)
Constructor

RigidTransform3dC(const Vector3dC & t,const Vector3dC & axis,double theta)
Constructor

RigidTransform3dC(const Vector3dC & t,const Matrix3dC & r)
Constructor

Access

RigidTransform3dC & Set(const Vector3dC & t,const Quatern3dC & q)
Set as specified

RigidTransform3dC & Set(const Vector3dC & t,const Vector3dC & axis,double theta)
Set as specified

RigidTransform3dC & Set(const Vector3dC & translate,const Matrix3dC & rotate)
Set as specified

const Quatern3dC & Rotation(void) const
Return the rotation as a quarternion

RigidTransform3dC & SetRotation(const Quatern3dC & q)
Set the rotation, leave trans unchanged

const Vector3dC & Translation(void) const
Return the translation

RigidTransform3dC & SetTranslation(const Vector3dC & t)
Set the translation, leave rotation unchanged

General operations
void NormalizeQuart(void)
Make absolutely sure that the quarternion is valid with norm=1

Vector3dC Transform(const Vector3dC & v) const
applys rigid body transformation to v: v1=Rv +t

Vector3dC NTransform(const Vector3dC & n) const
applys rigid body transformation to a normal vector : n1=Rn, i.e. the vector is not translated

Vector3dC InverseTransform(const Vector3dC & v)
Applys rigid body transformation to v: v1=R^-1 (v-T)t

Vector3dC InverseNTransform(const Vector3dC & n)
Applys rigid body transformation to a normal vector : n1=R^-1 n,
i.e. the vector is not translated

RigidTransform3dC Inverse(void) const
Returns the inverse transform

RigidTransform3dC & ApplyRotationOnly(const Quatern3dC & q)
Apply the specified rotation only to the rot (not the trans)

RigidTransform3dC & ApplyRotationPivot(const Quatern3dC & q,const Vector3dC & pivot)
Apply the specified rotation around the specified pivot point

RigidTransform3dC & ApplyTranslate(const Vector3dC & t)
Translate the RigidT by t

const Vector3dC & ExportTranslation() const
return translation

Vector3dC ExportAxTheta() const
return rot as a unit vector axis times theta in radians Possible problems for angles near PI, see Quatern.hh

double ExportRotationAngle() const
Return the rotation angle in radians.
this is around the axis given by ExportRotAxis()

Vector3dC ExportRotationAxis() const
Return rot as a unit vector axis around which rotated.
if Rotation matrix is identity return axis as (0,0,0) vector

const Quatern3dC & ExportRotationQuart() const
Return rotation as quarternion

Matrix3dC ExportRotationMatrix() const
Return rotation as 3x3 rotation matrix

void Print()
simple printout

void LongPrint()
detailed printout

RigidTransform3dC Abs()

RigidTransform3dC operator *(const RigidTransform3dC & p) const
returns q x p ie applies p then q

Vector3dC operator *(const Vector3dC & v) const
Apply transform to v

RigidTransform3dC operator *(const RealT & val) const
returns trans[i] = p1.trans[i]*val (i=0..2) and rot[i] = p1.rot[i]*val (i=0..3)

RigidTransform3dC operator +(const RigidTransform3dC & p2) const
returns trans[i] = p1.trans[i] + p2.trans[i] (i=0..2) and rot[i] = p1.rot[i] + p2.rot[i] (i=0..3)

RigidTransform3dC operator -(const RigidTransform3dC & p2) const
returns trans[i] = p1.trans[i] - p2.trans[i] (i=0..2) and rot[i] = p1.rot[i] - p2.rot[i] (i=0..3)

ostream & operator <<(ostream & outS,const RigidTransform3dC & rt)
output stream operator


Maintainer:Andrew Stoddart, Created: 13/11/95, Documentation by CxxDoc: Tue Aug 13 09:59:30 2002