CubbyFlow::Matrix< T, Rows, Cols > Class Template Referencefinal

#include <Core/Matrix/Matrix.hpp>

Inheritance diagram for CubbyFlow::Matrix< T, Rows, Cols >:
CubbyFlow::MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > > CubbyFlow::MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >

Public Types

using Base = MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >
 
using ValueType = T
 
using Reference = T &
 
using ConstReference = const T &
 
using Pointer = T *
 
using ConstPointer = const T *
 
using Iterator = Pointer
 
using ConstIterator = ConstPointer
 
- Public Types inherited from CubbyFlow::MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > >
using ValueType = T
 
- Public Types inherited from CubbyFlow::MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >
using ValueType = T
 
using Reference = T &
 
using ConstReference = const T &
 

Public Member Functions

constexpr Matrix ()
 
 Matrix (ConstReference value)
 
template<typename... Args>
constexpr Matrix (ConstReference first, Args... rest)
 
template<size_t R, size_t C, typename E >
 Matrix (const MatrixExpression< T, R, C, E > &expression)
 
 Matrix (const NestedInitializerListsT< T, 2 > &lst)
 
 Matrix (ConstPointer ptr)
 
 ~Matrix ()=default
 
constexpr Matrix (const Matrix &other)
 
constexpr Matrix (Matrix &&other) noexcept
 
Matrixoperator= (const Matrix &other)
 
Matrixoperator= (Matrix &&other) noexcept
 
void Fill (const T &val)
 
void Fill (const std::function< T(size_t i)> &func)
 
void Fill (const std::function< T(size_t i, size_t j)> &func)
 
void Swap (Matrix &other)
 
constexpr size_t GetRows () const
 
constexpr size_t GetCols () const
 
Iterator begin ()
 
constexpr ConstIterator begin () const
 
Iterator end ()
 
constexpr ConstIterator end () const
 
Pointer data ()
 
constexpr ConstPointer data () const
 
Reference operator[] (size_t i)
 
ConstReference operator[] (size_t i) const
 
- Public Member Functions inherited from CubbyFlow::MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > >
constexpr size_t GetRows () const
 Returns the number of rows. More...
 
constexpr size_t GetCols () const
 Returns the number of columns. More...
 
Eval (size_t i, size_t j) const
 Returns the evaluated value for (i, j). More...
 
Matrix< T, Rows, Cols > Eval () const
 
bool IsSimilar (const MatrixExpression< T, R, C, E > &m, double tol=std::numeric_limits< double >::epsilon()) const
 
constexpr bool IsSquare () const
 Returns true if this matrix is a square matrix. More...
 
ValueType Sum () const
 
ValueType Avg () const
 
ValueType Min () const
 
ValueType Max () const
 
ValueType AbsMin () const
 
ValueType AbsMax () const
 
ValueType Trace () const
 
ValueType Determinant () const
 
std::enable_if_t<(Rows > 4 &&Cols > 4)||IsMatrixSizeDynamic< Rows, Cols >), U > Determinant (const MatrixExpression &m)
 
size_t DominantAxis () const
 
size_t SubdominantAxis () const
 
ValueType Norm () const
 
ValueType NormSquared () const
 
ValueType FrobeniusNorm () const
 
ValueType Length () const
 
ValueType LengthSquared () const
 
ValueType DistanceTo (const MatrixExpression< T, R, C, E > &other) const
 Returns the distance to the other vector. More...
 
DistanceTo (const MatrixExpression< T, R, C, E > &other) const
 
ValueType DistanceSquaredTo (const MatrixExpression< T, R, C, E > &other) const
 Returns the squared distance to the other vector. More...
 
DistanceSquaredTo (const MatrixExpression< T, R, C, E > &other) const
 
MatrixScalarElemWiseBinaryOp< T, Rows, Cols, const Matrix< T, Rows, Cols > &, std::divides< T > > Normalized () const
 
MatrixDiagonal< T, Rows, Cols, const Matrix< T, Rows, Cols > &> Diagonal () const
 Returns diagonal part of this matrix. More...
 
MatrixOffDiagonal< T, Rows, Cols, const Matrix< T, Rows, Cols > &> OffDiagonal () const
 Returns off-diagonal part of this matrix. More...
 
MatrixTri< T, Rows, Cols, const Matrix< T, Rows, Cols > &> StrictLowerTri () const
 Returns strictly lower triangle part of this matrix. More...
 
