Kaim::Matrix3x3f Class Reference

Kaim::Matrix3x3f Class Reference

#include <matrix3x3f.h>

Class Description

Matrix3x3f is defined as 3 Transformed Unit Vectors:

  • X = Matrix.Transform({1,0,0})
  • Y = Matrix.Transform({0,1,0})
  • Z = Matrix.Transform({0,0,1}) There is no operator*(), ie you cannot write M1*M2 or M*V. This is on purpose, this allows to avoid the VectorAsRow/VectorAsColumn confusion. Instead use M.Transform(V) and child_global = parent_global.Transform(child_local) which does not suffer from interpretation. When using ostream << matrix, vector X, Y and Z are written as rows.
+ Examples:

Init

 Matrix3x3f ()
 Set Identity. More...
 
 Matrix3x3f (KyFloat32 Xx, KyFloat32 Xy, KyFloat32 Xz, KyFloat32 Yx, KyFloat32 Yy, KyFloat32 Yz, KyFloat32 Zx, KyFloat32 Zy, KyFloat32 Zz)
 {Xx,Xy,Xz}=Matrix.Transform({1,0,0}), {Yx,Yy,Yz}=Matrix.Transform({0,1,0}), {Zx,Zy,Zz}=Matrix.Transform({0,0,1}) More...
 
 Matrix3x3f (const Vec3f &X_, const Vec3f &Y_, const Vec3f &Z_)
 X=Matrix.Transform({1,0,0}), Y=Matrix.Transform({0,1,0}), Z=Matrix.Transform({0,0,1}) More...
 
 Matrix3x3f (const Vec3f &axis, KyFloat32 angleRad)
 Set Matrix as the CCW rotation around axis. More...
 
void SetIdentity ()
 
void Set (KyFloat32 Xx, KyFloat32 Xy, KyFloat32 Xz, KyFloat32 Yx, KyFloat32 Yy, KyFloat32 Yz, KyFloat32 Zx, KyFloat32 Zy, KyFloat32 Zz)
 {Xx,Xy,Xz}=Matrix.Transform({1,0,0}), {Yx,Yy,Yz}=Matrix.Transform({0,1,0}), {Zx,Zy,Zz}=Matrix.Transform({0,0,1}) More...
 
void Set (const Vec3f &X_, const Vec3f &Y_, const Vec3f &Z_)
 X=Matrix.Transform({1,0,0}), Y=Matrix.Transform({0,1,0}), Z=Matrix.Transform({0,0,1}) More...
 
void SetRotation (const Vec3f &axis, KyFloat32 angleInRadian)
 Set Matrix as the CCW rotation around axis. More...
 
void SetYawPitchRoll (KyFloat32 yawInRadian, KyFloat32 pitchInRadian, KyFloat32 rollInRadian)
 Return yawRot.Transform(pitchRot.Transform(rollRot)) where yawRot around Z, pitchRot around X, rollRot around Y. More...
 

Main interface

const Vec3fAxis (KyUInt32 index) const
 Axis(0) return M.X, Axis(1) return M.Y, Axis(2) return M.Z. More...
 
Vec3fAxis (KyUInt32 index)
 Axis(0) return M.X, Axis(1) return M.Y, Axis(2) return M.Z. More...
 
Vec3f Transform (const Vec3f &to_transform) const
 return transformed Vec3f More...
 
Matrix3x3f Transform (const Matrix3x3f &to_transform) const
 return transformed to_transform More...
 
void Transform (const Vec3f &to_transform, Vec3f &transformed) const
 Transform Vec3f transformed. More...
 
void Transform (const Matrix3x3f &to_transform, Matrix3x3f &transformed) const
 Transform Matric3x3f transformed. More...
 
bool operator== (const Matrix3x3f &other) const
 
bool operator!= (const Matrix3x3f &other) const
 

Static methods

static Matrix3x3f Identity ()
 
static Matrix3x3f YawPitchRoll (KyFloat32 yawInRadian, KyFloat32 pitchInRadian, KyFloat32 rollInRadian)
 Return yawRot.Transform(pitchRot.Transform(rollRot)) where yawRot around Z, pitchRot around X, rollRot around Y. More...
 
static Matrix3x3f Rotation (const Vec3f &axis, KyFloat32 angleInRadian)
 Return Matrix as the rotation around axis. More...
 

Data

Vec3f X
 Matrix.Transfrom(Vec3f(1,0,0)) More...
 
Vec3f Y
 Matrix.Transfrom(Vec3f(0,1,0)) More...
 
Vec3f Z
 Matrix.Transfrom(Vec3f(0,0,1)) More...
 

Constructor & Destructor Documentation

Kaim::Matrix3x3f::Matrix3x3f ( )
inline

