ACM-数学知识-计算几何-求多边形的重心坐标
程序员文章站
2022-04-01 14:48:19
...
#求多边形的重心的坐标
下面代码的输入是:
第一行:N个顶点
第2~N+1行:第i个顶点的x坐标 第i个顶点的y坐标
==输出:==得到的重心的x坐标和y坐标
#include <iostream>
#include <cstdio>
using namespace std;
int T, N, x[3], y[3];
double sumx, sumy, sumarea;
int main() {
scanf("%d", &T);
while(T--){
sumx = sumy = sumarea = 0.0;
scanf("%d", &N);
scanf("%d %d %d %d", x, y, x+1, y+1);
N -= 2;
while(N--){
scanf("%d %d", x+2, y+2);
//求新添加的三角形的面积
double s = ((x[1] - x[0]) * (y[2] - y[0]) - (x[2] - x[0]) * (y[1] - y[0])) / 2.0;
//求∑x[i]*s[i]和∑y[i]*s[i]
sumx += ((x[0] + x[1] + x[2]) * s);
sumy += ((y[0] + y[1] + y[2]) * s);
//求总面积
sumarea += s;
x[1] = x[2];
y[1] = y[2];
}
printf("%.2lf %.2lf\n", sumx / sumarea / 3, sumy / sumarea / 3);
}
return 0;
原文链接:https://blog.csdn.net/qq_26891045/article/details/51464782
上一篇: Jspxcms 5.0发布,国内开源的Java CMS
下一篇: 原生JS获取HTML样式并修改