SPH
Public Member Functions | Static Public Member Functions | Friends | List of all members
AffineMatrix Class Reference

#include <AffineMatrix.h>

Public Member Functions

 AffineMatrix ()=default
 
 AffineMatrix (const Vector &v1, const Vector &v2, const Vector &v3)
 Construct the matrix from vectors as rows. More...
 
INLINE Floatoperator() (const Size i, const Size j)
 
INLINE Float operator() (const Size i, const Size j) const
 
INLINE Vector column (const Size idx) const
 
INLINE Vector row (const Size idx) const
 
INLINE Vector translation () const
 
INLINE AffineMatrixremoveTranslation ()
 
INLINE AffineMatrixtranslate (const Vector &t)
 
INLINE AffineMatrix transpose () const
 Returns the transposed matrix. More...
 
INLINE Float determinant () const
 Computes determinant of the matrix. More...
 
AffineMatrix inverse () const
 
bool isOrthogonal () const
 
bool isIsotropic () const
 
INLINE AffineMatrix operator+ (const AffineMatrix &other) const
 
INLINE AffineMatrix operator- (const AffineMatrix &other) const
 
INLINE AffineMatrix operator* (const AffineMatrix &other) const
 Matrix multiplication. More...
 
INLINE Vector operator* (const Vector &u) const
 
INLINE AffineMatrixoperator+= (const AffineMatrix &other)
 
INLINE AffineMatrixoperator-= (const AffineMatrix &other)
 
INLINE AffineMatrixoperator*= (const Float value)
 
INLINE AffineMatrixoperator/= (const Float value)
 
INLINE bool operator== (const AffineMatrix &other) const
 
INLINE bool operator!= (const AffineMatrix &other) const
 

Static Public Member Functions

static AffineMatrix null ()
 
static AffineMatrix identity ()
 
static AffineMatrix scale (const Vector &scaling)
 
static AffineMatrix rotateX (const Float angle)
 
static AffineMatrix rotateY (const Float angle)
 
static AffineMatrix rotateZ (const Float angle)
 
static AffineMatrix rotateAxis (const Vector &axis, const Float angle)
 
static AffineMatrix crossProductOperator (const Vector &a)
 

Friends

INLINE friend AffineMatrix operator* (const AffineMatrix &t, const Float v)
 
INLINE friend AffineMatrix operator* (const Float v, const AffineMatrix &t)
 
INLINE friend AffineMatrix operator/ (const AffineMatrix &t, const Float v)
 
std::ostream & operator<< (std::ostream &stream, const AffineMatrix &t)
 

Detailed Description

Todo:
somewhat duplicate of Tensor, but many function differ slightly due to translation, different asserts, etc. Probably not worth having common parent.

Definition at line 14 of file AffineMatrix.h.

Constructor & Destructor Documentation

◆ AffineMatrix() [1/2]

AffineMatrix::AffineMatrix ( )
default

◆ AffineMatrix() [2/2]

AffineMatrix::AffineMatrix ( const Vector v1,
const Vector v2,
const Vector v3 
)
inline

Construct the matrix from vectors as rows.

Translation is stored as 4th components of vectors

Definition at line 24 of file AffineMatrix.h.

Member Function Documentation

◆ column()

INLINE Vector AffineMatrix::column ( const Size  idx) const
inline

Definition at line 39 of file AffineMatrix.h.

◆ crossProductOperator()

static AffineMatrix AffineMatrix::crossProductOperator ( const Vector a)
inlinestatic

Definition at line 173 of file AffineMatrix.h.

◆ determinant()

INLINE Float AffineMatrix::determinant ( ) const
inline

Computes determinant of the matrix.

The translation is ignored, as determinant is defined for square matrices

Definition at line 80 of file AffineMatrix.h.

◆ identity()

static AffineMatrix AffineMatrix::identity ( )
inlinestatic

Definition at line 132 of file AffineMatrix.h.

◆ inverse()

AffineMatrix AffineMatrix::inverse ( ) const
inline

Definition at line 86 of file AffineMatrix.h.

◆ isIsotropic()

bool AffineMatrix::isIsotropic ( ) const
inline

Definition at line 123 of file AffineMatrix.h.

◆ isOrthogonal()

bool AffineMatrix::isOrthogonal ( ) const
inline

Definition at line 111 of file AffineMatrix.h.

◆ null()

static AffineMatrix AffineMatrix::null ( )
inlinestatic

Definition at line 128 of file AffineMatrix.h.

◆ operator!=()

INLINE bool AffineMatrix::operator!= ( const AffineMatrix other) const
inline

