libalmath  1.14
 All Classes Namespaces Functions Variables Typedefs Groups Pages
Public Member Functions | Static Public Member Functions | Public Attributes
AL::Math::Rotation Struct Reference

A 3*3 rotation matrix. More...

#include <alrotation.h>

List of all members.

Public Member Functions

 Rotation ()
 Create a Rotation initialized to identity.
 Rotation (const std::vector< float > &pFloats)
 Create a Rotation with an std::vector.
Rotationoperator*= (const Rotation &pRot2)
 Overloading of operator *= for Rotation.
Rotation operator* (const Rotation &pRot2) const
 Overloading of operator * for Rotation.
bool operator== (const Rotation &pRot2) const
 Overloading of operator == for Rotation.
bool operator!= (const Rotation &pRot2) const
 Overloading of operator != for Rotation.
bool isNear (const Rotation &pRot2, const float &pEpsilon=0.0001f) const
 Check if the actual Rotation is near the one give in argument.
Rotation transpose () const
 Compute the rotation transpose (inverse) of the actual Rotation:
float determinant () const
 Compute the determinant of the Rotation:
std::vector< float > toVector () const
 Return the Rotation as a vector of float:

Static Public Member Functions

static Rotation fromQuaternion (const float pA, const float pB, const float pC, const float pD)
 Creates a 3*3 Rotation Matrix from a normalized quaternion ( |a + bi + cj + dk| = 1).
static Rotation fromAngleDirection (const float pAngle, const float pX, const float pY, const float pZ)
 Creates a 3*3 Rotation Matrix from a an angle and a normalized direction( |pX, pY, pZ| = 1).
static Rotation fromRotX (const float pRotX)
 Create a Rotation initialized with explicit rotation around x axis.
static Rotation fromRotY (const float pRotY)
 Create a Rotation initialized with explicit rotation around y axis.
static Rotation fromRotZ (const float pRotZ)
 Create a Rotation initialized with explicit rotation around z axis.
static Rotation from3DRotation (const float &pWX, const float &pWY, const float &pWZ)
 Create a Rotation initialized with euler angle.

Public Attributes

float r1_c1
 row 1 column 1.
float r1_c2
 row 1 column 2.
float r1_c3
 row 1 column 3.
float r2_c1
 row 2 column 1.
float r2_c2
 row 2 column 2.
float r2_c3
 row 2 column 3.
float r3_c1
 row 3 column 1.
float r3_c2
 row 3 column 2.
float r3_c3
 row 3 column 3.

Detailed Description

A 3*3 rotation matrix.

$ \left[\begin{array}{ccc} r_1c_1 & r_1c_2 & r_1c_3 \\ r_2c_1 & r_2c_2 & r_2c_3 \\ r_3c_1 & r_3c_2 & r_3c_3 \end{array}\right]$ more information

Definition at line 30 of file alrotation.h.


Constructor & Destructor Documentation

AL::Math::Rotation::Rotation ( )

Create a Rotation initialized to identity.

$ \left[\begin{array}{ccc} r_1c_1 & r_1c_2 & r_1c_3 \\ r_2c_1 & r_2c_2 & r_2c_3 \\ r_3c_1 & r_3c_2 & r_3c_3 \end{array}\right] = \left[\begin{array}{ccc} 1.0 & 0.0 & 0.0 \\ 0.0 & 1.0 & 0.0 \\ 0.0 & 0.0 & 1.0 \end{array}\right]$

AL::Math::Rotation::Rotation ( const std::vector< float > &  pFloats)

Create a Rotation with an std::vector.

Parameters:
pFloatsAn std::vector<float> of size 9, 12 or 16 for respectively:

For std::vector<float> of size 9

$ \left[\begin{array}{cccc} r_1c_1 & r_1c_2 & r_1c_3 \\ r_2c_1 & r_2c_2 & r_2c_3 \\ r_3c_1 & r_3c_2 & r_3c_3 \end{array}\right] = \left[\begin{array}{cccc} pFloats[0] & pFloats[1] & pFloats[2] \\ pFloats[3] & pFloats[4] & pFloats[5] \\ pFloats[6] & pFloats[7] & pFloats[8] \end{array}\right]$ For std::vector<float> of size 12 or 16: $ \left[\begin{array}{cccc} r_1c_1 & r_1c_2 & r_1c_3 \\ r_2c_1 & r_2c_2 & r_2c_3 \\ r_3c_1 & r_3c_2 & r_3c_3 \end{array}\right] = \left[\begin{array}{cccc} pFloats[0] & pFloats[1] & pFloats[2] \\ pFloats[4] & pFloats[5] & pFloats[6] \\ pFloats[8] & pFloats[9] & pFloats[10] \end{array}\right]$


Member Function Documentation

float AL::Math::Rotation::determinant ( ) const

Compute the determinant of the Rotation:

$pRot.r_1c_1*pRot.r_2c_2*pRot.r_3c_3 + pRot.r_1c_2*pRot.r_2c_3*pRot.r_3c_1 + pRot.r_1c_3*pRot.r_2c_1*pRot.r_3c_2 - pRot.r_1c_1*pRot.r_2c_3*pRot.r_3c_2 - pRot.r_1c_2*pRot.r_2c_1*pRot.r_3c_3 - pRot.r_1c_3*pRot.r_2c_2*pRot.r_3c_1$

