source: molecuilder/src/vector.hpp@ d11f22

Last change on this file since d11f22 was d11f22, checked in by Frederik Heber <heber@…>, 17 years ago

some new functions: vector::vector(), vector::ProjectOntoPlane(), vector::One(), vector::Init()

vector::vector(): another constructor for directly initiating vector
vector::ProjectOntoPlane(): projects a vector onto the planbe defined by a given normal vector
vector::One(): set all components to 1
vector::Init(): initialises vector with given components

  • Property mode set to 100644
File size: 1.9 KB
Line 
1#ifndef VECTOR_HPP_
2#define VECTOR_HPP_
3
4/** Single vector.
5 * basically, just a x[3] but with helpful functions
6 */
7class vector {
8 public:
9 double x[NDIM];
10
11 vector();
12 vector(double x1, double x2, double x3);
13 ~vector();
14
15 double Distance(const vector *y) const;
16 double PeriodicDistance(const vector *y, const double *cell_size) const;
17 double ScalarProduct(const vector *y) const;
18 double Projection(const vector *y) const;
19 double Norm() const ;
20 double Angle(vector *y) const;
21
22 void AddVector(const vector *y);
23 void SubtractVector(const vector *y);
24 void CopyVector(const vector *y);
25 void RotateVector(const vector *y, const double alpha);
26 void Zero();
27 void One(double one = 1.);
28 void Init(double x1, double x2, double x3);
29 void Normalize();
30 void Translate(const vector *x);
31 void Mirror(const vector *x);
32 void ProjectOntoPlane(const vector *y);
33 void Scale(double **factor);
34 void Scale(double *factor);
35 void Scale(double factor);
36 void MatrixMultiplication(double *M);
37 void InverseMatrixMultiplication(double *M);
38 void KeepPeriodic(ofstream *out, double *matrix);
39 void LinearCombinationOfVectors(const vector *x1, const vector *x2, const vector *x3, double *factors);
40
41 bool GetOneNormalVector(const vector *x1);
42 bool MakeNormalVector(const vector *y1);
43 bool MakeNormalVector(const vector *y1, const vector *y2);
44 bool MakeNormalVector(const vector *x1, const vector *x2, const vector *x3);
45 bool SolveSystem(vector *x1, vector *x2, vector *y, double alpha, double beta, double c);
46 bool LSQdistance(vector **vectors, int dim);
47
48 void AskPosition(double *cell_size, bool check);
49 bool Output(ofstream *out) const;
50};
51
52ofstream& operator<<(ofstream& ost, vector& m);
53vector& operator+=(vector& a, const vector& b);
54vector& operator*=(vector& a, const double m);
55vector& operator*(const vector& a, const double m);
56vector& operator+(const vector& a, const vector& b);
57
58#endif /*VECTOR_HPP_*/
Note: See TracBrowser for help on using the repository browser.