我是靠谱客的博主 辛勤长颈鹿,最近开发中收集的这篇文章主要介绍计算几何-计算多边形面积(模板),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 提起平面多边形,最容易想到的就是三角形了。对于简单的三角形面积问题大家一定不陌生!其中就编程而言,精确度最高的当属通过叉积(也称内积)来求解。那么是不是平面多边形也可以通过将多边形分割成一个个的三角形进而求解呢?

      回答是肯定的,以梯形ABCD为例,S梯形ABCD=S三角形ABC+S三角形ACD  。

       同样对于多边形来说我们也可以通过同样的分割三角形法来实现多边形面积的求解。但是,我们需要做一下排序的预处理。算法执行如下:

      将多边形的所有顶点按逆时针排序(避免叉积求三角形面积时符号的正负上出问题)。假定排序后的顶点序列为V0,V1,V2,V3,...,Vi,...Vn,那么多边形的面积就是Sigma(S三角形V0ViV(i+1)),其中1<=i<n-1。

      确定一个顶点,然后遍历其他所有的边(每条边有两个点,这样就构成了三个点一个三角形,从而计算出每一块三角形的面积)

[c-sharp]  view plain  copy
  1. //顶点存储   
  2. typedef struct Node{  
  3.      double x,y;  
  4. }Point;  
  5. Point p[101];  

[c-sharp]  view plain  copy
  1. //结合叉积求多边形面积   
  2. double cross(Point a,Point b,Point o){  
  3.     return (a.x-o.x)*(b.y-o.y)-(b.x-o.x)*(a.y-o.y);  
  4. }  
  5.   
  6. double area(int n){  
  7.     double res=0.0;  
  8.     for(int i=0;i<n-1;i++)  
  9.        res+=cross(p[i],p[i+1],p[0]);  
  10.     return res/2.0;  
  11. }  

                                                           

最后

以上就是辛勤长颈鹿为你收集整理的计算几何-计算多边形面积(模板)的全部内容,希望文章能够帮你解决计算几何-计算多边形面积(模板)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部