Ceylan::Maths::Linear::HomogeneousMatrix3 Class Reference

#include <CeylanHomogeneousMatrix3.h>

Inheritance diagram for Ceylan::Maths::Linear::HomogeneousMatrix3:
Inheritance graph
[legend]
Collaboration diagram for Ceylan::Maths::Linear::HomogeneousMatrix3:
Collaboration graph
[legend]

List of all members.

Public Types

enum  TextOutputFormat { rawText, html }
 

Defines what text output formats for TextDisplayable instances are available.

More...

Public Member Functions

 HomogeneousMatrix3 (const Maths::Linear::Matrix2 &r, const Maths::Linear::Vector2 &v)
 Constructs an homogeneous 3x3 matrix from r, a 2x2 rotation matrix, and from t, a 2D translation vector.
 HomogeneousMatrix3 (AngleInDegrees angle, const Maths::Linear::Vector2 &v)
 Constructs an homogeneous 3x3 matrix whose 2x2 matrix corresponds to a rotation of angle in trigonometrical sens (direction) with t as a 2D translation vector.
 HomogeneousMatrix3 (Real r0=0, Real r1=0, Real r2=0, Real r3=0, Real t0=0, Real t1=0)
 Constructs a new homogenous 3x3 matrix with specified elements.
virtual ~HomogeneousMatrix3 () throw ()
 Copy constructor.
virtual const std::string toString (VerbosityLevels level=high) const
 Returns a user-friendly description of the state of this object.
virtual void setTo (Real x0=0, Real x1=0, Real x2=0, Real y0=0, Real y1=0, Real y2=0, Real z0=0, Real z1=0, Real z2=0)
 Reassigns all matrix elements.
virtual void setColumn (MatrixIndex columnNumber, const Vector3 &newColumn)
 Reassigns specified column of this matrix.
virtual void setAllElementsTo (Real commonValue)
 Sets this matrix so that all its elements equal commonValue.
virtual Real getElementAt (MatrixIndex abscissa, MatrixIndex ordinate) const
 Returns indexed element.
virtual void setElementAt (MatrixIndex abscissa, MatrixIndex ordinate, Real newValue)
 Sets indexed element to specified value.
virtual void setToIdentity ()
 Sets this matrix to the identity matrix.
virtual void setToDiagonal (Real diagonalTerm)
 Sets this matrix to the a diagonal matrix whose diagonal term is diagonalTerm.
virtual void transpose ()
 Tranposes this matrix.
virtual Real trace () const
 Computes this matrix's trace.
virtual Real determinant () const
 Computes this matrix's determinant.
virtual void nullify ()
 Sets this matrix to the null matrix (all elements zeroed).

Static Public Member Functions

static Matrix3 Cofactor (const Matrix3 &m)
 Returns the cofactor matrix.
static Matrix3 Adjoint (const Matrix3 &m)
 Returns the adjoint matrix.
template<typename T >
static Matrix3 CreateFrom (T endomorphism)
 Returns the matrix corresponding to specified endomorphism.
static const std::string ToString (std::list< TextDisplayable * > displayables, Ceylan::VerbosityLevels level=Ceylan::high)
 Returns a user-friendly description of this list of pointers to text displayable instances.
static TextOutputFormat GetOutputFormat ()
 Returns the current overall text format to be used by TextDisplayable instances.
static void SetOutputFormat (TextOutputFormat newOutputFormat)
 Sets the current overall text format to be used by TextDisplayable instances.

Static Public Attributes

static const MatrixIndex Dimensions = 3
 Tells what is the dimension for this Matrix.

Protected Member Functions

virtual void setBottomRow ()
 Creates the camera matrix in a 2D world, whose focal length and center of interest are specified.
virtual void setTranslationVector (const Vector2 &v)
 Sets the embedded translation vector of this homogeneous matrix.
virtual void setRotationMatrix (const Matrix2 &m)
 Sets the embedded rotation matrix of this homogeneous matrix.
