Allink  v0.1
MatematicaVect.h
00001 #ifndef MATEMATICAVECT_H
00002 #define MATEMATICAVECT_H
00003 #include <stdio.h>
00004 #include <stdlib.h>
00005 #include <math.h>
00006 
00007 //-----------------Vettore-----------------
00009 class Vettore{
00010  public:
00012   Vettore(int N);
00014   Vettore();
00016   ~Vettore();
00018   Vettore(double *Pos,int N);
00020   Vettore(double x,double y,double z);
00022   Vettore(double x,double y);
00024   int NDim;
00026   double *x;
00027   //  Vettore *CrossProduct(Vettore *u,Vettore *v);
00029   double Abs();
00031   double Norm();
00033   double Normalize();
00034   //Vettore Normal(const Vettore u,const Vettore v);
00036   void Normal(const Vettore *u,const Vettore *v);
00038   void NormalSurf(const Vettore *u,const Vettore *v,const Vettore *w);
00040   double ProjOnSurf(Vettore *S1,Vettore *S2,Vettore *S3,Vettore *P);
00042   void Mult(double Fact);
00044   void Subs(const Vettore *u,const Vettore *v);
00046   double ScalS(const Vettore *u,const Vettore *v);
00048   double CosAngle(Vettore *u);
00050   double CosAngle(Vettore *u,Vettore *v);
00052   double SinAngle(Vettore *u,Vettore *v);
00054   double SinAngle(Vettore *u);
00056   double Angle(Vettore *u,Vettore *v);
00058   double Angle(Vettore *u);
00060   double Col(int N);
00062   double Val(int N){return Col(N);};
00064   void Set(double Val,int Col);
00066   void Axis(Vettore *u,Vettore *v);
00068   void ScalV(const Vettore *u,const Vettore *v);
00070   double VetV(const Vettore *u,const Vettore *v);
00072   double VetV3(const Vettore *u,const Vettore *v);
00074   double VetV(const Vettore *u);
00076   double ProjOnAxis(Vettore *a);
00078   double ProjOnAxis(Vettore *Pos,Vettore *Axis);
00080   void ApplyOn(Vettore *o);
00082   void Copy(Vettore *o);
00084   void Export(double *x);
00086   void PerpTo(Vettore *o);
00088   double PerpTo(Vettore *Pos,Vettore *Axis);
00090   double PerpTo3(Vettore *Pos,Vettore *Axis);
00092   void Print();
00094   void Rescale(double NewLength);
00096   Vettore operator+(const Vettore &Vet);
00098   Vettore operator+(const Vettore &Vet) const;
00100   Vettore& operator+=(const Vettore &Vet);
00102   Vettore operator-(const Vettore &Vet);
00104   Vettore operator-(const Vettore &Vet) const;
00106   Vettore& operator-=(const Vettore &Vet);
00108   Vettore operator*(const Vettore &Vet); 
00110   Vettore& operator*=( const Vettore& vec );
00112   Vettore operator*(const double Fact);
00114   Vettore& operator*=( const double f ); 
00116   double operator%(const Vettore &Vet); 
00118   double& operator%=(const Vettore &Vet); 
00120   Vettore operator^(const Vettore& vec);
00122   Vettore& operator^=(const Vettore& vec);
00124   Vettore operator/(const Vettore& vec);
00126   Vettore& operator/=(const Vettore& vec);
00128   Vettore operator=(const Vettore &Vet);
00130   double * getPtr() {
00131     return (double*)&x;
00132   }
00134   const double * getPtr() const {
00135     return (const double *)&x;
00136   }
00138   double& operator[]( int col ){
00139     //return getPtr()[col];
00140     return x[col];
00141   }
00143   double operator[]( int col ) const {
00144     //return getPtr()[col];
00145     return x[col];
00146   }
00147 };
00149   Vettore operator*(double Fact, const Vettore& vec);
00150 #endif //MATEMATICA_H