HDU1115 幾何 多邊形重心

2022-04-21 13:21:13 字數 822 閱讀 4484

三角形重心:(x1+x2+x3)/3,(y1+y2+y3)/3 這是特殊情況,各點的質量相等

多邊形 x=( sigma )( xi*mi )/sumarea

y=( sigma )( yi*mi )/sumarea

先把多邊形變成多個三角形,分別求出mi(有點像面縮點),然後得到新的點的座標。。。

view code

1 #include2 #include

3 #include4 #include5

const

int maxn = 1000005;6

struct

nodea[ maxn ];

9struct

node2b[ maxn ];

12double

crossprod(node a, node b, node c)

15int

main()

24double sumarea=0;25

double

ans_x,ans_y;

26int cnt=0

;27 ans_x=ans_y=0;28

for( int i=2;i)

37for( int i=0;i)

41 ans_x/=(sumarea*3.0

);42 ans_y/=(sumarea*3.0

);43 printf("

%.2lf %.2lf\n

",ans_x,ans_y);44}

45return0;

46 }

hdu1115(求多邊形的重心)

和思路 質量集中在頂點上 n個頂點座標為 xi,yi 質量為mi,則重心 x xi mi mi y yi mi mi 特殊地,若每個點的質量相同,則 x xi n y yi n 質量分布均勻 特殊地,質量均勻的三角形重心 x x0 x1 x2 3 y y0 y1 y2 3 三角形面積公式 s x2 ...

HDUoj 1115 求多邊形重心

題解 多邊形n個定點,分割成n 2個三角形,給每個三角形求出重心,因為每個三角形的面積不相同,所以重心的質量不一樣,問題轉換為求n 2個質量不均勻的點的重心。include include include includeusing namespace std const int maxn 1e6 5...

計算幾何 多邊形的重心

1.1 累加和求重心 設平面上有n 個離散資料點 xi yi i 1,2,n 其 多邊形重心g x1,y1 為 這是求多邊形最簡單直觀的方法。可以直接利用離散數 據點的x,y座標就能求圖形重心。但是缺陷在於沒有對離散 資料點所圍圖形做任何處理和分析,精度不夠。1.2 演算法一 在講該演算法時,先要明...