virtual void setInCanonicalForm ()
 Sets this homogeneous matrix in its canonical form, where bottom-right element is 1.

Protected Attributes

Real _mat [Dimensions][Dimensions]
 The nine coordinates of this matrix.

Static Protected Attributes

static TextOutputFormat _OutputFormat = rawText
 The text format to be used currently by TextDisplayable instances.

Friends

CEYLAN_DLL friend
HomogeneousMatrix3 
operator* (const HomogeneousMatrix3 &hm1, const HomogeneousMatrix3 &hm2)
 Multiplies efficiently two homogeneous matrices: HomogeneousMatrix3 result = m1 * m2.
CEYLAN_DLL friend Vector2 operator* (const HomogeneousMatrix3 &hm, const Vector2 &v)
 Multiplies an homogeneous 3x3 matrix by a 2D vector, returning another 2D vector: Vector2 result = hm3 * v2.

Detailed Description

Definition at line 106 of file CeylanHomogeneousMatrix3.h.


Member Enumeration Documentation

Defines what text output formats for TextDisplayable instances are available.

Enumerator:
rawText 
html 

Definition at line 124 of file CeylanTextDisplayable.h.


Constructor & Destructor Documentation

HomogeneousMatrix3::HomogeneousMatrix3 ( const Maths::Linear::Matrix2 r,
const Maths::Linear::Vector2 v 
)

Constructs an homogeneous 3x3 matrix from r, a 2x2 rotation matrix, and from t, a 2D translation vector.

Note:
r may not be a strict rotation matrix, it may be a stretching (determinant non-equal to 1 for example) matrix.

Definition at line 61 of file CeylanHomogeneousMatrix3.cc.

References setBottomRow(), setRotationMatrix(), and setTranslationVector().

HomogeneousMatrix3::HomogeneousMatrix3 ( AngleInDegrees  angle,
const Maths::Linear::Vector2 v 
)

Constructs an homogeneous 3x3 matrix whose 2x2 matrix corresponds to a rotation of angle in trigonometrical sens (direction) with t as a 2D translation vector.

Parameters:
angle in degrees.

Definition at line 97 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix2::CreateFromRotation(), setBottomRow(), setRotationMatrix(), and setTranslationVector().

HomogeneousMatrix3::HomogeneousMatrix3 ( Real  r0 = 0,
Real  r1 = 0,
Real  r2 = 0,
Real  r3 = 0,
Real  t0 = 0,
Real  t1 = 0 
) [explicit]

Constructs a new homogenous 3x3 matrix with specified elements.

This matrix can be seen as the following block matrix: [ r, t; 0, 1 ], where r = [ r0, r1; r2, r3 ] is a 2x2 matrix and t = [ t0; t1 ] a 2D vector.

Note:
If no argument is specified, constructs the null matrix.

Definition at line 77 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and setBottomRow().

HomogeneousMatrix3::~HomogeneousMatrix3 (  )  throw () [virtual]

Copy constructor.

Note:
Cannot be 'explicit', as it would prevent the multiply operator HomogeneousMatrix3 m = m1 * m2. to return a HomogeneousMatrix3 on the stack.

No need to define it since the basic compiler-generated code is correct. Basic virtual destructor.

Definition at line 109 of file CeylanHomogeneousMatrix3.cc.


Member Function Documentation

Matrix3 Matrix3::Adjoint ( const Matrix3 m  )  [static, inherited]

Returns the adjoint matrix.

Definition at line 339 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::Cofactor(), and Ceylan::Maths::Linear::Matrix3::transpose().

Matrix3 Matrix3::Cofactor ( const Matrix3 m  )  [static, inherited]

Returns the cofactor matrix.

Definition at line 301 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat.

Referenced by Ceylan::Maths::Linear::Matrix3::Adjoint().

template<typename T >
static Matrix3 Ceylan::Maths::Linear::Matrix3::CreateFrom ( endomorphism  )  [inline, static, inherited]

Returns the matrix corresponding to specified endomorphism.

