多邊形內部兩兩連線最多分出的區域數公式

2021-10-10 06:28:40 字數 1680 閱讀 9397

尤拉定理:在任何乙個規則球面地圖上,用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

2cn4​e=c

n2+2

cn

4e=c_n^2+2c_n^4

e=cn2​

+2cn

4​r =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...