zoukankan      html  css  js  c++  java
  • 任意多边形的重心

    http://acm.hdu.edu.cn/showproblem.php?pid=1115

    思路:转换为求三角形的重心。从第一个顶点出发,分别链接i,i+1形成三角形,分别求出每个三角形的面积,总面积之和为各部分之和。根据物理公式n个点的质量是mi,则重心是:X=(x1*m1+x2*m2+...xn*mn)/(m1+m2+...+mn);Y=(y1*m1+y2*m2+...yn*mn)/(m1+m2+...+mn);三角形的重心是x=(x1+x2+x3)/3,y=(y1+y2+y3)/3。

    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #define maxn 105
    typedef struct
    {
        double x,y;
    }node;
    double get_area(node a,node b,node c)
    {
       return (a.x*b.y+c.x*a.y+b.x*c.y-c.x*b.y-b.x*a.y-a.x*c.y)/2;
    }
    int main()
    {
        //freopen("in.txt","r",stdin);
        int t,n;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&n);
            node a,b,c;
            scanf("%lf%lf",&a.x,&a.y);
            scanf("%lf%lf",&b.x,&b.y);
            double X=0,Y=0;
            double Area=0,area;
            for(int i=2;i<n;i++)
            {
                scanf("%lf%lf",&c.x,&c.y);
                double x=a.x+b.x+c.x;
                double y=a.y+b.y+c.y;
                area=get_area(a,b,c);
                Area+=area;
                X+=x*area;
                Y+=y*area;
                b=c;
            }
            printf("%.2lf %.2lf
    ",X/Area/3,Y/Area/3);
        }
        return 0;
    }
  • 相关阅读:
    MYSQL索引使用
    事务的概念是什么,有哪些基本属性?
    springboot和springmvc的区别
    List、Map、Set的区别与联系
    MyBatis-动态SQL
    MyBatis-映射文件
    MyBatis操作数据库及全局配置文件
    Jmeter的基本使用
    MySQL索引优化
    MySQL索引
  • 原文地址:https://www.cnblogs.com/lyf123456/p/3749296.html
Copyright © 2011-2022 走看看