表示点的结构体
struct point{
double x,y;
point(double x,double y):x(x),y(y){}
};
typedef point Vector;
表示线段的结构体
struct segment{
point p1,p2;
};
typedef segment line;
表示圆的结构体
struct circle{
point c;
double r;
circle(point c=point(),double r=0.0):c(c),r(r){}
};
表示多边形
typedef vector<point>polygon;
定义向量间的运算符
struct point{
double x,y;
point(){}
point(double x,double y):x(x),y(y){}
point operator + (point &p){
return point(x+p.x,y+p.y);
}
point operator - (point &p){
return point(x-p.x,y-p.y);
}
point operator * (double k){
return point(x*k,y*k);
}
point operator / (double k){
return point(x/k,y/k);
}
};
向量的大小
double norm(Vector a)
{
return a.x*a.x+a.y*a.y;
}
double ABS(Vector a)
{
return sqrt(norm(a));
}
归结一下下:
#define eps (1e-10)
struct point{
double x,y;
point(){}
point(double x,double y):x(x),y(y){}
point operator + (point &p){return point(x+p.x,y+p.y);}
point operator - (point &p){return point(x-p.x,y-p.y);}
point operator * (double k){return point(x*k,y*k);}
point operator / (double k){return point(x/k,y/k);}
double norm(){return x*x+y*y;}
double abs(){return sqrt(norm());}
bool operator < (const point &p){
return x!=p.x?x<p.x:y<p.y;
}
bool operator == (const point &p){
return fabs(x-p.x)<eps&&fabs(y-p.y)<eps;
}
};