布尔运算在多边形上

时间:2014-06-15 16:33:16

标签: javascript clipping

我目前正在实施图形软件,它可以绘制不等式(或不等式系统),如f(x,y)

我找到了等值线f(x,y)= g(x,y)的近似多边形,但现在我面临着找到多边形的问题,它近似于区域。

我找到了优秀的Javascript库http://sourceforge.net/projects/jsclipper/,但是我无法正确使用它。

例如,如果我想找到两个多边形的XOR,如何使用它,它代表半径1和2的圆(一个多边形位于另一个多边形内,所以我想找到一个圆外的区域和另一个圆内的区域)。 / p>

1 个答案:

答案 0 :(得分:1)

  

例如,如果我想找到两个多边形的XOR,如何使用它,它代表半径为1和2的圆(一个多边形位于另一个多边形内,所以我想找到一个圆外的区域和另一个内的

首先,JSClipper(Clipper的Java翻译)仅接受多边形作为具有整数坐标的展平路径。因此,您需要使用合适的因子(取决于所需的精度)来放大圆弧半径,并使用PointsOnEllipse算法生成展平路径。

然后,假设一个圆圈位于另一个圆圈内,并且这个内圆圈代表一个洞“'对于外部圆形多边形,其方向将需要与外部多边形相反(如here所述)。

JSClipper的布尔操作的解决方案将保持为平坦路径,但是您指定的路径上的XOR操作的解决方案将是这些完全相同的路径(即未更改),因为这两个路径仍将是表示返回的多边形区域的外轮廓和​​内轮廓。

完成任何布尔操作后,您需要反转任何初始多边形缩放以导出表示展平路径的浮点坐标。

最后,没有简单的方法可以从扁平路径重建圆形/椭圆形半径和原点等。