Jet  v1.3.3
Public Member Functions | Static Public Member Functions | List of all members
jet::Matrix< T, 2, 2 > Class Template Reference

2-D matrix class. More...

#include <jet/matrix2x2.h>

Public Member Functions

 Matrix ()
 Constructs identity matrix. More...
 
 Matrix (T s)
 Constructs constant value matrix. More...
 
 Matrix (T m00, T m01, T m10, T m11)
 
template<typename U >
 Matrix (const std::initializer_list< std::initializer_list< U >> &lst)
 Constructs a matrix with given initializer list lst. More...
 
 Matrix (const Matrix &m)
 Constructs a matrix with input matrix. More...
 
 Matrix (const T *arr)
 
void set (T s)
 Sets whole matrix with input scalar. More...
 
void set (T m00, T m01, T m10, T m11)
 
template<typename U >
void set (const std::initializer_list< std::initializer_list< U >> &lst)
 Sets this matrix with given initializer list lst. More...
 
void set (const Matrix &m)
 Copies from input matrix. More...
 
void set (const T *arr)
 
void setDiagonal (T s)
 Sets diagonal elements with input scalar. More...
 
void setOffDiagonal (T s)
 Sets off-diagonal elements with input scalar. More...
 
void setRow (size_t i, const Vector2< T > &row)
 Sets i-th row with input vector. More...
 
void setColumn (size_t i, const Vector2< T > &col)
 Sets i-th column with input vector. More...
 
bool isSimilar (const Matrix &m, double tol=std::numeric_limits< double >::epsilon()) const
 
bool isSquare () const
 Returns true if this matrix is a square matrix. More...
 
size_t rows () const
 Returns number of rows of this matrix. More...
 
size_t cols () const
 Returns number of columns of this matrix. More...
 
T * data ()
 Returns data pointer of this matrix. More...
 
const T * data () const
 Returns constant pointer of this matrix. More...
 
Matrix add (T s) const
 Returns this matrix + input scalar. More...
 
Matrix add (const Matrix &m) const
 Returns this matrix + input matrix (element-wise). More...
 
Matrix sub (T s) const
 Returns this matrix - input scalar. More...
 
Matrix sub (const Matrix &m) const
 Returns this matrix - input matrix (element-wise). More...
 
Matrix mul (T s) const
 Returns this matrix * input scalar. More...
 
Vector2< T > mul (const Vector2< T > &v) const
 Returns this matrix * input vector. More...
 
Matrix mul (const Matrix &m) const
 Returns this matrix * input matrix. More...
 
Matrix div (T s) const
 Returns this matrix / input scalar. More...
 
Matrix radd (T s) const
 Returns input scalar + this matrix. More...
 
Matrix radd (const Matrix &m) const
 Returns input matrix + this matrix (element-wise). More...
 
Matrix rsub (T s) const
 Returns input scalar - this matrix. More...
 
Matrix rsub (const Matrix &m) const
 Returns input matrix - this matrix (element-wise). More...
 
Matrix rmul (T s) const
 Returns input scalar * this matrix. More...
 
Matrix rmul (const Matrix &m) const
 Returns input matrix * this matrix. More...
 
Matrix rdiv (T s) const
 Returns input scalar / this matrix. More...
 
void iadd (T s)
 Adds input scalar to this matrix. More...
 
void iadd (const Matrix &m)
 Adds input matrix to this matrix (element-wise). More...
 
void isub (T s)
 Subtracts input scalar from this matrix. More...
 
void isub (const Matrix &m)
 Subtracts input matrix from this matrix (element-wise). More...
 
void imul (T s)
 Multiplies input scalar to this matrix. More...
 
void imul (const Matrix &m)
 Multiplies input matrix to this matrix. More...
 
void idiv (T s)
 Divides this matrix with input scalar. More...
 
void transpose ()
 Transposes this matrix. More...
 
void invert ()
 Inverts this matrix. More...
 
sum () const
 Returns sum of all elements. More...
 
