多边形重心问题 java

16 篇文章 0 订阅
7 篇文章 0 订阅

多边形重心问题 java

看题目 点这里
题目描述:
描述
在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形;
如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;

输入
第一行有一个整数0



import java.util.Scanner;

public class Main {
    public static void main(String args[]){
        int n=0;
        Scanner s=new Scanner(System.in);
        n=s.nextInt();
        for(int i=0;i<n;i++){
            int n1=s.nextInt();
            double data[][]=new double[n1][2];
            double sc=0;
            double sx=0;
            double sy=0;
            for(int j=0;j<n1;j++){
                data[j][0]=s.nextDouble();
                data[j][1]=s.nextDouble();
            }           
             for (int j = 1; j <= n1; j++) {  
                    double temp=(data[j % n1][0]*data[j-1][1]-data[j % n1][1]*data[j -1][0])/2.0;  
                    sc=sc+temp;
                    sx=sx+temp*(data[j % n1][0]+data[j-1][0])/3;
                    sy=sy+temp*(data[j % n1][1]+data[j-1][1])/3;
                }  

          //result取绝对值  
             if (sc - 0 < 0.0000001) {  
                    System.out.println("0.000 0.000");  
                    continue;  
                }  
                    System.out.print(String.format("%.3f %.3f\n",sc,(sx + sy)/sc));  

        }

    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值