Mathter
A configurable 3D math library for game developers.
Namespaces | Macros | Functions
MatrixVectorArithmetic.hpp File Reference
#include "MatrixImpl.hpp"

Go to the source code of this file.

Namespaces

 mathter
 

Macros

#define MATHTER_VECMAT_ARRAY_1   result = vec(0) * mat.stripes[0];
 
#define MATHTER_VECMAT_ARRAY_2   MATHTER_VECMAT_ARRAY_1 result += vec(1) * mat.stripes[1];
 
#define MATHTER_VECMAT_ARRAY_3   MATHTER_VECMAT_ARRAY_2 result += vec(2) * mat.stripes[2];
 
#define MATHTER_VECMAT_ARRAY_4   MATHTER_VECMAT_ARRAY_3 result += vec(3) * mat.stripes[3];
 
#define MATHTER_VECMAT_UNROLL(S)
 
#define MATHTER_VECMAT_DOT_ARRAY_1   result(0) = Dot(vec, mat.stripes[0]);
 
#define MATHTER_VECMAT_DOT_ARRAY_2   MATHTER_VECMAT_DOT_ARRAY_1 result(1) = Dot(vec, mat.stripes[1]);
 
#define MATHTER_VECMAT_DOT_ARRAY_3   MATHTER_VECMAT_DOT_ARRAY_2 result(2) = Dot(vec, mat.stripes[2]);
 
#define MATHTER_VECMAT_DOT_ARRAY_4   MATHTER_VECMAT_DOT_ARRAY_3 result(3) = Dot(vec, mat.stripes[3]);
 
#define MATHTER_VECMAT_DOT_UNROLL(S)
 

Functions

template<class Vt , class Mt , int Vd, int Mcol, eMatrixOrder Morder, bool Packed, class Rt >
Vector< Rt, Mcol, Packed > mathter::operator* (const Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd, Mcol, Morder, eMatrixLayout::ROW_MAJOR, Packed > &mat)
 
template<class Vt , class Mt , int Vd, int Mcol, eMatrixOrder Morder, bool Packed, class Rt >
Vector< Rt, Mcol, Packed > mathter::operator* (const Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd, Mcol, Morder, eMatrixLayout::COLUMN_MAJOR, Packed > &mat)
 
template<class Vt , class Mt , int Vd, int Mcol, eMatrixOrder Morder, eMatrixLayout Mlayout, bool Packed>
Vector< traits::MatMulElemT< Vt, Mt >, Mcol, Packed > mathter::operator* (const Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd, Mcol, Morder, Mlayout, Packed > &mat)
 
template<class Vt , class Mt , int Vd, eMatrixLayout Mlayout, eMatrixOrder Morder, bool Packed, class Rt = traits::MatMulElemT<Vt, Mt>>
Vector< Rt, Vd, Packed > mathter::operator* (const Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd+1, Vd, Morder, Mlayout, Packed > &mat)
 
template<class Vt , class Mt , int Vd, eMatrixLayout Mlayout, eMatrixOrder Morder, bool Packed, class Rt = traits::MatMulElemT<Vt, Mt>>
Vector< Rt, Vd, Packed > mathter::operator* (const Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd+1, Vd+1, Morder, Mlayout, Packed > &mat)
 
template<class Vt , class Mt , int Vd, int Mrow, eMatrixOrder Morder, bool Packed, class Rt >
Vector< Rt, Mrow, Packed > mathter::operator* (const Matrix< Mt, Mrow, Vd, Morder, eMatrixLayout::ROW_MAJOR, Packed > &mat, const Vector< Vt, Vd, Packed > &vec)
 
template<class Vt , class Mt , int Vd, int Mrow, eMatrixOrder Morder, bool Packed, class Rt >
Vector< Rt, Mrow, Packed > mathter::operator* (const Matrix< Mt, Mrow, Vd, Morder, eMatrixLayout::COLUMN_MAJOR, Packed > &mat, const Vector< Vt, Vd, Packed > &vec)
 