MatrixTri< T, Rows, Cols, const Matrix< T, Rows, Cols > &> StrictUpperTri () const
 Returns strictly upper triangle part of this matrix. More...
 
MatrixTri< T, Rows, Cols, const Matrix< T, Rows, Cols > &> LowerTri () const
 Returns lower triangle part of this matrix (including the diagonal). More...
 
MatrixTri< T, Rows, Cols, const Matrix< T, Rows, Cols > &> UpperTri () const
 Returns upper triangle part of this matrix (including the diagonal). More...
 
MatrixTranspose< T, Rows, Cols, const Matrix< T, Rows, Cols > &> Transposed () const
 
Matrix< T, Rows, Cols > Inverse () const
 Returns inverse matrix. More...
 
void Inverse (const MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > > &m, std::enable_if_t<(Rows > 4 &&Cols > 4)||IsMatrixSizeDynamic< Rows, Cols >(), M > &result)
 
MatrixUnaryOp< U, Rows, Cols, const Matrix< T, Rows, Cols > &, TypeCast< T, U > > CastTo () const
 
MatrixTypeCast< T, Rows, Cols, U, const D &> CastTo () const
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||Cols==1) &&(IsMatrixSizeDynamic< R, C >)||C==1), U > Dot (const MatrixExpression< T, R, C, E > &expression) const
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||(Rows==2 &&Cols==1)) &&(IsMatrixSizeDynamic< R, C >)||(R==2 &&C==1)), U > Cross (const MatrixExpression< T, R, C, E > &expression) const
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||(Rows==3 &&Cols==1)) &&(IsMatrixSizeDynamic< R, C >)||(R==3 &&C==1)), Matrix< U, 3, 1 > > Cross (const MatrixExpression< T, R, C, E > &expression) const
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||((Rows==2||Rows==3) &&Cols==1)) &&(IsMatrixSizeDynamic< R, C >)||((R==2||R==3) &&C==1)), Matrix< U, Rows, 1 > > Reflected (const MatrixExpression< T, R, C, E > &normal) const
 Returns the reflection vector to the surface with given surface normal. More...
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||((Rows==2||Rows==3) &&Cols==1)) &&(IsMatrixSizeDynamic< R, C >)||((R==2||R==3) &&C==1)), Matrix< U, Rows, 1 > > Projected (const MatrixExpression< T, R, C, E > &normal) const
 Returns the projected vector to the surface with given surface normal. More...
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||(Rows==2 &&Cols==1)), Matrix< U, 2, 1 > > Tangential () const
 Returns the tangential vector for this vector. More...
 
std::enable_if_t<(IsMatrixSizeDynamic< Rows, Cols >)||(Rows==3 &&Cols==1)), std::tuple< Matrix< U, 3, 1 >, Matrix< U, 3, 1 > > > Tangentials () const
 Returns the tangential vectors for this vector. More...
 
Matrix< T, Rows, Cols > & GetDerived ()
 Returns actual implementation (the subclass). More...
 
const Matrix< T, Rows, Cols > & GetDerived () const
 Returns actual implementation (the subclass). More...
 
- Public Member Functions inherited from CubbyFlow::MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >
void CopyFrom (const MatrixExpression< T, R, C, E > &expression)
 Copies from generic expression. More...
 
void SetDiagonal (ConstReference val)
 Sets diagonal elements with input scalar. More...
 
void SetOffDiagonal (ConstReference val)
 Sets off-diagonal elements with input scalar. More...
 
void SetRow (size_t i, const MatrixExpression< T, R, C, E > &row)
 Sets i-th row with input column vector. More...
 
void SetColumn (size_t j, const MatrixExpression< T, R, C, E > &col)
 Sets j-th column with input vector. More...
 
void Normalize ()
 
void Transpose ()
 Transposes this matrix. More...
 
void Invert ()
 Inverts this matrix. More...
 
Reference operator() (size_t i, size_t j)
 
ConstReference operator() (size_t i, size_t j) const
 
MatrixDenseBaseoperator= (const MatrixExpression< T, R, C, E > &expression)
 Copies from generic expression. More...
 
MatrixDenseBase< T, Rows, Cols, D > & operator= (const MatrixExpression< T, R, C, E > &expression)
 

Additional Inherited Members

- Static Public Member Functions inherited from CubbyFlow::MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >
static std::enable_if_t< IsMatrixSizeStatic< Rows, Cols >), D > MakeZero ()
 Makes a static matrix with zero entries. More...
 
