Clarisse 5.0 SP8 SDK  5.0.5.8.0
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
Public Member Functions | Static Public Member Functions | Friends | List of all members
GMathMatrix4x4< T, ROW_MAJOR_ORDER > Class Template Reference

The GMathMatrix4x4 class Implements a row-major 4 by 4 Matrix. | [0,0] [0,1] [0,2] [0,3] | [1,0] [1,1] [1,2] [1,3] | [2,0] [2,1] [2,2] [2,3] | [3,0] [3,1] [3,2] [3,3]. More...

Inheritance diagram for GMathMatrix4x4< T, ROW_MAJOR_ORDER >:
CoreBaseType

Public Member Functions

 GMathMatrix4x4 (const bool &identity)
 
template<class U >
 GMathMatrix4x4 (const CoreBasicArray< U > &src_array)
 
 GMathMatrix4x4 (const T src[4][4])
 
template<class U , bool ROW_MAJOR_MATRIX>
 GMathMatrix4x4 (const GMathMatrix4x4< U, ROW_MAJOR_MATRIX > &src)
 
GMathMatrix4x4 get_copy ()
 
void copy_from (const GMathMatrix4x4 &m)
 
void copy_to (GMathMatrix4x4 &m) const
 
template<bool ROW_MAJOR_ARRAY>
void set_array (const T elements[16])
 
template<bool ROW_MAJOR_ARRAY>
void get_array (T elements[16]) const
 
template<class U >
GMathMatrix4x4operator= (const GMathMatrix4x4< U > &src)
 
bool operator== (const GMathMatrix4x4 &m) const
 
bool operator!= (const GMathMatrix4x4 &m) const
 
void nullify ()
 
void set_identity ()
 
void make_translation (const T &x, const T &y, const T &z)
 
void make_translation (const GMathVec3< T > &t)
 
void make_scaling_translation (const GMathVec3< T > &s, const GMathVec3< T > &t)
 
void make_inverse_tr (const GMathVec3< T > &t, const GMathMatrix4x4< T > &r)
 
void make_inverse_ts (const GMathVec3< T > &t, const GMathVec3< T > &s)
 
void make_inverse_rs (const GMathMatrix4x4< T > &r, const GMathVec3< T > &s)
 
void make_inverse (const GMathVec3< T > &t, const GMathMatrix4x4< T > &r, const GMathVec3< T > &s)
 
void make_frame (const GMathVec3< T > &x, const GMathVec3< T > &y, const GMathVec3< T > &z, const GMathVec3< T > &o=GMathVec3< T >(GMath< T >::zero()))
 
void make_rotation (Axis axis, const T &cos_angle, const T &sin_angle)
 
void make_rotation (Axis axis, const T &angle_radians)
 
void make_rotation_Z (const T &angle_radians)
 
void make_rotation (const GMathVec3< T > &r, const GMathRotationOrder &order=GMATH_ROTATION_ORDER_ZXY)
 
void make_diagonal (const GMathVec4< T > &d)
 
void make_scaling (const T &x, const T &y, const T &z)
 
void make_scaling (const GMathVec3< T > &s)
 
void make_shearing (const T &xy, const T &xz, const T &yz)
 
void make_shearing (const GMathVec3< T > &sh)
 
template<typename U >
void get_linear (GMathMatrix3x3< U > &linear) const
 
template<typename U >
void make_linear (const GMathMatrix3x3< U > &linear)
 
void make_linear_transpose (const GMathMatrix4x4< T > &linear)
 
void make_orthographic (const T &l, const T &r, const T &b, const T &t, const T &n, const T &f)
 
void make_perspective (const T &l, const T &r, const T &b, const T &t, const T &n, const T &f)
 
void compose (GMathVec3< T > &t, GMathVec3< T > &x, GMathVec3< T > &y, GMathVec3< T > &z, GMathVec3< T > &sh, GMathVec3< T > &s)
 
void compose (GMathVec3< T > &t, GMathMatrix4x4< T > &r, GMathVec3< T > &sh, GMathVec3< T > &s)
 
void set_translation (const GMathVec3< T > &t)
 
void set_frame (const GMathVec3< T > &x, const GMathVec3< T > &y, const GMathVec3< T > &z)
 
