zoukankan      html  css  js  c++  java
  • 求多边形面积

    杭电2036

    开始想到用三边形法求面积

    三角形海伦面积公式如下:

    假设在平面内,有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:  

    S=sqrt(p(p-a)(p-b)(p-c))

    公式中的p为半周长: p=(a+b+c)/2 

    #include <stdio.h>
    #include <math.h>
    double c(double i,double j,double x,double y,double m,double n)
    {
    double s,p,a,b,c;
    a=sqrt((x-i)*(x-i)+(y-j)*(y-j));
    b=sqrt((m-x)*(m-x)+(n-y)*(n-y));
    c=sqrt((m-i)*(m-i)+(n-j)*(n-j));
    p=(a+b+c)/2;
    s=sqrt(p*(p-a)*(p-b)*(p-c));
    return s;
    }
    int main()
    {
            int i,n;
            double a[10024],sum;
              while(scanf("%d",&n)!=EOF)
                   {
                         sum=0;
                         if(n==0) break;
                          for(i=0;i<2*n;i++)
                                 {
                                         scanf("%lf",&a[i]);
                                     }
                         for(i=2;i<2*n-4;i=i+2)
                               {
                                       sum+=c(a[0],a[1],a[i],a[i+1],a[i+2],a[i+4]);
                                 }
                      printf("%.1lf ",sum);
                     }
               return 0;
    }

    然后肯定不能AC了,第一太复杂了,还有就是多边形要是是那种凹凸边形,这方法根本行不通;

    还有一个方法,有个公式

    已知各点坐标,按顺时针或逆时针(X1,Y1),(X2,Y2)........(Xn,Yn);

    S=1/2[(X1*Y2-X2*Y1)+(X2*Y3-Y2*X3)..............+(Xn*Y1-X1*Yn)];

    #include <stdio.h>
    int main()
    {
              int i,n;
              double a[1024],b[1024],sum;
                 while(scanf("%d",&n)!=EOF)
                   {
                       if(n==0) break;
                         sum=0;
                      for(i=0;i<n;i++)
                        {
                               scanf("%lf %lf",&a[i],&b[i]);
                           }
                     for(i=0;i<n-1;i++)
                      {
                           sum=sum+(a[i]*b[i+1]-a[i+1]*b[i]);
                      }
                     sum=sum+(a[n-1]*b[0]-a[0]*b[n-1]);
                        printf("%.1lf ",sum/2);
                  }
    return 0;
    }

  • 相关阅读:
    新安装的Apache和php,测试可以解析phpinfo,但是无法打开drupal网站
    Drupal7安装注意事项
    drupal7 为视图添加 过滤标准 内容类型
    Drupal网站报错:PDOException: in lock_may_be_available()
    窗口聚合函数与分组聚合函数的异同
    Linux环境下段错误的产生原因及调试方法小结(转)
    gzip 所使用压缩算法的基本原理(选摘)
    InfluxDB使用纪录
    子网掩码解释(转)
    列存的压缩原理学习
  • 原文地址:https://www.cnblogs.com/liuming1115/p/4498811.html
Copyright © 2011-2022 走看看