符号判断
inline int sgn(double x){
if(x>eps) return 1;
if(x<-eps)return -1;
return 0;
}
变量的定义
点/向量:它们都可以用坐标来表示。于是可以定义在一起。给出几个基本运算。
struct Grid{
double x,y;
Grid(double X=0,double Y=0){x=X,y=Y;}
friend inline bool operator==(const Grid &a,const Grid &b){return !sgn(a.x-b.x)&&!sgn(a.y-b.y);}
inline double Angle(){return atan2(y,x);}
inline double len(){return sqrt(x*x+y*y);}
friend inline Grid operator +(const Grid &a,const Grid &b){return Grid(a.x+b.x,a.y+b.y);}
friend inline Grid operator -(const Grid &a,const Grid &b){return Grid(a.x-b.x,a.y-b.y);}
friend inline Grid operator *(const Grid &a,const double &b){return Grid(a.x*b,a.y*b);}
friend inline Grid operator /(const Grid &a,const double &b){return Grid(a.x/b,a.y/b);}
friend inline double dot(const Grid &a,const Grid &b){return a.x*b.x+a.y*b.y;}
friend inline double cross(const Grid &a,const Grid &b){return a.x*b.y-a.y*b.x;}
};
typedef Grid Point,Vector;
1437

被折叠的 条评论
为什么被折叠?



