The spica renderer
matrix4x4.h
1 #ifdef _MSC_VER
2 #pragma once
3 #endif
4 
5 #ifndef _SPICA_MATRIX4X4_H_
6 #define _SPICA_MATRIX4X4_H_
7 
8 #include <iostream>
9 #include <string>
10 
11 #include "../core/common.h"
12 #include "../core/vector3d.h"
13 
14 namespace spica {
15 
20  class SPICA_EXPORTS Matrix4x4 {
21  private:
22  double m[4][4];
23 
24  public:
30  Matrix4x4();
31 
35  Matrix4x4(const Matrix4x4& mat);
36 
37  explicit Matrix4x4(double m[4][4]);
38  Matrix4x4(double t00, double t01, double t02, double t03,
39  double t10, double t11, double t12, double t13,
40  double t20, double t21, double t22, double t23,
41  double t30, double t31, double t32, double t33);
42 
46  Matrix4x4 transposed() const;
47 
53  Matrix4x4 inverted() const;
54 
55  Matrix4x4& operator=(const Matrix4x4& mat);
56 
57  bool operator==(const Matrix4x4& m2) const;
58  bool operator!=(const Matrix4x4& m2) const;
59 
60  double operator()(int i, int j) const;
61 
62  std::string toString() const;
63  };
64 
65 } // namespace spica
66 
67 SPICA_EXPORTS spica::Matrix4x4 operator*(const spica::Matrix4x4& m1,
68  const spica::Matrix4x4& m2);
69 
70 SPICA_EXPORTS std::ostream& operator<<(std::ostream& os,
71  const spica::Matrix4x4& mat);
72 
73 #endif // _SPICA_MATRIX4X4_H_
Matrix of 4 x 4 size.
Definition: matrix4x4.h:20