多边形求面积,

来源:互联网 发布:网络消费 坑 编辑:程序博客网 时间:2024/05/17 03:55

这个程序很值得一博。

昨天一位学地质的高中同学问我写个程序求多边形面积,因为他说看到excel就烦。正好前段时间在csdn上看到一个帖子求多边形面积,也想到了一个算法,于是写了这个程序。

 

算法描述:

 

一个多边形的面积可以由这样两个系列的梯形来计算,以凸多边形举例,在图形上方的一系列边和其在x轴的投影组成一系列梯形T1,图形下方类似的组成梯形系列T2, T1的面积 - T2的面积就是多边形的面积。 对于凹多边形,上方,下方的关系会有所变化,可以这么定义,如果以某顺时针(或逆时针)遍历各边,任意定义第一条边为上或下,对于其后所遍历的边,如果x坐标折回,则认为它为下方的边。这就从几何上证明了这种方法是对的。

 

 

程序实现:

 

顺序存储多边形各点,(x1, y1), (x2, y2), ... , (xn, yn)

任意边( (xi, yi),  (xi+1, yi+1)) 是否是上边,所投影形成的梯形符号,与 xi - xi+1的符号的关系是一致的,算法就很简单了。

 

公式: A = sum { (yi + yi+1) * (xi - xi+1) / 2   :  0 < i < n  }  +  (yn + y1) * (xn - x1) / 2;