尤拉定理:在任何乙個規則球面地圖上,用r
rr記區域個 數,v
vv記頂點個數 ,e
ee記邊界個數 ,則r+v
−e=2
r+ v- e= 2
r+v−e=
2。r =e
−v+2
r=e-v+2
r=e−v+
2 已經存在n
nn個點 n
nn任意四個點可以有乙個交點cn4
c_n^4
cn4
v =n
+cn4
v=n+c_n^4
v=n+cn
4每兩個點有一條邊cn2
c_n^2
cn2
一條線段會被乙個交點分成兩段,所以x
xx條直線的交點會多分出來x
xx條線段,利用v
vv可以算出e
ee每四個點的交點就會在原來2條線斷的基礎上又增加兩個線段2cn
42c_n^4
2cn4e=c
n2+2
cn
4e=c_n^2+2c_n^4
e=cn2
+2cn
4r =e
−v+2
=cn2
−cn4
−n+2
r=e-v+2=c_n^2-c_n^4-n+2
r=e−v+
2=cn
2−c
n4−
n+2
多邊形外面的區域不算需要−1-1
−1a ns
=r−1
=e−v
+2=c
n2−c
n4−n
+1
ans=r-1=e-v+2=c_n^2-c_n^4-n+1
ans=r−
1=e−
v+2=
cn2
−cn4
−n+
1
#include
#define fi first
#define se second
#define mp make_pair
using
namespace std;
typedef
long
long ll;
typedef pair<
int,
int> pii;
const
double eps =
1e-8
;const
int ninf =
0xc0c0c0c0
;const
int inf =
0x3f3f3f3f
;const ll mod =
1e9+7;
const ll n =
1e6+5;
ll qpow
(ll x,ll y)
return ans;
}ll c
(ll x,ll y)
ll res=1;
for(ll i=
1;i<=y;i++
)return ans*
qpow
(res,mod-2)
%mod;
}int
main()
python 計算兩個多邊形的IOU
計算兩個多邊形的iou。可以是不同類的多邊形,如乙個矩形和乙個三角形 也可以是兩個同類的多邊形。import cv2 import math from skimage.draw import polygon from skimage.feature import peak local max imp...
計算兩個多邊形的重疊面積
include include include using namespace std const int maxn 300 const double eps 1e 6 位置標識 int dcmp double x struct point double cross point a,point b,...
求兩個多邊形的交面積(模板)
別人的部落格 多邊形的交,多邊形的邊一定是要按逆時針方向給出 還要判斷是凸包還是凹包,呼叫相應的函式 面積並,只要和面積減去交即可 include using namespace std const int maxn 300 const double eps 1e 8 int dcmp double...