avg () const
 Returns average of all elements. More...
 
min () const
 Returns minimum among all elements. More...
 
max () const
 Returns maximum among all elements. More...
 
absmin () const
 Returns absolute minimum among all elements. More...
 
absmax () const
 Returns absolute maximum among all elements. More...
 
trace () const
 Returns sum of all diagonal elements. More...
 
determinant () const
 Returns determinant of this matrix. More...
 
Matrix diagonal () const
 Returns diagonal part of this matrix. More...
 
Matrix offDiagonal () const
 Returns off-diagonal part of this matrix. More...
 
Matrix strictLowerTri () const
 Returns strictly lower triangle part of this matrix. More...
 
Matrix strictUpperTri () const
 Returns strictly upper triangle part of this matrix. More...
 
Matrix lowerTri () const
 Returns lower triangle part of this matrix (including the diagonal). More...
 
Matrix upperTri () const
 Returns upper triangle part of this matrix (including the diagonal). More...
 
Matrix transposed () const
 Returns transposed matrix. More...
 
Matrix inverse () const
 Returns inverse matrix. More...
 
frobeniusNorm () const
 Returns Frobenius norm. More...
 
template<typename U >
Matrix< U, 2, 2 > castTo () const
 
Matrixoperator= (const Matrix &m)
 Assigns input matrix. More...
 
Matrixoperator+= (T s)
 Addition assignment with input scalar. More...
 
Matrixoperator+= (const Matrix &m)
 Addition assignment with input matrix (element-wise). More...
 
Matrixoperator-= (T s)
 Subtraction assignment with input scalar. More...
 
Matrixoperator-= (const Matrix &m)
 Subtraction assignment with input matrix (element-wise). More...
 
Matrixoperator*= (T s)
 Multiplication assignment with input scalar. More...
 
Matrixoperator*= (const Matrix &m)
 Multiplication assignment with input matrix. More...
 
Matrixoperator/= (T s)
 Division assignment with input scalar. More...
 
T & operator[] (size_t i)
 Returns reference of i-th element. More...
 
const T & operator[] (size_t i) const
 Returns constant reference of i-th element. More...
 
T & operator() (size_t i, size_t j)
 Returns reference of (i,j) element. More...
 
const T & operator() (size_t i, size_t j) const
 Returns constant reference of (i,j) element. More...
 
bool operator== (const Matrix &m) const
 Returns true if is equal to m. More...
 
bool operator!= (const Matrix &m) const
 Returns true if is not equal to m. More...
 

Static Public Member Functions

static Matrix makeZero ()
 Sets all matrix entries to zero. More...
 
static Matrix makeIdentity ()
 Makes all diagonal elements to 1, and other elements to 0. More...
 
static Matrix makeScaleMatrix (T sx, T sy)
 Makes scale matrix. More...
 
static Matrix makeScaleMatrix (const Vector2< T > &s)
 Makes scale matrix. More...
 
static Matrix makeRotationMatrix (const T &rad)
 

Detailed Description

template<typename T>
class jet::Matrix< T, 2, 2 >

2-D matrix class.

This class is a row-major 2-D matrix class, which means each element of the matrix is stored in order of (0, 0), (0, 1), (1, 0) and (1, 1).

Template Parameters
T- Type of the element.

Constructor & Destructor Documentation

◆ Matrix() [1/6]

template<typename T >
jet::Matrix< T, 2, 2 >::Matrix ( )

Constructs identity matrix.

◆ Matrix() [2/6]

template<typename T >
jet::Matrix< T, 2, 2 >::Matrix ( s)
explicit

Constructs constant value matrix.

◆ Matrix() [3/6]

template<typename T >
jet::Matrix< T, 2, 2 >::Matrix ( m00,
m01,
m10,
m11 
)

Constructs a matrix with input elements.

Warning
Ordering of the input elements is row-major.

◆ Matrix() [4/6]

template<typename T >
template<typename U >
jet::Matrix< T, 2, 2 >::Matrix ( const std::initializer_list< std::initializer_list< U >> &  lst)

