FreeEnergyVector.h

Go to the documentation of this file.
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

Generated on Mon Nov 20 01:17:12 2017 for NAMD by  doxygen 1.4.7