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,點在多邊 形外。水平 垂直交叉點數判別法 適用於任意多邊形...