#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define mp make_pair
#define pb push_back
using namespace std;
const double eps=1e-8;//精度
const double pi=acos(-1.0);//π
const double inf=1e20;//無窮大
const int maxp=1111;//最大點數
/* 判斷d是否在精度內等於0
*/int dblcmp(double d)
/* 求x的平方
*/inline double sqr(double x)
/* 點/向量
*/struct point
point(double _x,double _y):x(_x),y(_y){};
//讀入乙個點
void input()
//輸出乙個點
void output()
//判斷兩點是否相等
bool operator==(point a)const
//判斷兩點大小
bool operator<(point a)const
};/*
線段/直線
*/struct line
line(point _a,point _b)
//判斷線段相等
bool operator==(line v)
//點p做傾斜角為angle的射線
line(point p,double angle)
else
}//直線一般式ax+by+c=0
line(double _a,double _b,double _c)
else if (dblcmp(_b)==0)
else
}//讀入乙個線段
void input()
//校準線段兩點
void adjust()
bool pointonseg(point p)
//兩線是否平行
bool parallel(line v)
//線段和線段關係
//0 不相交
//1 非規範相交
//2 規範相交
int segcrossseg(line v)
//線段和直線v關係
int linecrossseg(line v)//*this seg v line
//直線和直線關係
//0 平行
//1 重合
//2 相交
int linecrossline(line v)
return 2;
}//求兩線交點
point crosspoint(line v)
//點p到直線的距離
double dispointtoline(point p)
//點p到線段的距離
double dispointtoseg(point p)
return dispointtoline(p);
}//******xx
point lineprog(point p)
//點p關於直線的對稱點
point symmetrypoint(point p)
};/*
多邊形*/struct polygon
};void norm()
}//判斷是否凸多邊形
bool isconvex()
return cnt!=0;
}//線段與多邊形關係
//0 無任何交點
//1 在多邊形內長度為正
//2 相交或與邊平行
int relationline(line u)
}//取得周長
double getcircumference()
//取得重心
point getbarycentre()
if (dblcmp(q.sub(p[0]).det(p[mid].sub(p[0])))>0)
else
}return -1;
}};
模板 計算幾何 多邊形
1 注意 運算子的優先順序是很低的。2 注意重合點和共線點的情況 const double eps 1e 9 const double pi acos 1.0 int sgn double x struct point point double x,double y x x y y double l...
計算幾何模板四(多邊形)
計算幾何模板四 多邊形 include include include include include includeusing namespace std define sgn x x 0 1 1 define eps 1e 8 define inf 1e10 define pi acos 1.0...
計算幾何 多邊形
判定凸多邊形 頂點凹凸性法 判斷點在凸多邊形內外 與判定凸多邊形差不多,用判斷點與多邊形兩頂點叉乘,都大於0,點在多邊形內,小於0,點在多邊形外。水平 垂直交叉點數判別法 適用於任意多邊形包括凹凸邊形 注意到如果從p作水平向左的射線的話,如果p在多邊形內部,那麼這條射線與多邊形的交點必為奇數,如果p...