Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#ifndef FR_MATRIX_H
#define FR_MATRIX_H
#include "FRVector3.h"
/********************************************************************
* FRMatrix
* comment : FRGLMatrix float --> double
********************************************************************/
class FRMatrix {
public:
/* Default construction is ZERO matrix.
*
*/
FRMatrix();
double operator () (int i, int j) const;
double& operator () (int i, int j);
void invert() { }
void setTranslate(const FRVector3 &t);
void getTranslate(FRVector3 &t) const;
void setUnitVectors(
const FRVector3 &e1,
const FRVector3 &e2,
const FRVector3 &e3);
void getUnitVectors(
FRVector3 &e1,
FRVector3 &e2,
FRVector3 &e3) const;
void inverse(const FRVector3 &in, FRVector3 &out) const;
void transform(const FRVector3 &in, FRVector3 &out) const;
// void multiply(const FRMatrix &);
/* These operators are useful to give 'm' to
* glLoadMatrix(), glMultMatrix().
*/
operator const double * () const;
operator double * ();
friend FRMatrix zeroMatrix();
friend FRMatrix identityMatrix();
/*
friend FRMatrix translateMatrix(const FRVector3 &);
friend FRMatrix rotationXMatrix(double);
friend FRMatrix rotationYMatrix(double);
friend FRMatrix rotationZMatrix(double);
*/
protected:
double m[16];
};
/********************************************************************
inline function for FRMatrix
********************************************************************/
inline double FRMatrix::operator () (int i, int j) const
{ return m[i + (j * 4)];
}
inline double& FRMatrix::operator () (int i, int j)
{ return m[i + (j * 4)];
}
inline FRMatrix::operator const double * () const
{ return m;
}
inline FRMatrix::operator double * ()
{ return m;
}
#endif //FR_MATRIX_H