zoukankan      html  css  js  c++  java
  • HDU 2036 求任意多边形面积向量叉乘

    三角形的面积可以使用向量的叉积来求;

    对于 三角形的面积 等于: [(x2 - x1)*(y3 - y1)- ( y2 - y1 ) * ( x3 - x1 )  ] / 2.0

    但是面积是有方向的,对于一个多边形,我们任意选取一点(通常选取 0,0),和多边形的定点相连接,

    对于顺序排列的顶点,我们求原点和一对相邻的顶点组成的三角形的叉积,将这些叉积的一半累加起来

    由于叉积的方向,在多边形外面的部分会抵消,这样就是多边形的面积了。

    最后对结果要取绝对值,因为算出来的叉积有可能是负数;

    附上例题:

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        int n;
        while(scanf("%d",&n)!=EOF)
        {
            double s=0;
            int x[100],y[100],i;
            if(n==0)
                break;
            for(i=0;i<n;i++)
            {
                scanf("%d",&x[i]);
                scanf("%d",&y[i]);
            }
            for(i=0;i<n;i++)
                s+=((double)x[i]*y[(i+1)%n]-(double)x[(i+1)%n]*y[i])/2;
            s=fabs(s);
            printf("%.1lf
    ",s);
        }
        return 0;
    }
  • 相关阅读:
    Python 模块管理
    Python 练习: 计算器
    Linux 系统性能分析工具 sar
    Python 正则介绍
    Python ConfigParser 模块
    Python logging 模块
    Python hashlib 模块
    Python sys 模块
    09 下拉框 数据验证
    08 条件排序
  • 原文地址:https://www.cnblogs.com/by-1075324834/p/5496783.html
Copyright © 2011-2022 走看看