Changeset 0f55b2 for molecuilder/src/vector.hpp
- Timestamp:
- Apr 9, 2010, 2:45:49 PM (16 years ago)
- Children:
- 1f591b
- Parents:
- 71910a
- File:
-
- 1 edited
-
molecuilder/src/vector.hpp (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
molecuilder/src/vector.hpp
r71910a r0f55b2 23 23 */ 24 24 class Vector { 25 protected: 26 // this struct is used to indicate calls to the Baseconstructor from inside vectors. 27 struct Baseconstructor{}; 25 28 public: 26 29 … … 28 31 Vector(const double x1, const double x2, const double x3); 29 32 Vector(const Vector& src); 30 ~Vector();33 virtual ~Vector(); 31 34 32 double Distance(const Vector * const y) const;33 double DistanceSquared(const Vector * const y) const;34 double DistanceToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const;35 double PeriodicDistance(const Vector * const y, const double * const cell_size) const;36 double PeriodicDistanceSquared(const Vector * const y, const double * const cell_size) const;37 double ScalarProduct(const Vector * const y) const;38 double Norm() const;39 double NormSquared() const;40 double Angle(const Vector * const y) const;41 bool IsZero() const;42 bool IsOne() const;43 bool IsNormalTo(const Vector * const normal) const;44 bool IsEqualTo(const Vector * const a) const;35 virtual double Distance(const Vector * const y) const; 36 virtual double DistanceSquared(const Vector * const y) const; 37 virtual double DistanceToPlane(const Vector * const PlaneNormal, const Vector * const PlaneOffset) const; 38 virtual double PeriodicDistance(const Vector * const y, const double * const cell_size) const; 39 virtual double PeriodicDistanceSquared(const Vector * const y, const double * const cell_size) const; 40 virtual double ScalarProduct(const Vector * const y) const; 41 virtual double Norm() const; 42 virtual double NormSquared() const; 43 virtual double Angle(const Vector * const y) const; 44 virtual bool IsZero() const; 45 virtual bool IsOne() const; 46 virtual bool IsNormalTo(const Vector * const normal) const; 47 virtual bool IsEqualTo(const Vector * const a) const; 45 48 46 v oid AddVector(const Vector * const y);47 v oid SubtractVector(const Vector * const y);48 v oid CopyVector(const Vector * const y);49 v oid CopyVector(const Vector &y);50 v oid VectorProduct(const Vector * const y);51 v oid ProjectOntoPlane(const Vector * const y);52 v oid ProjectIt(const Vector * const y);53 Vector Projection(const Vector * const y) const;54 v oid Zero();55 v oid One(const double one);56 v oid Init(const double x1, const double x2, const double x3);57 v oid Normalize();58 v oid Translate(const Vector * const x);59 v oid Mirror(const Vector * const x);60 v oid Scale(const double ** const factor);61 v oid Scale(const double * const factor);62 v oid Scale(const double factor);63 v oid MatrixMultiplication(const double * const M);64 bool InverseMatrixMultiplication(const double * const M);65 v oid KeepPeriodic(const double * const matrix);66 v oid LinearCombinationOfVectors(const Vector * const x1, const Vector * const x2, const Vector * const x3, const double * const factors);67 double CutsPlaneAt(const Vector * const A, const Vector * const B, const Vector * const C) const;68 bool GetOneNormalVector(const Vector * const x1);69 bool MakeNormalTo(const Vector &y1);49 virtual void AddVector(const Vector * const y); 50 virtual void SubtractVector(const Vector * const y); 51 virtual void CopyVector(const Vector * const y); 52 virtual void CopyVector(const Vector &y); 53 virtual void VectorProduct(const Vector * const y); 54 virtual void ProjectOntoPlane(const Vector * const y); 55 virtual void ProjectIt(const Vector * const y); 56 virtual Vector Projection(const Vector * const y) const; 57 virtual void Zero(); 58 virtual void One(const double one); 59 virtual void Init(const double x1, const double x2, const double x3); 60 virtual void Normalize(); 61 virtual void Translate(const Vector * const x); 62 virtual void Mirror(const Vector * const x); 63 virtual void Scale(const double ** const factor); 64 virtual void Scale(const double * const factor); 65 virtual void Scale(const double factor); 66 virtual void MatrixMultiplication(const double * const M); 67 virtual bool InverseMatrixMultiplication(const double * const M); 68 virtual void KeepPeriodic(const double * const matrix); 69 virtual void LinearCombinationOfVectors(const Vector * const x1, const Vector * const x2, const Vector * const x3, const double * const factors); 70 virtual double CutsPlaneAt(const Vector * const A, const Vector * const B, const Vector * const C) const; 71 virtual bool GetOneNormalVector(const Vector * const x1); 72 virtual bool MakeNormalTo(const Vector &y1); 70 73 //bool SolveSystem(Vector * x1, Vector * x2, Vector * y, const double alpha, const double beta, const double c); 71 bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const;72 v oid WrapPeriodically(const double * const M, const double * const Minv);74 virtual bool IsInParallelepiped(const Vector &offset, const double * const parallelepiped) const; 75 virtual void WrapPeriodically(const double * const M, const double * const Minv); 73 76 74 77 // Accessors ussually come in pairs... and sometimes even more than that 75 double& operator[](size_t i);76 const double& operator[](size_t i) const;77 double& at(size_t i);78 const double& at(size_t i) const;78 virtual double& operator[](size_t i); 79 virtual const double& operator[](size_t i) const; 80 virtual double& at(size_t i); 81 virtual const double& at(size_t i) const; 79 82 80 83 // Assignment operator 81 Vector &operator=(const Vector& src);84 virtual Vector &operator=(const Vector& src); 82 85 83 86 // Access to internal structure 84 double* get(); 87 virtual double* get(); 88 89 // operators for mathematical operations 90 bool operator==(const Vector& b) const; 91 const Vector& operator+=(const Vector& b); 92 const Vector& operator-=(const Vector& b); 93 Vector const operator+(const Vector& b) const; 94 Vector const operator-(const Vector& b) const; 85 95 86 96 private: … … 90 100 91 101 ostream & operator << (ostream& ost, const Vector &m); 92 bool operator==(const Vector& a, const Vector& b);93 const Vector& operator+=(Vector& a, const Vector& b);94 const Vector& operator-=(Vector& a, const Vector& b);95 102 const Vector& operator*=(Vector& a, const double m); 96 103 Vector const operator*(const Vector& a, const double m); 97 104 Vector const operator*(const double m, const Vector& a); 98 Vector const operator+(const Vector& a, const Vector& b);99 Vector const operator-(const Vector& a, const Vector& b);100 101 105 102 106 #endif /*VECTOR_HPP_*/
Note:
See TracChangeset
for help on using the changeset viewer.
