計算幾何模板四(多邊形)

2021-07-27 02:44:42 字數 1380 閱讀 9845

計算幾何模板四(多邊形)

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

double deg2rad(double deg)

double rad2deg(double rad)

double sin(double deg)

double cos(double deg)

double arcsin(double val)

double arccos(double val)

//點struct point

point(double _x,double _y):x(_x),y(_y){};

};//兩個點的距離

double distance(const point &a,const point &b)

//線段

struct seg

; seg(point _a,point _b):a(_a),b(_b){};

};//有公共端點o叉乘,並判拐,若正p0->p1->p2拐向左

double cross(const point &a,const point &b,const point &o)

//判等(值,點,直線)

bool isequal(double a,double b)

//多邊形,逆時針或順時針給出x,y

struct poly

; poly(int _n,const double *_x,const double *_y)

};//多邊形頂點

point vertex(const poly &poly,int idx)

//多邊形的邊

seg edge(const poly &poly,int idx)

//多邊形的周長

double perimeter(const poly &poly)

}return (cnt%2!=0);

}//判斷是否為簡單多邊形

bool is******(const poly& poly)

++top;

x[top]=points[i].x;

y[top]=points[i].y;

}delete points;

poly poly(++top,x,y);

delete x;

delete y;

return poly;

}

模板 計算幾何 多邊形

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

計算幾何 多邊形

判定凸多邊形 頂點凹凸性法 判斷點在凸多邊形內外 與判定凸多邊形差不多,用判斷點與多邊形兩頂點叉乘,都大於0,點在多邊形內,小於0,點在多邊形外。水平 垂直交叉點數判別法 適用於任意多邊形包括凹凸邊形 注意到如果從p作水平向左的射線的話,如果p在多邊形內部,那麼這條射線與多邊形的交點必為奇數,如果p...

計算幾何 多邊形筆記

計算下乙個前後所組成向量的階乘,如果在計算時,出現負值,則此多邊形是凹多邊形,如果所有頂點計算完 畢,其結果都大於0,則多邊形是凸多邊形。判斷點在凸多邊形內外 與判定凸多邊形差不多,用判斷點與多邊形兩頂點叉乘,都大於0,點在多邊形內,小於0,點在多邊 形外。水平 垂直交叉點數判別法 適用於任意多邊形...