幾何中點 線 多邊形模板

2021-06-14 23:15:10 字數 2292 閱讀 6245

#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...