00001 00007 // written by David Hurwitz. 00008 00009 #if !defined(VECTOR_HPP) 00010 #define VECTOR_HPP 00011 00012 enum Vector_t {kRandom, kRegular}; 00013 00014 class AVector { 00015 00016 protected: 00017 double m_x; 00018 double m_y; 00019 double m_z; 00020 00021 public: 00022 AVector(Vector_t Type=kRegular); 00023 AVector(double x, double y, double z); 00024 AVector(const AVector& Vector); 00025 Bool_t Set(double x, double y, double z); 00026 AVector operator+ (const AVector& Vector); 00027 AVector operator- (const AVector& Vector); 00028 AVector operator/ (double divisor); 00029 AVector& operator/= (double divisor); 00030 AVector& operator*= (double scalar); 00031 AVector operator* (double scalar); 00032 AVector& operator= (const AVector& Vector); 00033 AVector& operator+= (const AVector& Vector); 00034 AVector cross(const AVector& Vector); 00035 double dot(const AVector& Vector); 00036 double& operator[] (int index); 00037 double Dist(); 00038 double DistSqr(); 00039 double Dist(const AVector& Vector); 00040 double DistSqr(const AVector& Vector); 00041 void Out(); 00042 void Output(); 00043 AVector& Scale(AVector& SmallVec, AVector& BigVec); 00044 AVector& Random(); 00045 // used for casting Vector -> AVector and vice-versa 00046 // (I had difficulty overloading operator=) 00047 friend void SetEqual(AVector& Vec1, const Vector& Vec2); 00048 friend void SetEqual(Vector& Vec1, const AVector& Vec2); 00049 }; 00050 00051 #endif
1.3.9.1