Definition at line 262 of file AffineMatrix.h.

◆ operator()() [1/2]

INLINE Float& AffineMatrix::operator() ( const Size  i,
const Size  j 
)
inline
Parameters
iRow index
jColumn index

Definition at line 29 of file AffineMatrix.h.

◆ operator()() [2/2]

INLINE Float AffineMatrix::operator() ( const Size  i,
const Size  j 
) const
inline

Definition at line 34 of file AffineMatrix.h.

◆ operator*() [1/2]

INLINE AffineMatrix AffineMatrix::operator* ( const AffineMatrix other) const
inline

Matrix multiplication.

Definition at line 190 of file AffineMatrix.h.

◆ operator*() [2/2]

INLINE Vector AffineMatrix::operator* ( const Vector u) const
inline

Definition at line 208 of file AffineMatrix.h.

◆ operator*=()

INLINE AffineMatrix& AffineMatrix::operator*= ( const Float  value)
inline
Todo:
test

Definition at line 240 of file AffineMatrix.h.

◆ operator+()

INLINE AffineMatrix AffineMatrix::operator+ ( const AffineMatrix other) const
inline

Definition at line 181 of file AffineMatrix.h.

◆ operator+=()

INLINE AffineMatrix& AffineMatrix::operator+= ( const AffineMatrix other)
inline

Definition at line 225 of file AffineMatrix.h.

◆ operator-()

INLINE AffineMatrix AffineMatrix::operator- ( const AffineMatrix other) const
inline

Definition at line 185 of file AffineMatrix.h.

◆ operator-=()

INLINE AffineMatrix& AffineMatrix::operator-= ( const AffineMatrix other)
inline

Definition at line 232 of file AffineMatrix.h.

◆ operator/=()

INLINE AffineMatrix& AffineMatrix::operator/= ( const Float  value)
inline

Definition at line 247 of file AffineMatrix.h.

◆ operator==()

INLINE bool AffineMatrix::operator== ( const AffineMatrix other) const
inline

Definition at line 255 of file AffineMatrix.h.

◆ removeTranslation()

INLINE AffineMatrix& AffineMatrix::removeTranslation ( )
inline

Definition at line 53 of file AffineMatrix.h.

◆ rotateAxis()

static AffineMatrix AffineMatrix::rotateAxis ( const Vector axis,
const Float  angle 
)
inlinestatic

Definition at line 159 of file AffineMatrix.h.

◆ rotateX()

static AffineMatrix AffineMatrix::rotateX ( const Float  angle)
inlinestatic

Definition at line 141 of file AffineMatrix.h.

◆ rotateY()

static AffineMatrix AffineMatrix::rotateY ( const Float  angle)
inlinestatic

Definition at line 147 of file AffineMatrix.h.

◆ rotateZ()

static AffineMatrix AffineMatrix::rotateZ ( const Float  angle)
inlinestatic

Definition at line 153 of file AffineMatrix.h.

◆ row()

INLINE Vector AffineMatrix::row ( const Size  idx) const
inline

Definition at line 44 of file AffineMatrix.h.

◆ scale()

static AffineMatrix AffineMatrix::scale ( const Vector scaling)
inlinestatic

Definition at line 136 of file AffineMatrix.h.

◆ translate()

INLINE AffineMatrix& AffineMatrix::translate ( const Vector t)
inline

Definition at line 58 of file AffineMatrix.h.

◆ translation()

INLINE Vector AffineMatrix::translation ( ) const
inline

Definition at line 49 of file AffineMatrix.h.

◆ transpose()

INLINE AffineMatrix AffineMatrix::transpose ( ) const
inline

Returns the transposed matrix.

Translation vector is copied into the transposed matrix, so that double-transposed matrix is equal to the original matrix.

Definition at line 69 of file AffineMatrix.h.

Friends And Related Function Documentation

◆ operator* [1/2]

INLINE friend AffineMatrix operator* ( const AffineMatrix t,
const Float  v 
)
friend

Definition at line 212 of file AffineMatrix.h.

◆ operator* [2/2]

INLINE friend AffineMatrix operator* ( const Float  v,
const AffineMatrix t 
)
friend

Definition at line 216 of file AffineMatrix.h.

◆ operator/

INLINE friend AffineMatrix operator/ ( const AffineMatrix t,
const Float  v 
)
friend

Definition at line 220 of file AffineMatrix.h.

◆ operator<<

std::ostream& operator<< ( std::ostream &  stream,
const AffineMatrix t 
)
friend

Definition at line 266 of file AffineMatrix.h.


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