Returns:
the float determinant of the Rotation
static Rotation AL::Math::Rotation::from3DRotation ( const float &  pWX,
const float &  pWY,
const float &  pWZ 
)
static

Create a Rotation initialized with euler angle.

Rot = fromRotZ(pWZ)*fromRotY(pWY)*fromRotX(pWX)

Parameters:
pWXthe float value for euler angle x in radian
pWYthe float value for euler angle y in radian
pWZthe float value for euler angle z in radian
static Rotation AL::Math::Rotation::fromAngleDirection ( const float  pAngle,
const float  pX,
const float  pY,
const float  pZ 
)
static

Creates a 3*3 Rotation Matrix from a an angle and a normalized direction( |pX, pY, pZ| = 1).

Parameters:
pAnglethe float value of angle in radian
pXthe X direction of the vector of the rotation
pYthe Y direction of the vector of the rotation
pZthe Z direction of the vector of the rotation
static Rotation AL::Math::Rotation::fromQuaternion ( const float  pA,
const float  pB,
const float  pC,
const float  pD 
)
static

Creates a 3*3 Rotation Matrix from a normalized quaternion ( |a + bi + cj + dk| = 1).

Parameters:
pACoefficient a of the normalized quaternion
pBCoefficient b of the normalized quaternion
pCCoefficient c of the normalized quaternion
pDCoefficient d of the normalized quaternion
static Rotation AL::Math::Rotation::fromRotX ( const float  pRotX)
static

Create a Rotation initialized with explicit rotation around x axis.

$ pRot = \left[\begin{array}{cccc} 1.0 & 0.0 & 0.0 \\ 0.0 & cos(pRotX) & -sin(pRotX) \\ 0.0 & sin(pRotX) & cos(pRotX) \end{array}\right]$

Parameters:
pRotXthe float value for angle rotation in radian around x axis
static Rotation AL::Math::Rotation::fromRotY ( const float  pRotY)
static

Create a Rotation initialized with explicit rotation around y axis.

$ pT = \left[\begin{array}{cccc} cos(pRotY) & 0.0 & sin(pRotY) \\ 0.0 & 1.0 & 0.0 \\ -sin(pRotY) & 0.0 & cos(pRotY) \end{array}\right]$

Parameters:
pRotYthe float value for angle rotation in radian around y axis
static Rotation AL::Math::Rotation::fromRotZ ( const float  pRotZ)
static

Create a Rotation initialized with explicit rotation around z axis.

$ pT = \left[\begin{array}{cccc} cos(pRotZ) & -sin(pRotZ) & 0.0 \\ sin(pRotZ) & cos(pRotZ) & 0.0 \\ 0.0 & 0.0 & 1.0 \end{array}\right]$

Parameters:
pRotZthe float value for angle rotation in radian around z axis
bool AL::Math::Rotation::isNear ( const Rotation pRot2,
const float &  pEpsilon = 0.0001f 
) const

Check if the actual Rotation is near the one give in argument.

Parameters:
pRot2the second Rotation
pEpsilonan optionnal epsilon distance: default: 0.0001
Returns:
true if the distance between the two rotations is less than pEpsilon
bool AL::Math::Rotation::operator!= ( const Rotation pRot2) const

Overloading of operator != for Rotation.

Parameters:
pRot2the second Rotation
Rotation AL::Math::Rotation::operator* ( const Rotation pRot2) const

Overloading of operator * for Rotation.

Parameters:
pRot2the second Rotation
Rotation& AL::Math::Rotation::operator*= ( const Rotation pRot2)

Overloading of operator *= for Rotation.

Parameters:
pRot2the second Rotation
bool AL::Math::Rotation::operator== ( const Rotation pRot2) const

Overloading of operator == for Rotation.

Parameters:
pRot2the second Rotation
std::vector<float> AL::Math::Rotation::toVector ( ) const

Return the Rotation as a vector of float:

$ \begin{array}{cccc} [r_1c_1, & r_1c_2, & r_1c_3, \\ r_2c_1, & r_2c_2, & r_2c_3, \\ r_3c_1, & r_3c_2, & r_3c_3] \end{array}$

Rotation AL::Math::Rotation::transpose ( ) const

Compute the rotation transpose (inverse) of the actual Rotation:

Returns:
the Rotation transpose

Member Data Documentation

float AL::Math::Rotation::r1_c1

row 1 column 1.

Definition at line 35 of file alrotation.h.

float AL::Math::Rotation::r1_c2

row 1 column 2.

Definition at line 39 of file alrotation.h.

float AL::Math::Rotation::r1_c3

row 1 column 3.

Definition at line 43 of file alrotation.h.

float AL::Math::Rotation::r2_c1

row 2 column 1.

Definition at line 47 of file alrotation.h.

float AL::Math::Rotation::r2_c2

row 2 column 2.

Definition at line 51 of file alrotation.h.

float AL::Math::Rotation::r2_c3

row 2 column 3.

Definition at line 55 of file alrotation.h.

float AL::Math::Rotation::r3_c1

row 3 column 1.

Definition at line 59 of file alrotation.h.

float AL::Math::Rotation::r3_c2

row 3 column 2.

Definition at line 63 of file alrotation.h.

float AL::Math::Rotation::r3_c3

row 3 column 3.

Definition at line 67 of file alrotation.h.


The documentation for this struct was generated from the following file: