00001 #ifndef Pv_Matrix_Included
00002 #define Pv_Matrix_Included
00003
00004 #include <iostream>
00005
00006 #include "pv_point.h"
00007
00008 class Pv_Matrix{
00009 double m[4][4];
00010 public:
00011
00012 Pv_Matrix();
00013 Pv_Matrix(double value);
00014 Pv_Matrix(double i1,double i2,double i3,
00015 double j1,double j2,double j3,
00016 double k1,double k2,double k3);
00017 Pv_Matrix(Pv_Point position,Pv_Point direction);
00018
00019
00020 Pv_Matrix(Pv_Point p1,Pv_Point p2,Pv_Point p3);
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035 Pv_Point get_eye();
00036 Pv_Point get_center();
00037 Pv_Point get_up();
00038
00039
00040 void draw();
00041
00042
00043 Pv_Matrix operator* (Pv_Matrix m);
00044 Pv_Point operator* (Pv_Point p);
00045
00046
00047 friend std::ostream& operator<< (std::ostream& s,const Pv_Matrix& z);
00048 friend class Pv_Matrix_Id;
00049 friend class Pv_Matrix_Tr;
00050 friend class Pv_Matrix_Ro;
00051 friend class Pv_Matrix_Sc;
00052
00053
00054
00055 };
00056
00057 std::ostream& operator<< (std::ostream& s,const Pv_Matrix& z);
00058
00059 #endif