void set_rotation (const GMathVec3< T > &r, const GMathRotationOrder &order=GMATH_ROTATION_ORDER_ZXY)
 
void set_scaling (const GMathVec3< T > &s)
 
void multiply_left (const GMathMatrix4x4 &m)
 
void multiply_right (const GMathMatrix4x4 &m)
 
void multiply_transpose_left (const GMathMatrix4x4 &m)
 
void multiply_transpose_right (const GMathMatrix4x4 &m)
 
template<class U >
void translate (const GMathVec3< U > &t)
 
template<typename U >
void translate_right (const GMathVec3< U > &t)
 
template<typename U >
void rotate_Z_right (const U &angle_radians)
 
void rotate (const GMathVec3< T > &r, const GMathRotationOrder &order=GMATH_ROTATION_ORDER_ZXY)
 
void scale (const T &x, const T &y, const T &z)
 
void scale (const GMathVec3< T > &s)
 
template<typename U >
void scale_right (const GMathVec3< U > &s)
 
void scale_linear_right (const GMathVec3< T > &s)
 
void shear (const T &xy, const T &xz, const T &yz)
 
void shear (const GMathVec3< T > &sh)
 
get_inverse (GMathMatrix4x4 &result) const
 
void invert ()
 
get_determinant () const
 
void get_transpose (GMathMatrix4x4 &r) const
 
void transpose ()
 
void extract_translation (GMathVec3< T > &t) const
 
void compute_euler_angles (GMathVec3< T > &r, const GMathRotationOrder &order=GMATH_ROTATION_ORDER_ZXY) const
 
void decompose (GMathVec3< T > &t, GMathVec3< T > &x, GMathVec3< T > &y, GMathVec3< T > &z, GMathVec3< T > &shear, GMathVec3< T > &scale) const
 
void decompose (GMathVec3< T > &t, GMathMatrix4x4< T > &r, GMathVec3< T > &shear, GMathVec3< T > &scale) const
 
void extract_rotation (GMathMatrix4x4< T > &r) const
 
void extract_frame (GMathVec3< T > &x, GMathVec3< T > &y, GMathVec3< T > &z) const
 
void extract_shearing (GMathVec3< T > &shear) const
 
void extract_scaling (GMathVec3< T > &scale) const
 
void make_orthonormal ()
 
T & operator() (const unsigned int &x, const unsigned int &y)
 
const T & get_item (const unsigned int &x, const unsigned int &y) const
 
void set_item (const unsigned int &x, const unsigned int &y, const T &value)
 
 IX_DEPRECATED_UNTIL ("This function is deprecated: use get_item(...) (or get_data()) instead.", 6) inline const T *operator[](const unsigned int &index) const
 
 IX_DEPRECATED_UNTIL ("This function is deprecated: use operator(...) (or get_data()) instead.", 6) inline T *operator[](const unsigned int &index)
 
GMathVec3< T > get_frame (unsigned char i) const
 
GMathVec3< T > get_x_axis () const
 
GMathVec3< T > get_y_axis () const
 
GMathVec3< T > get_z_axis () const
 
GMathVec3< T > get_origin () const
 
GMathVec3< T > get_axes_z () const
 
const T * get_data () const
 
T * get_data ()
 
void fast_interpolate (const GMathMatrix4x4< T > &a, const GMathMatrix4x4< T > &b, const T &weight)
 
bool linear_equals (const GMathMatrix4x4< T > &b, const T &epsilon=GMath< T >::epsilon()) const
 
bool equals (const GMathMatrix4x4< T > &mat, T epsilon=GMath< T >::epsilon()) const
 
bool is_finite () const
 
const CoreClassInfoget_class_info () const
 
template<>
GMATH_EXPORT const CoreClassInfoclass_info ()
 
template<>
GMATH_EXPORT const CoreClassInfoclass_info ()
 
template<>
GMATH_EXPORT const CoreClassInfoclass_info ()
 
template<>
GMATH_EXPORT const CoreClassInfoclass_info ()
 
- Public Member Functions inherited from CoreBaseType
bool is_kindof (const CoreClassInfo &cinfo) const
 

Static Public Member Functions

static const GMathMatrix4x4get_identity ()
 
