00001
00002
00003 class mat
00004 {
00005 public:
00006
00007 double xx;
00008 double xy;
00009 double xz;
00010 double yx;
00011 double yy;
00012 double yz;
00013 double zx;
00014 double zy;
00015 double zz;
00016
00017
00018 inline mat();
00019 inline mat(const mat&);
00020 inline mat(const double&, const double&, const double&,
00021 const double&, const double&, const double&,
00022 const double&, const double&, const double&);
00023
00024
00025 inline ~mat();
00026
00027
00028 inline double& operator()(const int&, const int&);
00029 inline double operator()(const int&, const int&) const;
00030 inline friend std::ostream& operator<<(std::ostream&, const mat&);
00031
00032
00033 inline friend double det(const mat&);
00034 inline friend mat inv(const mat&);
00035
00036
00037 inline friend mat trans(const mat&);
00038 inline friend void swap(mat&, mat&);
00039
00040
00041 inline mat operator+(void);
00042 inline mat operator-(void);
00043
00044
00045 inline mat& operator=(const mat&);
00046 inline mat& operator+=(const mat&);
00047 inline mat& operator-=(const mat&);
00048 inline mat& operator*=(const mat&);
00049 inline friend mat operator+(const mat&, const mat&);
00050 inline friend mat operator-(const mat&, const mat&);
00051 inline friend mat operator*(const mat&, const mat&);
00052
00053
00054 inline friend vec operator*(const mat&, const vec&);
00055
00056
00057 inline mat& operator*=(const double&);
00058 inline mat& operator/=(const double&);
00059 inline friend mat operator*(const mat&, const double&);
00060 inline friend mat operator/(const mat&, const double&);
00061
00062
00063 inline friend mat operator*(const double&, const mat&);
00064 };