#include #include #include using namespace std; struct vec{ double x; double y; double z; void set(double fx, double fy, double fz); vec(double fx=0, double fy=0, double fz=0){set(fx,fy,fz);} vec& operator=(const vec& rhs){ set(rhs.x,rhs.y,rhs.z); return *this; } }; void vec::set(double fx, double fy, double fz){ x=fx; y=fy; z=fz; } vec operator+(vec v1, vec v2){ vec v; v.x=v1.x+v2.x; v.y=v1.y+v2.y; v.z=v1.z+v2.z; return v; } vec operator*(double a, vec v1){ vec v; v.x=a*v1.x; v.y=a*v1.y; v.z=a*v1.z; return v; } vec cMult(vec a, vec b){ vec v; v.x=a.x*b.x; v.y=a.y*b.y; v.z=a.z*b.z; return v; } double mag(vec a){ return a.x+a.y+a.z; } double mag2(vec a){ vec v=cMult(a,a); return mag(v); } double dot(vec a, vec b){ vec v=cMult(a,b); return mag(v); } std::ostream& operator <<(std::ostream& os, vec& v){ return os<1) n=atoi(argv[1]); double mu=0.5; if (argc>2) mu=atof(argv[2]); double s=0; for (int i=0;i