static void multiply (GMathMatrix4x4 &r, const GMathMatrix4x4 &m, const GMathMatrix4x4 &n)
 
static void multiply_transpose_left (GMathMatrix4x4 &r, const GMathMatrix4x4 &m, const GMathMatrix4x4 &n)
 
static void multiply_transpose_right (GMathMatrix4x4 &r, const GMathMatrix4x4 &m, const GMathMatrix4x4 &n)
 
template<class U , class V >
static void multiply (GMathVec3< U > &r, const GMathVec3< V > &v, const GMathMatrix4x4 &m)
 
template<class U , class V >
static void multiply (GMathVec4< U > &r, const GMathVec4< V > &v, const GMathMatrix4x4 &m)
 
template<class U , class V >
static void multiply_direction (GMathVec3< U > &r, const GMathVec3< V > &v, const GMathMatrix4x4 &m)
 
template<class U , class V >
static void multiply_transpose (GMathVec3< U > &r, const GMathVec3< V > &v, const GMathMatrix4x4 &m)
 
template<class U , class V >
static void multiply_transpose (GMathVec4< U > &r, const GMathVec4< V > &v, const GMathMatrix4x4 &m)
 
template<class U , class V >
static void multiply_direction_transpose (GMathVec3< U > &r, const GMathVec3< V > &v, const GMathMatrix4x4 &m)
 
static T get_inverse (const GMathMatrix4x4 &m, GMathMatrix4x4 &result)
 
static void get_determinant (const GMathMatrix4x4 &m, T &determinant)
 
static void transpose (const GMathMatrix4x4 &m, GMathMatrix4x4 &r)
 
static void extract_translation (const GMathMatrix4x4 &m, GMathVec3< T > &t)
 
static void compute_euler_angles (const GMathMatrix4x4 &m, GMathVec3< T > &r, const GMathRotationOrder &order=GMATH_ROTATION_ORDER_ZXY)
 
static T get_determinant (const GMathMatrix4x4 &m)
 
static void fast_interpolate (GMathMatrix4x4< T > &r, const GMathMatrix4x4< T > &a, const GMathMatrix4x4< T > &b, const T &weight)
 
static const CoreClassInfoclass_info ()
 
- Static Public Member Functions inherited from CoreBaseType
static const CoreClassInfoclass_info ()
 Get the type descriptor of this instance.
 

Friends

CoreLogStreamoperator<< (CoreLogStream &os, const GMathMatrix4x4 &m)
 

Detailed Description

template<class T, bool ROW_MAJOR_ORDER = GMATH_MATRIX4x4_DEFAULT_ROW_MAJOR_ORDER>
class GMathMatrix4x4< T, ROW_MAJOR_ORDER >

The GMathMatrix4x4 class Implements a row-major 4 by 4 Matrix. | [0,0] [0,1] [0,2] [0,3] | [1,0] [1,1] [1,2] [1,3] | [2,0] [2,1] [2,2] [2,3] | [3,0] [3,1] [3,2] [3,3].

Member Function Documentation

template<class T, bool ROW_MAJOR_ORDER = GMATH_MATRIX4x4_DEFAULT_ROW_MAJOR_ORDER>
template<class U , class V >
static void GMathMatrix4x4< T, ROW_MAJOR_ORDER >::multiply ( GMathVec4< U > &  r,
const GMathVec4< V > &  v,
const GMathMatrix4x4< T, ROW_MAJOR_ORDER > &  m 
)
inlinestatic

v(A, B, C, D) * m|a b c d| -> r = ((A*a + B*e + C*i + D*m),...,...,...) |e f g h| |i j k l| |m n o p|

template<class T, bool ROW_MAJOR_ORDER = GMATH_MATRIX4x4_DEFAULT_ROW_MAJOR_ORDER>
template<class U , class V >
static void GMathMatrix4x4< T, ROW_MAJOR_ORDER >::multiply_transpose ( GMathVec4< U > &  r,
const GMathVec4< V > &  v,
const GMathMatrix4x4< T, ROW_MAJOR_ORDER > &  m 
)
inlinestatic

m|a b c d| * v|A| -> r|a * A + b * B + c * C + d * D| |e f g h| |B| |...| |i j k l| |C| |...| |m n o p| |D| |...|