Parameters:
endomorphism can be a functor (ex: Endomorphism3DFunctor) or a simple function: Vector3 -> Vector3.
Note:
C++ does not allow virtual template method.

Definition at line 357 of file CeylanMatrix3.h.

References Ceylan::Maths::Linear::Matrix3::setColumn(), and Ceylan::Maths::Linear::Vector3::setTo().

Real Matrix3::determinant (  )  const [virtual, inherited]

Computes this matrix's determinant.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 227 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat.

Referenced by Ceylan::Maths::Linear::operator!().

Real Matrix3::getElementAt ( MatrixIndex  abscissa,
MatrixIndex  ordinate 
) const [virtual, inherited]

Returns indexed element.

Index ranges from 0 to Dimensions-1 for both dimensions.

Exceptions:
MathsException if index is out of bounds and if in debug mode.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 140 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix3::Dimensions.

Referenced by Ceylan::Locatable2D::getCenter().

TextDisplayable::TextOutputFormat TextDisplayable::GetOutputFormat (  )  [static, inherited]
void Matrix::nullify (  )  [virtual, inherited]

Sets this matrix to the null matrix (all elements zeroed).

Definition at line 53 of file CeylanMatrix.cc.

References Ceylan::Maths::Linear::Matrix::setAllElementsTo().

void Matrix3::setAllElementsTo ( Real  commonValue  )  [virtual, inherited]

Sets this matrix so that all its elements equal commonValue.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 129 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix3::Dimensions.

void HomogeneousMatrix3::setBottomRow (  )  [protected, virtual]

Creates the camera matrix in a 2D world, whose focal length and center of interest are specified.

Sets the bottom row of the homogenous matrix to all zero but a final one.

Definition at line 182 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat.

Referenced by HomogeneousMatrix3().

void Matrix3::setColumn ( MatrixIndex  columnNumber,
const Vector3 newColumn 
) [virtual, inherited]

Reassigns specified column of this matrix.

Note:
Column numbers range from 0 to 2 (included).

Definition at line 118 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, Ceylan::Maths::Linear::Vector3::_vec, and Ceylan::Maths::Linear::Matrix3::Dimensions.

Referenced by Ceylan::Maths::Linear::Matrix3::CreateFrom().

void Matrix3::setElementAt ( MatrixIndex  abscissa,
MatrixIndex  ordinate,
Real  newValue 
) [virtual, inherited]

Sets indexed element to specified value.

Index ranges from 0 to Dimensions-1 for both dimensions.

Exceptions:
MathsException if index is out of bounds and if in debug mode.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 157 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix3::Dimensions.

Referenced by Ceylan::Locatable2D::setCenter().

void HomogeneousMatrix3::setInCanonicalForm (  )  [protected, virtual]

Sets this homogeneous matrix in its canonical form, where bottom-right element is 1.

Note:
Does not change anything in the meaning of this matrix, all coordinates are divided by this bottom-right element if not null or almost, it is just a matter of numerical convention.
Exceptions:
LinearException if bottom-right element is zero.

Definition at line 217 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, Dimensions, and Ceylan::Maths::IsNull().

void TextDisplayable::SetOutputFormat ( TextOutputFormat  newOutputFormat  )  [static, inherited]

Sets the current overall text format to be used by TextDisplayable instances.

Parameters:
newOutputFormat the new output format.

Definition at line 72 of file CeylanTextDisplayable.cc.

References Ceylan::TextDisplayable::_OutputFormat.

Referenced by Ceylan::Log::LogHolder::LogHolder().

void HomogeneousMatrix3::setRotationMatrix ( const Matrix2 m  )  [protected, virtual]

Sets the embedded rotation matrix of this homogeneous matrix.

Assigns specified Matrix2 on top-left position.

Definition at line 205 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix2::getElementAt().

Referenced by HomogeneousMatrix3().

void Matrix3::setTo ( Real  x0 = 0,
Real  x1 = 0,
Real  x2 = 0,
Real  y0 = 0,
Real  y1 = 0,
Real  y2 = 0,
Real  z0 = 0,
Real  z1 = 0,
Real  z2 = 0 
) [virtual, inherited]