template<class Vt , class Mt , int Vd, int Mrow, eMatrixOrder Morder, eMatrixLayout Mlayout, bool Packed>
Vector< traits::MatMulElemT< Vt, Mt >, Mrow, Packed > mathter::operator* (const Matrix< Mt, Mrow, Vd, Morder, Mlayout, Packed > &mat, const Vector< Vt, Vd, Packed > &vec)
 
template<class Vt , class Mt , int Vd, eMatrixLayout Mlayout, eMatrixOrder Morder, bool Packed, class Rt = traits::MatMulElemT<Vt, Mt>>
Vector< Rt, Vd, Packed > mathter::operator* (const Matrix< Mt, Vd, Vd+1, Morder, Mlayout, Packed > &mat, const Vector< Vt, Vd, Packed > &vec)
 
template<class Vt , class Mt , int Vd, eMatrixLayout Mlayout, eMatrixOrder Morder, bool Packed, class Rt = traits::MatMulElemT<Vt, Mt>>
Vector< Rt, Vd, Packed > mathter::operator* (const Matrix< Mt, Vd+1, Vd+1, Morder, Mlayout, Packed > &mat, const Vector< Vt, Vd, Packed > &vec)
 
template<class Vt , class Mt , int Vd, eMatrixOrder Morder, eMatrixLayout Layout, bool Packed>
Vector< Vt, Vd, Packed > & mathter::operator*= (Vector< Vt, Vd, Packed > &vec, const Matrix< Mt, Vd, Vd, Morder, Layout, Packed > &mat)
 

Macro Definition Documentation

◆ MATHTER_VECMAT_ARRAY_1

#define MATHTER_VECMAT_ARRAY_1   result = vec(0) * mat.stripes[0];

◆ MATHTER_VECMAT_ARRAY_2

#define MATHTER_VECMAT_ARRAY_2   MATHTER_VECMAT_ARRAY_1 result += vec(1) * mat.stripes[1];

◆ MATHTER_VECMAT_ARRAY_3

#define MATHTER_VECMAT_ARRAY_3   MATHTER_VECMAT_ARRAY_2 result += vec(2) * mat.stripes[2];

◆ MATHTER_VECMAT_ARRAY_4

#define MATHTER_VECMAT_ARRAY_4   MATHTER_VECMAT_ARRAY_3 result += vec(3) * mat.stripes[3];

◆ MATHTER_VECMAT_DOT_ARRAY_1

#define MATHTER_VECMAT_DOT_ARRAY_1   result(0) = Dot(vec, mat.stripes[0]);

◆ MATHTER_VECMAT_DOT_ARRAY_2

#define MATHTER_VECMAT_DOT_ARRAY_2   MATHTER_VECMAT_DOT_ARRAY_1 result(1) = Dot(vec, mat.stripes[1]);

◆ MATHTER_VECMAT_DOT_ARRAY_3

#define MATHTER_VECMAT_DOT_ARRAY_3   MATHTER_VECMAT_DOT_ARRAY_2 result(2) = Dot(vec, mat.stripes[2]);

◆ MATHTER_VECMAT_DOT_ARRAY_4

#define MATHTER_VECMAT_DOT_ARRAY_4   MATHTER_VECMAT_DOT_ARRAY_3 result(3) = Dot(vec, mat.stripes[3]);

◆ MATHTER_VECMAT_DOT_UNROLL

#define MATHTER_VECMAT_DOT_UNROLL (   S)
Value:
if (result.Dimension() == S) { \
MATHTER_MATMUL_EXPAND(MATHTER_VECMAT_DOT_ARRAY_##S) \
return result; \
}

◆ MATHTER_VECMAT_UNROLL

#define MATHTER_VECMAT_UNROLL (   S)
Value:
if (result.Dimension() == S) { \
MATHTER_MATMUL_EXPAND(MATHTER_VECMAT_ARRAY_##S) \
return result; \
}