static std::enable_if_t< IsMatrixSizeDynamic< Rows, Cols >), D > MakeZero (size_t rows, size_t cols)
 Makes a dynamic matrix with zero entries. More...
 
static std::enable_if_t< IsMatrixSizeStatic< Rows, Cols >), D > MakeConstant (ValueType val)
 Makes a static matrix with constant entries. More...
 
static std::enable_if_t< IsMatrixSizeDynamic< Rows, Cols >), D > MakeConstant (size_t rows, size_t cols, ValueType val)
 Makes a dynamic matrix with constant entries. More...
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >), D > MakeIdentity ()
 Makes a static identity matrix. More...
 
static std::enable_if_t< IsMatrixSizeDynamic< Rows, Cols >), D > MakeIdentity (size_t rows)
 Makes a dynamic identity matrix. More...
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >), D > MakeScaleMatrix (ValueType first, Args... rest)
 Makes scale matrix. More...
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >), D > MakeScaleMatrix (const MatrixExpression< T, R, C, E > &expression)
 Makes scale matrix. More...
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >) &&(Rows==2), D > MakeRotationMatrix (T rad)
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >) &&(Rows==3||Rows==4), D > MakeRotationMatrix (const MatrixExpression< T, R, C, E > &axis, T rad)
 
static std::enable_if_t< IsMatrixStaticSquare< Rows, Cols >) &&(Rows==4), D > MakeTranslationMatrix (const MatrixExpression< T, R, C, E > &t)
 Makes translation matrix. More...
 
- Protected Member Functions inherited from CubbyFlow::MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > >
 MatrixExpression ()=default
 
- Protected Member Functions inherited from CubbyFlow::MatrixDenseBase< T, Rows, Cols, Matrix< T, Rows, Cols > >
 MatrixDenseBase ()=default
 
- Static Protected Member Functions inherited from CubbyFlow::MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > >
static constexpr T Determinant (const MatrixExpression< T, 1, 1, Matrix< T, Rows, Cols > > &m)
 
static constexpr T Determinant (const MatrixExpression< T, 2, 2, Matrix< T, Rows, Cols > > &m)
 
static constexpr T Determinant (const MatrixExpression< T, 3, 3, Matrix< T, Rows, Cols > > &m)
 
static constexpr T Determinant (const MatrixExpression< T, 4, 4, Matrix< T, Rows, Cols > > &m)
 
static std::enable_if_t<(Rows > 4 &&Cols > 4)||IsMatrixSizeDynamic< Rows, Cols >), U > Determinant (const MatrixExpression< T, Rows, Cols, Matrix< T, Rows, Cols > > &m)
 
static void Inverse (const MatrixExpression< T, 1, 1, Matrix< T, Rows, Cols > > &m, Matrix< T, Rows, Cols > &result)
 
static void Inverse (const MatrixExpression< T, 2, 2, Matrix< T, Rows, Cols > > &m, Matrix< T, Rows, Cols > &result)
 
static void Inverse (const MatrixExpression< T, 3, 3, Matrix< T, Rows, Cols > > &m, Matrix< T, Rows, Cols > &result)
 
static void Inverse (const MatrixExpression< T, 4, 4, Matrix< T, Rows, Cols > > &m, Matrix< T, Rows, Cols > &result)
 
static void Inverse (const MatrixExpression &m, std::enable_if_t<(Rows > 4 &&Cols > 4)||IsMatrixSizeDynamic< Rows, Cols >(), M > &result)
 

Member Typedef Documentation

◆ Base

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::Base = MatrixDenseBase<T, Rows, Cols, Matrix<T, Rows, Cols> >

◆ ConstIterator

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::ConstIterator = ConstPointer

◆ ConstPointer

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::ConstPointer = const T*

◆ ConstReference

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::ConstReference = const T&

◆ Iterator

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::Iterator = Pointer

◆ Pointer

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::Pointer = T*

◆ Reference

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::Reference = T&

◆ ValueType

template<typename T, size_t Rows, size_t Cols>
using CubbyFlow::Matrix< T, Rows, Cols >::ValueType = T

Constructor & Destructor Documentation

◆ Matrix() [1/8]

template<typename T, size_t Rows, size_t Cols>
constexpr CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( )
inline

◆ Matrix() [2/8]

template<typename T , size_t Rows, size_t Cols>
CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( ConstReference  value)

◆ Matrix() [3/8]

template<typename T, size_t Rows, size_t Cols>
template<typename... Args>
constexpr CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( ConstReference  first,
Args...  rest 
)
inline

