Allink
v0.1
|
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