PeriDyno 1.0.0
Loading...
Searching...
No Matches
Matrix2x2.h
Go to the documentation of this file.
1#pragma once
2#include <glm/mat2x2.hpp>
3#include "SquareMatrix.h"
4
5namespace dyno {
6
7 template <typename T, int Dim> class Vector;
8
9 template <typename T>
10 class SquareMatrix<T, 2>
11 {
12 public:
13 typedef T VarType;
14
15 DYN_FUNC SquareMatrix();
16 DYN_FUNC explicit SquareMatrix(T);
17 DYN_FUNC SquareMatrix(T x00, T x01, T x10, T x11);
18 DYN_FUNC SquareMatrix(const Vector<T, 2> &row1, const Vector<T, 2> &row2);
19
20 DYN_FUNC SquareMatrix(const SquareMatrix<T, 2> &);
21 DYN_FUNC ~SquareMatrix();
22
23 DYN_FUNC static unsigned int rows() { return 2; }
24 DYN_FUNC static unsigned int cols() { return 2; }
25
26 DYN_FUNC T& operator() (unsigned int i, unsigned int j);
27 DYN_FUNC const T& operator() (unsigned int i, unsigned int j) const;
28
29 DYN_FUNC const Vector<T, 2> row(unsigned int i) const;
30 DYN_FUNC const Vector<T, 2> col(unsigned int i) const;
31
32 DYN_FUNC void setRow(unsigned int i, const Vector<T, 2>& vec);
33 DYN_FUNC void setCol(unsigned int j, const Vector<T, 2>& vec);
34
35 DYN_FUNC const SquareMatrix<T, 2> operator+ (const SquareMatrix<T, 2> &) const;
36 DYN_FUNC SquareMatrix<T, 2>& operator+= (const SquareMatrix<T, 2> &);
37 DYN_FUNC const SquareMatrix<T, 2> operator- (const SquareMatrix<T, 2> &) const;
38 DYN_FUNC SquareMatrix<T, 2>& operator-= (const SquareMatrix<T, 2> &);
39 DYN_FUNC const SquareMatrix<T, 2> operator* (const SquareMatrix<T, 2> &) const;
40 DYN_FUNC SquareMatrix<T, 2>& operator*= (const SquareMatrix<T, 2> &);
41 DYN_FUNC const SquareMatrix<T, 2> operator/ (const SquareMatrix<T, 2> &) const;
42 DYN_FUNC SquareMatrix<T, 2>& operator/= (const SquareMatrix<T, 2> &);
43
44 DYN_FUNC SquareMatrix<T, 2>& operator= (const SquareMatrix<T, 2> &);
45
46 DYN_FUNC bool operator== (const SquareMatrix<T, 2> &) const;
47 DYN_FUNC bool operator!= (const SquareMatrix<T, 2> &) const;
48
49 DYN_FUNC const SquareMatrix<T, 2> operator* (const T&) const;
50 DYN_FUNC SquareMatrix<T, 2>& operator*= (const T&);
51 DYN_FUNC const SquareMatrix<T, 2> operator/ (const T&) const;
52 DYN_FUNC SquareMatrix<T, 2>& operator/= (const T&);
53
54 DYN_FUNC const Vector<T, 2> operator* (const Vector<T, 2> &) const;
55
56 DYN_FUNC const SquareMatrix<T, 2> operator- (void) const;
57
58 DYN_FUNC const SquareMatrix<T, 2> transpose() const;
59 DYN_FUNC const SquareMatrix<T, 2> inverse() const;
60
61 DYN_FUNC T determinant() const;
62 DYN_FUNC T trace() const;
63 DYN_FUNC T doubleContraction(const SquareMatrix<T, 2> &) const;//double contraction
64 DYN_FUNC T frobeniusNorm() const;
65 DYN_FUNC T oneNorm() const;
66 DYN_FUNC T infNorm() const;
67
68 DYN_FUNC static const SquareMatrix<T, 2> identityMatrix();
69
70 DYN_FUNC T* getDataPtr() { return &data_[0].x; }
71
72 protected:
73 glm::tmat2x2<T> data_; //default: zero matrix
74 };
75
76 //make * operator commutative
77 template <typename S, typename T>
78 DYN_FUNC const SquareMatrix<T, 2> operator* (S scale, const SquareMatrix<T, 2> &mat)
79 {
80 return mat * scale;
81 }
82
83 template class SquareMatrix<float, 2>;
84 template class SquareMatrix<double, 2>;
85 //convenient typedefs
88
89} //end of namespace dyno
90
91#include "Matrix2x2.inl"
static DYN_FUNC unsigned int cols()
Definition Matrix2x2.h:24
static DYN_FUNC unsigned int rows()
Definition Matrix2x2.h:23
DYN_FUNC T * getDataPtr()
Definition Matrix2x2.h:70
glm::tmat2x2< T > data_
Definition Matrix2x2.h:73
#define T(t)
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
SquareMatrix< float, 2 > Mat2f
Definition Matrix2x2.h:86
SquareMatrix< double, 2 > Mat2d
Definition Matrix2x2.h:87
DYN_FUNC const Complex< T > operator/(S scale, const Complex< T > &complex)
Definition Complex.inl:253
DYN_FUNC const Complex< T > operator*(S scale, const Complex< T > &complex)
Definition Complex.inl:247
DYN_FUNC bool operator==(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC bool operator!=(const priority_queue< T, Container, Compare > &a, const priority_queue< T, Container, Compare > &b)
DYN_FUNC const Complex< T > operator-(S scale, const Complex< T > &complex)
Definition Complex.inl:241
DYN_FUNC const Complex< T > operator+(S scale, const Complex< T > &complex)
Definition Complex.inl:235