計算幾何常用公式 模板

2021-09-27 02:27:36 字數 1345 閱讀 4273

const double pi=acos(-1);

const double eps=1e-6;//精度

int sgn(double a, double b)

當確定直線和線段相交時,求他們的交點 (利用叉積可判斷,線段兩端點是否在直線的兩側)

struct point 

} p[n];

double cross(point a,point b,point c)

bool judge(point p1, point p2, point p3, point p4)

bool intersection(point p1, point p2, point p3, point p4, point& p)

求兩多邊形的交的面積:

/* 

* 多邊形的交,多邊形的邊一定是要按逆時針方向給出

* 還要判斷是凸包還是凹包,呼叫相應的函式

* 面積並,只要和面積減去交即可

*/

#include using namespace std;

const int maxn = //300;

const double eps = 1e-8;

int dcmp(double x)

struct point

; double cross(point a,point b,point c) ///叉積

point intersection(point a,point b,point c,point d)

//計算多邊形面積

double polygonarea(point p, int n)

double cpia(point a, point b, int na, int nb)//convexpolygonintersectarea

memcpy(p, tmp, sizeof(point) * tn);

nb = tn, p[nb] = p[0];

} if(nb < 3) return 0.0;

return polygonarea(p, nb);

} double spia(point a, point b, int na, int nb)///******polygonintersectarea 呼叫此函式

} return res;

} point p1[maxn], p2[maxn];

int n1, n2;

int main()

return 0;

}

計算幾何 常用幾何函式(模板)

浮點誤差與精度問題 實數是用浮點數運算的,精度受到限制,特別是乘除法之後,誤差比較大。此時 是可能出現誤差的。我們可以認為非常接近0的實數都是0,寫乙個實數的三出口函式。const double eps 1e 8 int dcmp double d 叉積判斷方向 p1 p2 x1y2 x2y1 p2...

計算幾何求公式

例題1 poj 1380 矩陣的包含 給你兩個矩陣的長和寬,問前面這個矩陣能否包含後面這個矩陣。1 當前面的矩陣的寬 小於後面這個矩陣的寬時,不能包含。2 當前面矩陣的面積 後面矩陣的面積,不能包含。3 當前面矩陣的長,寬 後矩陣的長,寬,能夠包含。4 特別注意前矩陣寬 後矩陣的寬,但是長 後矩陣的...

計算幾何公式總結

一.注意 1.注意捨入方式 0.5的捨入方向 防止輸出 0.2.幾何題注意多測試不對稱資料.3.整數幾何注意xmult和dmult是否會出界 符點幾何注意eps的使用.4.避免使用斜率 注意除數是否會為0.5.公式一定要化簡後再代入.6.判斷同乙個2 pi域內 兩角度差應該是 abs a1 a2 p...