三角形重心:(x1+x2+x3)/3,(y1+y2+y3)/3 這是特殊情況,各點的質量相等
多邊形 x=( sigma )( xi*mi )/sumarea
y=( sigma )( yi*mi )/sumarea
先把多邊形變成多個三角形,分別求出mi(有點像面縮點),然後得到新的點的座標。。。
view code
1 #include2 #include3 #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 演算法一 在講該演算法時,先要明...