这个程序很值得一博。
昨天一位学地质的高中同学问我写个程序求多边形面积,因为他说看到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;