计算带孔闭合曲线面积的算法

Agn*_*ian 0 algorithm graphics geometry curve

我们的应用程序允许用户追踪由直线和圆弧组成的闭合曲线。这些闭合曲线中可以有孔,孔也由直线和圆弧组成。像这样的东西:

在此处输入图片说明

弧段和直线段的数量、位置、方向、直径和扫描角/角度是可变的。

如何计算不包括孔面积的闭合曲线内的面积?我知道如何通过用一系列线段来逼近弧线来实现这一点。但是有没有更好、更准确的算法来做到这一点?

AnT*_*AnT 5

  1. 一般方法很简单:您的区域面积计算为外部轮廓面积减去孔面积。这解决了“漏洞”问题,因此我们可以忘记漏洞。

    现在的问题是计算“广义多边形”的面积:边缘是直线段或弧线的伪多边形。

  2. 普通的鞋带公式会给你任何普通多边形的面积。但是由于我们正在处理“广义多边形”,由于弧边,该公式不能立即适用。

    然而,鞋带公式背后的基本思想也可以适应这种情况。

    鞋带公式基本上计算三角形的带符号面积的总和,三角形OAB由点O(0,0)和点A以及BAB讨论的多边形的每条边构成。在这种情况下,面积的符号性意味着面积在OAB逆时针三角形时为正,否则为负。有关多边形面积计算如何工作的说明,请参见此处

    为了使这个公式适合您的情况,您必须找到一种方法来计算“广义三角形”的带符号面积:一个伪三角形OAB,其中OAOB是直线段,而AB可以是弧。这是一个非常简单的问题,完全可以解决。

这基本上就是你需要做的所有事情。整个问题被简化为一组基本问题:计算上述“广义三角形”的有符号面积。