Set Identity.

Kaim::Matrix3x3f::Matrix3x3f ( KyFloat32  Xx,
KyFloat32  Xy,
KyFloat32  Xz,
KyFloat32  Yx,
KyFloat32  Yy,
KyFloat32  Yz,
KyFloat32  Zx,
KyFloat32  Zy,
KyFloat32  Zz 
)
inline

{Xx,Xy,Xz}=Matrix.Transform({1,0,0}), {Yx,Yy,Yz}=Matrix.Transform({0,1,0}), {Zx,Zy,Zz}=Matrix.Transform({0,0,1})

Kaim::Matrix3x3f::Matrix3x3f ( const Vec3f X_,
const Vec3f Y_,
const Vec3f Z_ 
)
inline

X=Matrix.Transform({1,0,0}), Y=Matrix.Transform({0,1,0}), Z=Matrix.Transform({0,0,1})

Kaim::Matrix3x3f::Matrix3x3f ( const Vec3f axis,
KyFloat32  angleRad 
)
inline

Set Matrix as the CCW rotation around axis.

Member Function Documentation

const Vec3f & Kaim::Matrix3x3f::Axis ( KyUInt32  index) const
inline

Axis(0) return M.X, Axis(1) return M.Y, Axis(2) return M.Z.

Vec3f & Kaim::Matrix3x3f::Axis ( KyUInt32  index)
inline

Axis(0) return M.X, Axis(1) return M.Y, Axis(2) return M.Z.

static Matrix3x3f Kaim::Matrix3x3f::Rotation ( const Vec3f axis,
KyFloat32  angleInRadian 
)
inlinestatic

Return Matrix as the rotation around axis.

void Kaim::Matrix3x3f::Set ( KyFloat32  Xx,
KyFloat32  Xy,
KyFloat32  Xz,
KyFloat32  Yx,
KyFloat32  Yy,
KyFloat32  Yz,
KyFloat32  Zx,
KyFloat32  Zy,
KyFloat32  Zz 
)
inline

{Xx,Xy,Xz}=Matrix.Transform({1,0,0}), {Yx,Yy,Yz}=Matrix.Transform({0,1,0}), {Zx,Zy,Zz}=Matrix.Transform({0,0,1})

void Kaim::Matrix3x3f::Set ( const Vec3f X_,
const Vec3f Y_,
const Vec3f Z_ 
)
inline

X=Matrix.Transform({1,0,0}), Y=Matrix.Transform({0,1,0}), Z=Matrix.Transform({0,0,1})

void Kaim::Matrix3x3f::SetRotation ( const Vec3f axis,
KyFloat32  angleInRadian 
)

Set Matrix as the CCW rotation around axis.

+ Examples:
void Kaim::Matrix3x3f::SetYawPitchRoll ( KyFloat32  yawInRadian,
KyFloat32  pitchInRadian,
KyFloat32  rollInRadian 
)

Return yawRot.Transform(pitchRot.Transform(rollRot)) where yawRot around Z, pitchRot around X, rollRot around Y.

roll>0 => "bank-right", pitch>0 => "look-up", yaw>0 => "turn-left"

Vec3f Kaim::Matrix3x3f::Transform ( const Vec3f to_transform) const
inline
Matrix3x3f Kaim::Matrix3x3f::Transform ( const Matrix3x3f to_transform) const
inline

return transformed to_transform

void Kaim::Matrix3x3f::Transform ( const Vec3f to_transform,
Vec3f transformed 
) const
inline

Transform Vec3f transformed.

void Kaim::Matrix3x3f::Transform ( const Matrix3x3f to_transform,
Matrix3x3f transformed 
) const
inline

Transform Matric3x3f transformed.

static Matrix3x3f Kaim::Matrix3x3f::YawPitchRoll ( KyFloat32  yawInRadian,
KyFloat32  pitchInRadian,
KyFloat32  rollInRadian 
)
inlinestatic

Return yawRot.Transform(pitchRot.Transform(rollRot)) where yawRot around Z, pitchRot around X, rollRot around Y.

roll>0 => "bank-right", pitch>0 => "look-up", yaw>0 => "turn-left"

Member Data Documentation

Vec3f Kaim::Matrix3x3f::X

Matrix.Transfrom(Vec3f(1,0,0))

Vec3f Kaim::Matrix3x3f::Y

Matrix.Transfrom(Vec3f(0,1,0))

Vec3f Kaim::Matrix3x3f::Z

Matrix.Transfrom(Vec3f(0,0,1))


The documentation for this class was generated from the following files:
  • gwnavruntime/math/matrix3x3f.h
  • gwnavruntime/math/matrix3x3f.cpp