00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00023 #ifndef INCLUDE_3D_COORDONATE_H
00024 #define INCLUDE_3D_COORDONATE_H
00025 
00031 template <class T> class Coordonate
00032 {
00033 public: 
00034         union 
00035         {
00036                 T value[4];
00037                 struct 
00038                 {
00039                         T x;
00040                         T y;
00041                         T z;
00042                         T w;
00043                 };
00044         };
00045         BOOL isEnable;
00046 
00047 public:
00048         Coordonate()
00049         {
00050                 Zero();
00051         }
00052 
00053         void Zero()
00054         {
00055                 x=0;
00056                 y=0;
00057                 z=0;
00058                 isEnable = FALSE;
00059         }
00060 
00061         void operator=(Coordonate &src)
00062         {
00063                 isEnable = src.isEnable;
00064                 x = src.x;
00065                 y = src.y;
00066                 z = src.z;
00067                 w = src.w;
00068         }
00069 
00070         void Set(T _x,T _y,T _z=0,T _w=0)
00071         {
00072                 x = _x;
00073                 y = _y;
00074                 z = _z;
00075                 w = _w;
00076                 isEnable = TRUE;
00077         }
00078 
00079         BOOL operator!=(Coordonate &src)
00080         {
00081                 return !operator==(src);
00082         }
00083 
00084         BOOL operator==(Coordonate &src)
00085         {
00086                 return isEnable==src.isEnable&&x==src.x&&y==src.y&&z==src.z&&w==src.w;
00087         }
00088 
00089         operator T *() const 
00090         {
00091                 return (T *)&value;
00092         }
00093 
00094         void ToString (MyString &source)
00095         {
00096                 source<<"[enable,x,y,z,w]: "<<isEnable<<" , "<<x<<" , "<<y<<" , "<<z<<" , "<<w;
00097         }
00098 };
00099 
00100 #endif