基础
//不要输出-0.0之类的数
const double eps=1e-8;
const double pi=acos(-1.0);
//判断浮点数的符号
inline int cmp(double x){
return (fabs(x)<eps)?0:((x>0.0)?1:-1);
}
inline double sqr(double x){
return x*x;
}
多边形
点
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 det(Point &p){
return x*p.y-y*p.x;
}
double dot(Point &p){
return x*p.x+y*p.y;
}
double norm(){
return sqrt(sqr(x)+sqr(y));
}
double dist(Point &p){
return sqrt(sqr(x-p.x)+sqr(y-p.y));
}
Point rotate_point(double A){
return Point(x*cos(A)-y*sin(A),x*sin(A)+y*cos(A));
}
};