SVG 路径字符串上的布尔运算



我遇到了一个概念上困难的问题。

简而言之,我需要找到通过不同布尔运算组合的两个向量路径的向量路径。如并集、差分、交集、减法等。如果我能像 Canvas 那样做它 globalCompositeOperational 就好了。

我到底该怎么做呢?

有一个 JavaScript 库,允许在路径是多边形的情况下对 SVG 路径进行布尔运算。使用足够高的采样,贝塞尔可以多边形化为如此高的质量,以至于视觉结果几乎与真实曲线相同。

该库被称为JavaScript Clipper,它是Angus Johnson的Clipper(用Delphi,C++,C#和Python编写)的移植,而Cutper又基于Bala R. Vatti的clipping算法。它能够处理所有多边形情况,包括自相交的情况。该库具有许多额外的功能,包括所有布尔运算和用于减少节点计数的节点减轻算法。

如果您需要创建新的几何形状,这些形状由许多其他相交、联合等形状组成,则必须在脚本中自行处理,或使用矢量图形编辑器(Inkscape 和 Illustrator 都提供此功能)为您执行此操作。

globalCompositeOperation的等价物是SVG中的feComposite filter。下面是一个在 Opera 中工作的画布中看起来与此类似的示例。

最新更新