Reassigns all matrix elements.

Definition at line 100 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat.

void Matrix3::setToDiagonal ( Real  diagonalTerm  )  [virtual, inherited]

Sets this matrix to the a diagonal matrix whose diagonal term is diagonalTerm.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 183 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix3::Dimensions.

Referenced by Ceylan::Maths::Linear::Matrix3::setToIdentity().

void Matrix3::setToIdentity (  )  [virtual, inherited]

Sets this matrix to the identity matrix.

Reimplemented from Ceylan::Maths::Linear::Matrix.

Definition at line 174 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::setToDiagonal().

void HomogeneousMatrix3::setTranslationVector ( const Vector2 v  )  [protected, virtual]

Sets the embedded translation vector of this homogeneous matrix.

Assigns specified Vector2 to the top of last column.

Definition at line 195 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Vector2::getElementAt().

Referenced by HomogeneousMatrix3().

const std::string TextDisplayable::ToString ( std::list< TextDisplayable * >  displayables,
Ceylan::VerbosityLevels  level = Ceylan::high 
) [static, inherited]

Returns a user-friendly description of this list of pointers to text displayable instances.

Parameters:
displayables a list of pointers to TextDisplayable instances/
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
toString, Ceylan::VerbosityLevels

Definition at line 45 of file CeylanTextDisplayable.cc.

References Ceylan::formatStringList().

const string HomogeneousMatrix3::toString ( VerbosityLevels  level = high  )  const [virtual]

Returns a user-friendly description of the state of this object.

Parameters:
level the requested verbosity level.
Note:
Text output format is determined from overall settings.
See also:
TextDisplayable

Reimplemented from Ceylan::Maths::Linear::Matrix3.

Definition at line 118 of file CeylanHomogeneousMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, Ceylan::DigitOutputPrecision, Dimensions, Ceylan::Log::LogPlug::error(), Ceylan::TextDisplayable::GetOutputFormat(), Ceylan::TextDisplayable::html, and Ceylan::toString().

Real Matrix3::trace (  )  const [virtual, inherited]

Computes this matrix's trace.

Implements Ceylan::Maths::Linear::Matrix.

Definition at line 213 of file CeylanMatrix3.cc.

References Ceylan::Maths::Linear::Matrix3::_mat, and Ceylan::Maths::Linear::Matrix3::Dimensions.

void Matrix3::transpose (  )  [virtual, inherited]

Friends And Related Function Documentation

CEYLAN_DLL friend Vector2 operator* ( const HomogeneousMatrix3 hm,
const Vector2 v 
) [friend]

Multiplies an homogeneous 3x3 matrix by a 2D vector, returning another 2D vector: Vector2 result = hm3 * v2.

Note:
This obviously has a meaning only for homogeneous matrices.
CEYLAN_DLL friend HomogeneousMatrix3 operator* ( const HomogeneousMatrix3 hm1,
const HomogeneousMatrix3 hm2 
) [friend]

Multiplies efficiently two homogeneous matrices: HomogeneousMatrix3 result = m1 * m2.


Member Data Documentation

TextDisplayable::TextOutputFormat TextDisplayable::_OutputFormat = rawText [static, protected, inherited]

The text format to be used currently by TextDisplayable instances.

Note:
Defaults to raw text.

Definition at line 158 of file CeylanTextDisplayable.h.

Referenced by Ceylan::TextDisplayable::GetOutputFormat(), and Ceylan::TextDisplayable::SetOutputFormat().

Tells what is the dimension for this Matrix.

Reimplemented from Ceylan::Maths::Linear::Matrix3.

Definition at line 234 of file CeylanHomogeneousMatrix3.h.

Referenced by setInCanonicalForm(), and toString().


The documentation for this class was generated from the following files:
Generated on Mon Nov 29 13:41:22 2010 for Ceylan by  doxygen 1.6.3