Constructs a matrix with given initializer list lst.

This constructor will build a matrix with given initializer list lst such as

Matrix<float, 2, 2> arr = {
{1.f, 2.f},
{9.f, 3.f}
};

Note the initializer also has 2x2 structure.

Parameters
lstInitializer list that should be copy to the new matrix.

◆ Matrix() [5/6]

template<typename T >
jet::Matrix< T, 2, 2 >::Matrix ( const Matrix< T, 2, 2 > &  m)

Constructs a matrix with input matrix.

◆ Matrix() [6/6]

template<typename T >
jet::Matrix< T, 2, 2 >::Matrix ( const T *  arr)
explicit

Constructs a matrix with input array.

Warning
Ordering of the input elements is row-major.

Member Function Documentation

◆ absmax()

template<typename T >
T jet::Matrix< T, 2, 2 >::absmax ( ) const

Returns absolute maximum among all elements.

◆ absmin()

template<typename T >
T jet::Matrix< T, 2, 2 >::absmin ( ) const

Returns absolute minimum among all elements.

◆ add() [1/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::add ( const Matrix< T, 2, 2 > &  m) const

Returns this matrix + input matrix (element-wise).

◆ add() [2/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::add ( s) const

Returns this matrix + input scalar.

◆ avg()

template<typename T >
T jet::Matrix< T, 2, 2 >::avg ( ) const

Returns average of all elements.

◆ castTo()

template<typename T >
template<typename U >
Matrix<U, 2, 2> jet::Matrix< T, 2, 2 >::castTo ( ) const

◆ cols()

template<typename T >
size_t jet::Matrix< T, 2, 2 >::cols ( ) const

Returns number of columns of this matrix.

◆ data() [1/2]

template<typename T >
T* jet::Matrix< T, 2, 2 >::data ( )

Returns data pointer of this matrix.

◆ data() [2/2]

template<typename T >
const T* jet::Matrix< T, 2, 2 >::data ( ) const

Returns constant pointer of this matrix.

◆ determinant()

template<typename T >
T jet::Matrix< T, 2, 2 >::determinant ( ) const

Returns determinant of this matrix.

◆ diagonal()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::diagonal ( ) const

Returns diagonal part of this matrix.

◆ div()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::div ( s) const

Returns this matrix / input scalar.

◆ frobeniusNorm()

template<typename T >
T jet::Matrix< T, 2, 2 >::frobeniusNorm ( ) const

Returns Frobenius norm.

◆ iadd() [1/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::iadd ( const Matrix< T, 2, 2 > &  m)

Adds input matrix to this matrix (element-wise).

◆ iadd() [2/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::iadd ( s)

Adds input scalar to this matrix.

◆ idiv()

template<typename T >
void jet::Matrix< T, 2, 2 >::idiv ( s)

Divides this matrix with input scalar.

◆ imul() [1/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::imul ( const Matrix< T, 2, 2 > &  m)

Multiplies input matrix to this matrix.

◆ imul() [2/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::imul ( s)

Multiplies input scalar to this matrix.

◆ inverse()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::inverse ( ) const

Returns inverse matrix.

◆ invert()

template<typename T >
void jet::Matrix< T, 2, 2 >::invert ( )

Inverts this matrix.

◆ isSimilar()

template<typename T >
bool jet::Matrix< T, 2, 2 >::isSimilar ( const Matrix< T, 2, 2 > &  m,
double  tol = std::numeric_limits< double >::epsilon() 
) const

Returns true if this matrix is similar to the input matrix within the given tolerance.

◆ isSquare()

template<typename T >
bool jet::Matrix< T, 2, 2 >::isSquare ( ) const

Returns true if this matrix is a square matrix.

◆ isub() [1/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::isub ( const Matrix< T, 2, 2 > &  m)

Subtracts input matrix from this matrix (element-wise).

◆ isub() [2/2]

template<typename T >
void jet::Matrix< T, 2, 2 >::isub ( s)

Subtracts input scalar from this matrix.

◆ lowerTri()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::lowerTri ( ) const

Returns lower triangle part of this matrix (including the diagonal).

◆ makeIdentity()

template<typename T >
static Matrix jet::Matrix< T, 2, 2 >::makeIdentity ( )
static

Makes all diagonal elements to 1, and other elements to 0.

◆ makeRotationMatrix()

template<typename T >
static Matrix jet::Matrix< T, 2, 2 >::makeRotationMatrix ( const T &  rad)
static

Makes rotation matrix.

Warning
Input angle should be radian.

◆ makeScaleMatrix() [1/2]

template<typename T >
static Matrix jet::Matrix< T, 2, 2 >::makeScaleMatrix ( const Vector2< T > &  s)
static

Makes scale matrix.

◆ makeScaleMatrix() [2/2]

template<typename T >
static Matrix jet::Matrix< T, 2, 2 >::makeScaleMatrix ( sx,
sy 
)
static

Makes scale matrix.

◆ makeZero()

template<typename T >
static Matrix jet::Matrix< T, 2, 2 >::makeZero ( )
static

Sets all matrix entries to zero.

◆ max()

template<typename T >
T jet::Matrix< T, 2, 2 >::max ( ) const

Returns maximum among all elements.

◆ min()

template<typename T >
T jet::Matrix< T, 2, 2 >::min ( ) const

Returns minimum among all elements.

◆ mul() [1/3]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::mul ( const Matrix< T, 2, 2 > &  m) const

Returns this matrix * input matrix.

◆ mul() [2/3]

template<typename T >
Vector2<T> jet::Matrix< T, 2, 2 >::mul ( const Vector2< T > &  v) const

Returns this matrix * input vector.

◆ mul() [3/3]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::mul ( s) const

Returns this matrix * input scalar.

◆ offDiagonal()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::offDiagonal ( ) const

Returns off-diagonal part of this matrix.

◆ operator!=()

template<typename T >
bool jet::Matrix< T, 2, 2 >::operator!= ( const Matrix< T, 2, 2 > &  m) const

Returns true if is not equal to m.

◆ operator()() [1/2]

template<typename T >
T& jet::Matrix< T, 2, 2 >::operator() ( size_t  i,
size_t  j 
)

Returns reference of (i,j) element.

◆ operator()() [2/2]

template<typename T >
const T& jet::Matrix< T, 2, 2 >::operator() ( size_t  i,
size_t  j 
) const

Returns constant reference of (i,j) element.

◆ operator*=() [1/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator*= ( const Matrix< T, 2, 2 > &  m)

Multiplication assignment with input matrix.

◆ operator*=() [2/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator*= ( s)

Multiplication assignment with input scalar.

◆ operator+=() [1/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator+= ( const Matrix< T, 2, 2 > &  m)

Addition assignment with input matrix (element-wise).

◆ operator+=() [2/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator+= ( s)

Addition assignment with input scalar.

◆ operator-=() [1/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator-= ( const Matrix< T, 2, 2 > &  m)

Subtraction assignment with input matrix (element-wise).

◆ operator-=() [2/2]

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator-= ( s)

Subtraction assignment with input scalar.

◆ operator/=()

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator/= ( s)

Division assignment with input scalar.

◆ operator=()

template<typename T >
Matrix& jet::Matrix< T, 2, 2 >::operator= ( const Matrix< T, 2, 2 > &  m)

Assigns input matrix.

◆ operator==()

template<typename T >
bool jet::Matrix< T, 2, 2 >::operator== ( const Matrix< T, 2, 2 > &  m) const

Returns true if is equal to m.

◆ operator[]() [1/2]

template<typename T >
T& jet::Matrix< T, 2, 2 >::operator[] ( size_t  i)

Returns reference of i-th element.

◆ operator[]() [2/2]

template<typename T >
const T& jet::Matrix< T, 2, 2 >::operator[] ( size_t  i) const

Returns constant reference of i-th element.

◆ radd() [1/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::radd ( const Matrix< T, 2, 2 > &  m) const

Returns input matrix + this matrix (element-wise).

◆ radd() [2/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::radd ( s) const

Returns input scalar + this matrix.

◆ rdiv()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::rdiv ( s) const

Returns input scalar / this matrix.

◆ rmul() [1/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::rmul ( const Matrix< T, 2, 2 > &  m) const

Returns input matrix * this matrix.

◆ rmul() [2/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::rmul ( s) const

Returns input scalar * this matrix.

◆ rows()

template<typename T >
size_t jet::Matrix< T, 2, 2 >::rows ( ) const

Returns number of rows of this matrix.

◆ rsub() [1/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::rsub ( const Matrix< T, 2, 2 > &  m) const

Returns input matrix - this matrix (element-wise).

◆ rsub() [2/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::rsub ( s) const

Returns input scalar - this matrix.

◆ set() [1/5]

template<typename T >
void jet::Matrix< T, 2, 2 >::set ( const Matrix< T, 2, 2 > &  m)

Copies from input matrix.

◆ set() [2/5]

template<typename T >
template<typename U >
void jet::Matrix< T, 2, 2 >::set ( const std::initializer_list< std::initializer_list< U >> &  lst)

Sets this matrix with given initializer list lst.

This function will fill the matrix with given initializer list lst such as

Matrix<float, 2, 2> arr;
arr.set({
{1, 2},
{9, 3}
});

Note the initializer also has 2x2 structure.

Parameters
lstInitializer list that should be copy to the matrix.

◆ set() [3/5]

template<typename T >
void jet::Matrix< T, 2, 2 >::set ( const T *  arr)

Copies from input array.

Warning
Ordering of the input elements is row-major.

◆ set() [4/5]

template<typename T >
void jet::Matrix< T, 2, 2 >::set ( m00,
m01,
m10,
m11 
)

Sets this matrix with input elements.

Warning
Ordering of the input elements is row-major.

◆ set() [5/5]

template<typename T >
void jet::Matrix< T, 2, 2 >::set ( s)

Sets whole matrix with input scalar.

◆ setColumn()

template<typename T >
void jet::Matrix< T, 2, 2 >::setColumn ( size_t  i,
const Vector2< T > &  col 
)

Sets i-th column with input vector.

◆ setDiagonal()

template<typename T >
void jet::Matrix< T, 2, 2 >::setDiagonal ( s)

Sets diagonal elements with input scalar.

◆ setOffDiagonal()

template<typename T >
void jet::Matrix< T, 2, 2 >::setOffDiagonal ( s)

Sets off-diagonal elements with input scalar.

◆ setRow()

template<typename T >
void jet::Matrix< T, 2, 2 >::setRow ( size_t  i,
const Vector2< T > &  row 
)

Sets i-th row with input vector.

◆ strictLowerTri()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::strictLowerTri ( ) const

Returns strictly lower triangle part of this matrix.

◆ strictUpperTri()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::strictUpperTri ( ) const

Returns strictly upper triangle part of this matrix.

◆ sub() [1/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::sub ( const Matrix< T, 2, 2 > &  m) const

Returns this matrix - input matrix (element-wise).

◆ sub() [2/2]

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::sub ( s) const

Returns this matrix - input scalar.

◆ sum()

template<typename T >
T jet::Matrix< T, 2, 2 >::sum ( ) const

Returns sum of all elements.

◆ trace()

template<typename T >
T jet::Matrix< T, 2, 2 >::trace ( ) const

Returns sum of all diagonal elements.

◆ transpose()

template<typename T >
void jet::Matrix< T, 2, 2 >::transpose ( )

Transposes this matrix.

◆ transposed()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::transposed ( ) const

Returns transposed matrix.

◆ upperTri()

template<typename T >
Matrix jet::Matrix< T, 2, 2 >::upperTri ( ) const

Returns upper triangle part of this matrix (including the diagonal).


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