模板 多邊形面積交

2022-05-10 02:31:45 字數 975 閱讀 7581

1.必須逆時針給出多邊形頂點

2.面積並 = 面積和 - 面積交 

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

memcpy(p, tmp, sizeof(point) * tn); //把tmp複製到p

nb = tn, p[nb] = p[0];//tn即tmp點數記到nb

}//其實該是np表示p陣列個數,這裡省了個變數就用nb表示,下面第二行做引數而已

if(nb < 3) return 0.0; //相交部分凸包不夠三個點,面積就是0

return polygonarea(p, nb); //求出相交凸包部分的面積

}double spia(point a, point b, int na, int nb)//如果要求面積並,則先用三角剖分分別求兩個多邊形的面積s1,s2,然後s1+s2-面積交即可

return 0;}/*

in4 4

0 0 1 0 1 1 0 1

0.5 0.5 -1 0.5 -1 -1 0.5 -1

out0.25

int4 4

0 0 5 0 5 5 0 5

-1 -1 4 -1 4 4 -1 4

out16

*/

多邊形面積交模板

多邊形的交,多邊形的邊一定是要按逆時針方向給出 還要判斷是凸包還是凹包,呼叫相應的函式 面積並,只要和面積減去交即可 include using namespace std const double eps 1e 8 int dcmp double x struct point double cro...

多邊形面積

點積 a b x1 x2 y1 y2 a b cos 點積的結果是乙個數值 叉積 a b x1 y2 x2 y1 a b sin 叉積的結果也是乙個向量,是垂直於向量a,b所形成的平面,如果看成三維座標的話是在 z 軸上,上面結果是它的模。三角形的面積 向量a和 向量b的叉積的絕對值表示 以 向量a...

求兩個多邊形的交面積(模板)

別人的部落格 多邊形的交,多邊形的邊一定是要按逆時針方向給出 還要判斷是凸包還是凹包,呼叫相應的函式 面積並,只要和面積減去交即可 include using namespace std const int maxn 300 const double eps 1e 8 int dcmp double...