博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数学:知道n边形各顶点坐标,求面积
阅读量:6674 次
发布时间:2019-06-25

本文共 1022 字,大约阅读时间需要 3 分钟。

hot3.png

方法一:

float   area_of_polygon(int   vcount,float   x[],float   y[]) 

    int   i; 
    float   s; 
    if   (vcount <3)   return   0; 
    s=y[0]*(x[vcount-1]-x[1]); 
    for   (i=1;i <vcount;i++) 
          s+=y[i]*(x[(i-1)]-x[(i+1)%vcount]); 
    return   s/2; 
    }

 

方法二:

算法版大牛海星原创

public   float   area_of_polygon(Point[]   APoints) 

        if   (APoints.Length   <   3)   return   0; 
        float   s   =   APoints[0].Y   *   (APoints[APoints.Length   -   1].X   -   APoints[1].X); 
        for   (int   i   =   1;   i   <   APoints.Length;   i++) 
                s   +=   APoints[i].Y   *   (APoints[(i   -   1)].X   -   
                        APoints[(i   +   1)   %   APoints.Length].X); 
        return   System.Math.Abs(s   /   2); 
}       
private   void   button1_Click(object   sender,   EventArgs   e) 
        Text   =   area_of_polygon(new   Point[]   {   
                new   Point(0,   0),   new   Point(0,   10), 
                new   Point(10,   10),   new   Point(10,   0)}).ToString(); 
}

 

方法三:

生成多边形,其实就是指定这些顶点的顺序 

在确定了顺序后,   假定是p0,   p2,   ....,   pn-1 
那么多边形的面积可以简单的按照如下公式计算 
float   area   =   0; 
for   (int   i=0,   j=1;   i <n;   i++,   j++) 
      j   =   j   %   n; //因为当j=n时候,需要让j回归1
      area   +=   p[i].x*p[j].y   -   p[i].y*p[j].x; 
area   =   fabs(   area   *   0.5);//取1/2再取绝对值,因为求出来的面积值可能为负(各顶点顺时针排列的时候)

转载于:https://my.oschina.net/u/2400412/blog/498564

你可能感兴趣的文章
阿里云马劲:保证云产品持续拥有稳定性的实践和思考
查看>>
Objective-C中浮点数表示时精度的小坑
查看>>
JavaScript 工作原理之一-引擎,运行时,调用堆栈(译)
查看>>
python终端操作models
查看>>
前端面试自查
查看>>
解读 Node 核心模块 Stream 系列一( Readable )
查看>>
webpack入门笔记——热替换
查看>>
拒绝一针串到底式的参数类
查看>>
Wakatime 不升级会员也能查看历史数据了!
查看>>
优雅的实现CALayer的"AutoLayout"的两种方案
查看>>
从双十一看阿里云安全的“创世纪”——采访阿里云安全掌门人肖力有感
查看>>
基于django的视频点播网站开发-step4-首页功能
查看>>
告别李国庆,19岁当当的思变与求变
查看>>
汽车电商纷纷折戟,新零售能唱好这出戏吗?
查看>>
localStorage
查看>>
Runtime 从NullSafe源码看消息转发 机制
查看>>
JavaScript 论代码执行上下文
查看>>
这应该是你们想要的 DOS 命令
查看>>
可不可以设计出一个完美的分布式系统?
查看>>
阿里云移动端播放器高级功能---直播时移
查看>>