求多邊形(覆蓋)面積(模板)

2022-05-02 06:15:09 字數 1577 閱讀 3123

求多個多邊形的總面積以及多邊形的相互覆蓋以後的面積 

給定每個點的座標。

#include //求多個多邊形的總面積以及多邊形的相互覆蓋以後的面積 

#define ll long long

#define met(a,x) memset(a,x,sizeof(a))

#define ull unsigned long long

#define mp make_pair

using

namespace

std;

const

double pi=4*atan(1.0

);const

int mod=1e9+7

;const

double inf=1e200;

const

double eps=1e-12

;int dcmp(double

x)struct

node

};vector

pp[110

];pair

s[110*60

];node

operator +(node a,node b)

node

operator -(node a,node b)

node

operator *(node a,double

p)node

operator /(node a,double

p)bool

operator ==(const node& a,const node&b)

double

seg(node o,node a,node b)

double

det(node a,node b)

double

det(node o,node a,node b)

double area(vectorp)

double

dot(node a,node b)

double

length(node a)

double polyunion(vector*p,int

n) }

else}}

}sort(s,s+m);

double pre=min(max(s[0].first,0.0),1.0),now,sum=0

;

int cover=s[0

].second;

for(int j=1; j)

ans+=det(a,b)*sum;}}

return ans/2;}

intmain()

}double t1=0,t2=polyunion(pp,n);

for(i=0; i)

t1+=area(pp[i]);

//第乙個是總面積,第二個是覆蓋以後的面積

cout<

<7)<

'<

<7)<

//printf("%.7lf %.7lf\n",-t1,-t2);

return0;

}

多邊形求面積,

這個程式很值得一博。昨天一位學地質的高中同學問我寫個程式求多邊形面積,因為他說看到excel就煩。正好前段時間在csdn上看到乙個帖子求多邊形面積,也想到了乙個演算法,於是寫了這個程式。演算法描述 乙個多邊形的面積可以由這樣兩個系列的梯形來計算,以凸多邊形舉例,在圖形上方的一系列邊和其在x軸的投影組...

求多邊形面積

可以利用多邊形求面積公式 s 0.5 x0 y1 x1 y0 x1 y2 x2 y1 xn y0 x0 yn 其中點 x0,y0 x1,y1 xn,yn 為多邊形上按逆時針順序的頂點。簡要證明 1.我們先簡單地從三個點入手 包括原點 面積s oab sabcd s oad s obc sabcd y...

求多邊形的面積

多邊形的面積求法 在草稿紙上面我們,我們就把它考慮成組合圖形去處理,所以我們是把他不斷的拆分,因為我們是不可以直接去求它的面積的。那麼在我們的電腦裡面,我們用 怎麼去去求面積呢?因為我們不是提前知道他們的組合圖形,所以我們不知道怎麼樣去求,或者說按照什麼圖形的面積求法,去求。當邊數為3的時候,我們知...