模板 - 计算几何

基础

//不要输出-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));
    }
};

猜你喜欢

转载自www.cnblogs.com/Yinku/p/10952826.html