Allink  v0.1
MatematicaVect.h
1 #ifndef MATEMATICAVECT_H
2 #define MATEMATICAVECT_H
3 #include <stdio.h>
4 #include <stdlib.h>
5 #include <math.h>
6 
7 //-----------------Vettore-----------------
9 class Vettore{
10  public:
12  Vettore(int N);
14  Vettore();
16  ~Vettore();
18  Vettore(double *Pos,int N);
20  Vettore(double x,double y,double z);
22  Vettore(double x,double y);
24  int NDim;
26  double *x;
27  // Vettore *CrossProduct(Vettore *u,Vettore *v);
29  double Abs();
31  double Norm();
33  double Normalize();
34  //Vettore Normal(const Vettore u,const Vettore v);
36  void Normal(const Vettore *u,const Vettore *v);
38  void NormalSurf(const Vettore *u,const Vettore *v,const Vettore *w);
40  double ProjOnSurf(Vettore *S1,Vettore *S2,Vettore *S3,Vettore *P);
42  void Mult(double Fact);
44  void Subs(const Vettore *u,const Vettore *v);
46  double ScalS(const Vettore *u,const Vettore *v);
48  double CosAngle(Vettore *u);
50  double CosAngle(Vettore *u,Vettore *v);
52  double SinAngle(Vettore *u,Vettore *v);
54  double SinAngle(Vettore *u);
56  double Angle(Vettore *u,Vettore *v);
58  double Angle(Vettore *u);
60  double Col(int N);
62  double Val(int N){return Col(N);};
64  void Set(double Val,int Col);
66  void Axis(Vettore *u,Vettore *v);
68  void ScalV(const Vettore *u,const Vettore *v);
70  double VetV(const Vettore *u,const Vettore *v);
72  double VetV3(const Vettore *u,const Vettore *v);
74  double VetV(const Vettore *u);
76  double ProjOnAxis(Vettore *a);
78  double ProjOnAxis(Vettore *Pos,Vettore *Axis);
80  void ApplyOn(Vettore *o);
82  void Copy(Vettore *o);
84  void Export(double *x);
86  void PerpTo(Vettore *o);
88  double PerpTo(Vettore *Pos,Vettore *Axis);
90  double PerpTo3(Vettore *Pos,Vettore *Axis);
92  void Print();
94  void Rescale(double NewLength);
96  Vettore operator+(const Vettore &Vet);
98  Vettore operator+(const Vettore &Vet) const;
100  Vettore& operator+=(const Vettore &Vet);
102  Vettore operator-(const Vettore &Vet);
104  Vettore operator-(const Vettore &Vet) const;
106  Vettore& operator-=(const Vettore &Vet);
108  Vettore operator*(const Vettore &Vet);
110  Vettore& operator*=( const Vettore& vec );
112  Vettore operator*(const double Fact);
114  Vettore& operator*=( const double f );
116  double operator%(const Vettore &Vet);
118  double& operator%=(const Vettore &Vet);
120  Vettore operator^(const Vettore& vec);
122  Vettore& operator^=(const Vettore& vec);
124  Vettore operator/(const Vettore& vec);
126  Vettore& operator/=(const Vettore& vec);
128  Vettore operator=(const Vettore &Vet);
130  double * getPtr() {
131  return (double*)&x;
132  }
134  const double * getPtr() const {
135  return (const double *)&x;
136  }
138  double& operator[]( int col ){
139  //return getPtr()[col];
140  return x[col];
141  }
143  double operator[]( int col ) const {
144  //return getPtr()[col];
145  return x[col];
146  }
147 };
149  Vettore operator*(double Fact, const Vettore& vec);
150 #endif //MATEMATICA_H
void Export(double *x)
Export.
void Subs(const Vettore *u, const Vettore *v)
substruct two Vettore
void Copy(Vettore *o)
Copy the vector.
double operator[](int col) const
Returns a entry.
double operator%(const Vettore &Vet)
Scalar product.
double Norm()
Return the norm of a Vettore.
void ApplyOn(Vettore *o)
Apply on a origin.
double Normalize()
Normlizes a Vettore.
Geometrical operations on vectors.
Definition: MatematicaVect.h:9
~Vettore()
Frees.
double & operator%=(const Vettore &Vet)
Scalar product.
Vettore operator^(const Vettore &vec)
Vectorial product.
Vettore operator=(const Vettore &Vet)
Assigns the entries of the rhs Vettore to the lhs.
void Print()
Prints the components.
double PerpTo3(Vettore *Pos, Vettore *Axis)
The vector perpendicolar in three dimension (faster)
void ScalV(const Vettore *u, const Vettore *v)
Scalar product between two Vettore.
Vettore operator*(const Vettore &Vet)
Moltiplication component by component.
double Val(int N)
Value of the N column.
double * x
Where the data are stored.
void Axis(Vettore *u, Vettore *v)
Calculates the axis formed by two Vettore.
double CosAngle(Vettore *u)
Computes the cosine with respect to.
double ScalS(const Vettore *u, const Vettore *v)
Multiplies the components of a Vettore for a scalar.
void Rescale(double NewLength)
Rescale the total length of the vector.
Vettore & operator-=(const Vettore &Vet)
Difference component by component.
double Col(int N)
Value of the N column.
Vettore()
Allocates.
const double * getPtr() const
Returns a entry.
Vettore operator-(const Vettore &Vet)
Difference component by component.
Vettore & operator+=(const Vettore &Vet)
Sum component by component.
double ProjOnAxis(Vettore *a)
Projects along the axis.
Vettore operator/(const Vettore &vec)
Division component by component.
double VetV(const Vettore *u, const Vettore *v)
Vectorial product between two Vettore returns the area.
double * getPtr()
Returns a entry.
Vettore & operator*=(const Vettore &vec)
Scalar product.
int NDim
Dimension allocated.
double & operator[](int col)
Returns a entry.
double Abs()
Return the absolute value.
double Angle(Vettore *u, Vettore *v)
Computes the angle between two Vetttore.
Vettore & operator/=(const Vettore &vec)
Division component by component.
double ProjOnSurf(Vettore *S1, Vettore *S2, Vettore *S3, Vettore *P)
Project a point P on the point PS perpendicular to the surface described by the points S1...
void Mult(double Fact)
multiply by a scalar
double VetV3(const Vettore *u, const Vettore *v)
Vectorial product between two Vettore in three dimension (faster) returns the area.
void Normal(const Vettore *u, const Vettore *v)
Computes the normal with respect to the Vettore u and v.
Vettore operator+(const Vettore &Vet)
Sum component by component.
double SinAngle(Vettore *u, Vettore *v)
Computes the sine between two Vettore.
void Set(double Val, int Col)
Set the N column.
Vettore & operator^=(const Vettore &vec)
Vectorial product.
void NormalSurf(const Vettore *u, const Vettore *v, const Vettore *w)
Computes the normal to the plane described by u,v,w.
void PerpTo(Vettore *o)
The vector perpendicolar.