“ 面积是轮廓基础的几何特征之一,计算轮廓面积是常见的几何算法话题。”
-
图形几何之美系列:面积计算之梯形投影求
计算轮廓面积的方法有很多,很多方法或公式的思想来源是微分和积分思想。如各边向原点投影得到若干三角形、各边向坐标轴投影得到若干梯形、Newell向量法,以及推导出的相关公式。
本文就梯形投影求和方法进行介绍。
1.前言
一种常用的是微积分思路的分段求和办法是将组成轮廓的每条线段与X轴或Y轴进行有向投影,轮廓边线与X轴或Y轴的投影之和即为轮廓的有向面积。
2.梯形投影求和

上图中轮廓共有7条边,每条边与Y轴投影,投影面积有向,每个投影均为梯形,梯形有向面积为:
double areaThis = (abs(d0X) + abs(d1X)) * (d1Y - d0Y) * 0.5;
其中第0、1、6的投影为正,第2、3、4、5的投影为负,累积即为轮廓面积(绿色填充部分)。
如上所示,如果关心面积的正负时,一般将轮廓移到第一或第四象限再求面积。满足上述条件时,逆时针轮廓的面积为正,顺时针轮廓的面积为负。
如果出现轮廓跨Y轴的情况,一种简单的处理办法是将轮廓平移到Y轴右侧,此时面积符号为逆正顺负(当然平移到Y轴左侧也可以,如果那样所计算面积的符号为“顺正逆负”)。

但是这种方法可能会出现精度误差较大,从而导致面积值和符号计算错误的情况,究其原因是因为对轮廓做了偏置处理,而这种处理会带来误差,偏置的距离越大误差可能越大。
提示:
精度和误差的话题可参考作者CSDN博文:关于float浮点值二进制存储和运算精度损失的话题。
可以基于数学方案进行公式推导以简化处理,从而保持较高的精度。
3.公式推导

为便于理解,我们以平面多边形情况为例进行说明,上图多边形p0-p1边跨越Y轴,与Y轴交于m点,其对Y轴的投影面积分为两部分:p0-m、m-p1分别对Y轴的投影,面积分别为S1和S2,如下图所示,

S1和S2面积计算公式如下:

S1+S2即为:

提示:
关于详细的公式推导可关注作者微信公众号文章。
4.写在后面
可基于上述公式进行代码实现,对于各种象限和跨象限轮廓情况的单元测试均通过。有疑问可与作者联系。
-
图形几何之美系列:面积计算之梯形投影求和
欢迎关注,图形几何之美系列 将继续更新......