模板 計算幾何 多邊形

2022-03-05 15:39:42 字數 1373 閱讀 6922

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 len()

friend point operator+(const point &a, const point &b)

friend point operator-(const point &a, const point &b)

friend point operator*(const point &p, const double &k)

friend point operator*(const double &k, const point &p)

friend bool operator==(const point &a, const point &b)

friend double operator*(const point &a, const point &b)

friend double operator^(const point &a, const point &b)

friend double dis(const point &a, const point &b)

//返回繞原點旋轉a弧度的結果

point rotate(const double &a)

};

struct segment 

segment(const point &s, const point &t): s(s), t(t) {}

//返回點到線段的距離

double pointdistancewithsegment(const point &p)

//返回點到直線的投影

point pointprojecttoline(const point &p)

bool pointonsegment(const point &p)

//判斷兩條直線是否平行

bool lineparallelwithline(const segment &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...

計算幾何 多邊形筆記

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