Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

Vec2Real64.h

Go to the documentation of this file.
00001 #ifndef Impala_Core_Array_Element_Vec2Real64_h
00002 #define Impala_Core_Array_Element_Vec2Real64_h
00003 
00004 #include <iostream>
00005 #include "Util/Math.h"
00006 #include "Basis/NativeTypes.h"
00007 
00008 namespace Impala
00009 {
00010 namespace Core
00011 {
00012 namespace Array
00013 {
00014 namespace Element
00015 {
00016 
00017 
00020 class Vec2Real64 {
00021 public:
00022 
00024     Vec2Real64()
00025     {
00026     }
00027 
00029     Vec2Real64(Real64 x, Real64 y)
00030     {
00031         mValues[0] = x;
00032         mValues[1] = y;
00033     }
00034 
00036     Vec2Real64(Real64 v)
00037     {
00038         mValues[0] = v;
00039         mValues[1] = v;
00040     }
00041 
00043     Vec2Real64(const Vec2Real64& v)
00044     {
00045         mValues[0] = v.mValues[0];
00046         mValues[1] = v.mValues[1];
00047     }
00048 
00049     /*
00050     Vec2Real64& operator=(const Vec2Real64& v)
00051     {
00052         mValues[0] = v.mValues[0];
00053         mValues[1] = v.mValues[1];
00054         return *this;
00055     }
00056     */
00057 
00059     Real64
00060     X() const
00061     {
00062         return mValues[0];
00063     }
00064     
00066     Real64
00067     Y() const
00068     {
00069         return mValues[1];
00070     }
00071     
00073     Real64
00074     getValue(int dimension) const
00075     {
00076         return mValues[dimension - 1];
00077     }
00078 
00080     int
00081     operator==(const Vec2Real64& v) const
00082     {
00083         return (mValues[0] == v.mValues[0]) && (mValues[1] == v.mValues[1]);
00084     }
00085 
00087     int
00088     operator!=(const Vec2Real64& v) const
00089     {
00090         return (mValues[0] != v.mValues[0]) || (mValues[1] != v.mValues[1]);
00091     }
00092 
00094     int
00095     operator<(const Vec2Real64& v) const
00096     {
00097         return (fabs(mValues[0]) + fabs(mValues[1]) ) <
00098             (fabs(v.mValues[0]) + fabs(v.mValues[1]) );
00099     }
00100 
00102     int
00103     operator<=(const Vec2Real64& v) const
00104     {
00105         return (fabs(mValues[0]) + fabs(mValues[1]) ) <=
00106             (fabs(v.mValues[0]) + fabs(v.mValues[1]) );
00107     }
00108 
00110     int
00111     operator> (const Vec2Real64& v) const
00112     {
00113         return (fabs(mValues[0]) + fabs(mValues[1]) ) >
00114             (fabs(v.mValues[0]) + fabs(v.mValues[1]));
00115     }
00116 
00118     int
00119     operator>=(const Vec2Real64& v) const
00120     {
00121         return (fabs(mValues[0]) + fabs(mValues[1]) ) >=
00122             (fabs(v.mValues[0]) + fabs(v.mValues[1]));
00123     }
00124 
00126     Vec2Real64&
00127     operator+=(const Vec2Real64& v)
00128     {
00129         mValues[0] += v.mValues[0];
00130         mValues[1] += v.mValues[1];
00131         return *this;
00132     }
00133 
00135     Vec2Real64&
00136     operator-=(const Vec2Real64& v)
00137     {
00138         mValues[0] -= v.mValues[0];
00139         mValues[1] -= v.mValues[1];
00140         return *this;
00141     }
00142 
00144     Vec2Real64&
00145     operator*=(const Vec2Real64& v)
00146     {
00147         mValues[0] *= v.mValues[0];
00148         mValues[1] *= v.mValues[1];
00149         return *this;
00150     }
00151 
00153     Vec2Real64&
00154     operator*=(double v)
00155     {
00156         mValues[0] *= v;
00157         mValues[1] *= v;
00158         return *this;
00159     }
00160 
00162     Vec2Real64&
00163     operator/=(const Vec2Real64& v)
00164     {
00165         mValues[0] /= v.mValues[0];
00166         mValues[1] /= v.mValues[1];
00167         return *this;
00168     }
00169 
00171     Vec2Real64&
00172     operator/=(double d)
00173     {
00174         mValues[0] /= d;
00175         mValues[1] /= d;
00176         return *this;
00177     }
00178 
00179 private:
00180     Real64 mValues[2];
00181 };
00182 
00183 inline std::ostream&
00184 operator<<(std::ostream& os, const Vec2Real64& v)
00185 {
00186     return os << "(" << v.X() << "," << v.Y() << ")";
00187 }
00188 
00189 inline Vec2Real64
00190 operator+(const Vec2Real64& v1, const Vec2Real64& v2)
00191 {
00192     return Vec2Real64(v1.X() + v2.X(), v1.Y() + v2.Y());
00193 }
00194 
00195 inline Vec2Real64
00196 operator-(const Vec2Real64& v1, const Vec2Real64& v2)
00197 {
00198     return Vec2Real64(v1.X() - v2.X(), v1.Y() - v2.Y());
00199 }
00200 
00201 inline Vec2Real64
00202 operator*(const Vec2Real64& v1, const Vec2Real64& v2)
00203 {
00204     return Vec2Real64(v1.X() * v2.X(), v1.Y() * v2.Y());
00205 }
00206 
00207 inline Vec2Real64
00208 operator*(const Vec2Real64& v1, double d)
00209 {
00210     return Vec2Real64(v1.X() * d, v1.Y() * d);
00211 }
00212 
00213 inline Vec2Real64
00214 operator/(const Vec2Real64& v1, const Vec2Real64& v2)
00215 {
00216     return Vec2Real64(v1.X() / v2.X(), v1.Y() / v2.Y());
00217 }
00218 
00219 inline Vec2Real64
00220 operator/(const Vec2Real64& v1, double d)
00221 {
00222     return Vec2Real64(v1.X() / d, v1.Y() / d);
00223 }
00224 
00225 } // namespace Element
00226 } // namespace Array
00227 } // namespace Core
00228 } // namespace Impala
00229 
00230 #endif

Generated on Fri Mar 19 09:30:45 2010 for ImpalaSrc by  doxygen 1.5.1