00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef __GZ_XYZ_H__
00023 #define __GZ_XYZ_H__
00024
00030 #include "gzBasicTypes.h"
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046 template <class T> class gzXY
00047 {
00048 public:
00049
00050 gzXY(T _x=0,T _y=0):x(_x),y(_y) {};
00051
00052 gzXY <T> operator *(const T &right) { return gzXY<T>(x*right,y*right); }
00053
00054 gzXY <T> operator /(const T &right) { return gzXY<T>(x/right,y/right); }
00055
00056 gzXY <T> operator +(const gzXY<T> &right) { return gzXY<T>(x+right.x,y+right.y); }
00057
00058 gzXY <T> operator -(const gzXY<T> &right) { return gzXY<T>(x-right.x,y-right.y); }
00059
00060 gzBool operator==(const gzXY<T> &right) { return (x==right.x)&&(y==right.y); }
00061
00062 gzBool operator!=(const gzXY<T> &right) { return (x!=right.x)||(y!=right.y); }
00063
00064
00065
00066 T x,y;
00067 };
00068
00069
00070
00071 typedef gzXY<gzULong> gzULongXY;
00072 typedef gzXY<gzLong> gzLongXY;
00073 typedef gzXY<gzFloat> gzFloatXY;
00074 typedef gzXY<gzDouble> gzDoubleXY;
00075 typedef gzXY<gzReal> gzRealXY;
00076 typedef gzXY<gzShort> gzShortXY;
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092 template <class T> class gzXYZ
00093 {
00094 public:
00095
00096 gzXYZ(T _x=0,T _y=0,T _z=0):x(_x),y(_y),z(_z) {};
00097
00098 gzXYZ <T> operator *(const T &right) { return gzXYZ<T>(x*right,y*right,z*right); }
00099
00100 gzXYZ <T> operator /(const T &right) { return gzXYZ<T>(x/right,y/right,z/right); }
00101
00102 gzXYZ <T> operator +(const gzXYZ<T> &right) { return gzXYZ<T>(x+right.x,y+right.y,z+right.z); }
00103
00104 gzXYZ <T> operator -(const gzXYZ<T> &right) { return gzXYZ<T>(x-right.x,y-right.y,z-right.z); }
00105
00106 gzBool operator==(const gzXYZ<T> &right) { return (x==right.x) && (y==right.y) && (z==right.z); }
00107
00108 gzBool operator!=(const gzXYZ<T> &right) { return (x!=right.x) || (y!=right.y) || (z!=right.z); }
00109
00110
00111
00112 T x,y,z;
00113 };
00114
00115
00116
00117
00118 typedef gzXYZ<gzULong> gzULongXYZ;
00119 typedef gzXYZ<gzLong> gzLongXYZ;
00120 typedef gzXYZ<gzFloat> gzFloatXYZ;
00121 typedef gzXYZ<gzDouble> gzDoubleXYZ;
00122 typedef gzXYZ<gzReal> gzRealXYZ;
00123 typedef gzXYZ<gzShort> gzShortXYZ;
00124
00125
00126
00127 #endif // __GZ_XYZ_H__