◆ Matrix() [4/8]

template<typename T, size_t Rows, size_t Cols>
template<size_t R, size_t C, typename E >
CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( const MatrixExpression< T, R, C, E > &  expression)

◆ Matrix() [5/8]

template<typename T, size_t Rows, size_t Cols>
CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( const NestedInitializerListsT< T, 2 > &  lst)

◆ Matrix() [6/8]

template<typename T, size_t Rows, size_t Cols>
CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( ConstPointer  ptr)

◆ ~Matrix()

template<typename T, size_t Rows, size_t Cols>
CubbyFlow::Matrix< T, Rows, Cols >::~Matrix ( )
default

◆ Matrix() [7/8]

template<typename T, size_t Rows, size_t Cols>
constexpr CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( const Matrix< T, Rows, Cols > &  other)
inline

◆ Matrix() [8/8]

template<typename T, size_t Rows, size_t Cols>
constexpr CubbyFlow::Matrix< T, Rows, Cols >::Matrix ( Matrix< T, Rows, Cols > &&  other)
inlinenoexcept

Member Function Documentation

◆ begin() [1/2]

template<typename T , size_t Rows, size_t Cols>
Matrix< T, Rows, Cols >::Iterator CubbyFlow::Matrix< T, Rows, Cols >::begin ( )

◆ begin() [2/2]

template<typename T , size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols >::ConstIterator CubbyFlow::Matrix< T, Rows, Cols >::begin ( ) const

◆ data() [1/2]

template<typename T , size_t Rows, size_t Cols>
Matrix< T, Rows, Cols >::Pointer CubbyFlow::Matrix< T, Rows, Cols >::data ( )

◆ data() [2/2]

template<typename T , size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols >::ConstPointer CubbyFlow::Matrix< T, Rows, Cols >::data ( ) const

◆ end() [1/2]

template<typename T , size_t Rows, size_t Cols>
Matrix< T, Rows, Cols >::Iterator CubbyFlow::Matrix< T, Rows, Cols >::end ( )

◆ end() [2/2]

template<typename T , size_t Rows, size_t Cols>
constexpr Matrix< T, Rows, Cols >::ConstIterator CubbyFlow::Matrix< T, Rows, Cols >::end ( ) const

◆ Fill() [1/3]

template<typename T, size_t Rows, size_t Cols>
void CubbyFlow::Matrix< T, Rows, Cols >::Fill ( const T &  val)

◆ Fill() [2/3]

template<typename T, size_t Rows, size_t Cols>
void CubbyFlow::Matrix< T, Rows, Cols >::Fill ( const std::function< T(size_t i)> &  func)

◆ Fill() [3/3]

template<typename T, size_t Rows, size_t Cols>
void CubbyFlow::Matrix< T, Rows, Cols >::Fill ( const std::function< T(size_t i, size_t j)> &  func)

◆ GetCols()

template<typename T , size_t Rows, size_t Cols>
constexpr size_t CubbyFlow::Matrix< T, Rows, Cols >::GetCols ( ) const

◆ GetRows()

template<typename T , size_t Rows, size_t Cols>
constexpr size_t CubbyFlow::Matrix< T, Rows, Cols >::GetRows ( ) const

◆ operator=() [1/2]

template<typename T, size_t Rows, size_t Cols>
Matrix& CubbyFlow::Matrix< T, Rows, Cols >::operator= ( const Matrix< T, Rows, Cols > &  other)
inline

◆ operator=() [2/2]

template<typename T, size_t Rows, size_t Cols>
Matrix& CubbyFlow::Matrix< T, Rows, Cols >::operator= ( Matrix< T, Rows, Cols > &&  other)
inlinenoexcept

◆ operator[]() [1/2]

template<typename T , size_t Rows, size_t Cols>
Matrix< T, Rows, Cols >::Reference CubbyFlow::Matrix< T, Rows, Cols >::operator[] ( size_t  i)

◆ operator[]() [2/2]

template<typename T , size_t Rows, size_t Cols>
Matrix< T, Rows, Cols >::ConstReference CubbyFlow::Matrix< T, Rows, Cols >::operator[] ( size_t  i) const

◆ Swap()

template<typename T , size_t Rows, size_t Cols>
void CubbyFlow::Matrix< T, Rows, Cols >::Swap ( Matrix< T, Rows, Cols > &  other)

The documentation for this class was generated from the following files: