00001 #ifndef _SpatialVector_h
00002 #define _SpatialVector_h
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include <cmath>
00021 #include <cstdio>
00022 #include <iostream>
00023 #include <SpatialGeneral.h>
00024
00025 using namespace std;
00026
00027
00036 class LINKAGE SpatialVector {
00037 public:
00039 SpatialVector();
00040
00042 SpatialVector(float64 x,
00043 float64 y,
00044 float64 z);
00045
00047 SpatialVector(float64 ra,
00048 float64 dec);
00049
00051 SpatialVector(const SpatialVector &);
00052
00054 SpatialVector& operator =(const SpatialVector &);
00055
00057 void set(const float64 &x,
00058 const float64 &y,
00059 const float64 &z);
00060
00062 void set(const float64 &ra,
00063 const float64 &dec);
00064
00066 void get( float64 &x,
00067 float64 &y,
00068 float64 &z) const;
00069
00071 void get( float64 &ra,
00072 float64 &dec);
00073
00075 float64 length() const;
00076
00078 float64 x() const;
00079
00081 float64 y() const;
00082
00084 float64 z() const;
00085
00087 float64 ra();
00088
00090 float64 dec();
00091
00093 void normalize();
00094
00096 void show() const;
00097
00099 void read(istream &);
00100
00102 void write(ostream &) const;
00103
00105 int operator ==(const SpatialVector & ) const;
00106
00108 float64 operator *(const SpatialVector & ) const;
00109
00111 SpatialVector operator ^(const SpatialVector & ) const;
00112
00114 SpatialVector operator +(const SpatialVector & ) const;
00115
00117 SpatialVector operator -(const SpatialVector & ) const;
00118
00122 SpatialVector & operator *=(float64);
00123 SpatialVector & operator *=(int);
00124 friend SpatialVector operator *(float64, const SpatialVector &);
00125 friend SpatialVector operator *(int, const SpatialVector &);
00126 friend SpatialVector operator *(const SpatialVector &, float64);
00127 friend SpatialVector operator *(const SpatialVector &, int);
00129
00130 private:
00131 float64 x_;
00132 float64 y_;
00133 float64 z_;
00134 float64 ra_;
00135 float64 dec_;
00136 bool okRaDec_;
00137
00138 void updateXYZ();
00139 void updateRaDec();
00140
00141 friend class SpatialIndex;
00142 friend class SpatialDomain;
00143 friend class sxSpatialDomain;
00144 };
00145
00146 #include "SpatialVector.hxx"
00147
00148 #endif
00149