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