zoukankan      html  css  js  c++  java
  • 谁能告诉我为什么sum_area输出总是0(多边形重心问题)

    多边形重心问题

    时间限制:3000 ms  |  内存限制:65535 KB
    难度:5
     
    描述
    在某个多边形上,取n个点,这n个点顺序给出,按照给出顺序将相邻的点用直线连接, (第一个和最后一个连接),所有线段不和其他线段相交,但是可以重合,可得到一个多边形或一条线段或一个多边形和一个线段的连接后的图形; 
    如果是一条线段,我们定义面积为0,重心坐标为(0,0).现在求给出的点集组成的图形的面积和重心横纵坐标的和;
     
    输入
    第一行有一个整数0<n<11,表示有n组数据;
    每组数据第一行有一个整数m<10000,表示有这个多边形有m个顶点;
    输出
    输出每个多边形的面积、重心横纵坐标的和,小数点后保留三位;
    样例输入
    3
    3
    0 1
    0 2
    0 3
    3
    1 1
    0 0
    0 1
    4
    1 1
    0 0
    0 0.5
    0 1
    样例输出
    0.000 0.000
    0.500 1.000
    0.500 1.000

    #include<iostream>
    #include<cmath>
    #include<vector>
    using namespace std;

    struct Poit
    {
    double x;
    double y;
    };

    double Area_3(Poit C,Poit A,Poit B);

    int main()
    {
    int m;
    cin>>m;

    for(int i=0;i<m;i++)
    {
    int n;
    cin>>n;

    vector<Poit>a;
    Poit G={0,0}; //G为重心
    double sum_area=0; //总面积
    double Gxy; //重心横纵坐标和

    for(int j=0;j<n;j++)
    {
    int x0,y0;
    cin>>x0>>y0;
    Poit p={x0,y0};
    a.push_back(p);
    }
    for(int k=0;k<n;k++)
    {
    G.x=G.x+a[k].x;
    G.y=G.y+a[k].y;
    }

    G.x=G.x/n;
    G.y=G.y/n;
    Gxy=G.x+G.y;

    a.push_back(a[0]); //最后的和0重和;
    for(int h=0;h<n;h++) //求总面积
    {
    sum_area=sum_area+Area_3(a[h],a[h+1],G);
    }

    cout<<sum_area<<" "<<Gxy<<endl;
    }

    return 0;

    }

    double Area_3(Poit C,Poit A,Poit B) //为了保证角A为锐角;B为重心;
    {
    double a,b,c;
    double area;
    a=sqrt(pow((B.x-C.x),2)+pow((B.y-C.y),2));
    b=sqrt(pow((A.x-C.x),2)+pow((A.y-C.y),2));
    c=sqrt(pow((A.x-B.x),2)+pow((A.y-B.y),2));

    double cos_A=(pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c);
    double sin_A=abs(sqrt(1-pow(cos_A,2)));
    area=0.5*b*c*sin_A;
    return area;

    }

  • 相关阅读:
    Kafka实战-简单示例
    Kafka实战-Kafka Cluster
    Kafka实战-入门
    高可用Hadoop平台-Hue In Hadoop
    apt-get install 出问题怎么办?
    E: Unable to locate package clang-7 E: Unable to locate package clang++-7 E: Couldn't find any package by regex 'clang++-7'
    LaTeX多图合并代码示例(subfigure)
    Pytorch--Dropout笔记
    命令行神器之argparse使用笔记
    【转载】PyTorch系列 (二):pytorch数据读取
  • 原文地址:https://www.cnblogs.com/xiaovlxx/p/4506896.html
Copyright © 2011-2022 走看看