SVG /矢量图形对象的布尔运算(联合,交集,减法)

我有2D封闭矢量路径,以类似SVG路径的语法指定-

即这些路径包括直线和各种Bezier曲线。是否有类似小型,精巧且离散的库(最好使用C,Java或Ruby,但如果此库干净且易于使用,则任何语言都可以使用)允许使用这些路径进行布尔运算(例如,并集,交集和减法)?

到目前为止,我发现的内容包括:

  • 可以使用某种API调用或编写脚本来执行布尔2D路径操作的庞大而昂贵的商业矢量图形产品(例如Autodesk AutoCAD或Adobe Illustrator),对于我而言,这显然是过大的选择。
  • Inkscape开发的内部lib2geom库缺少文档,绑定,存在一些编译问题,除了Inkscape本身之外,似乎没有其他项目使用它,并且看起来相当复杂。
  • CGAL是一个庞大而又相当复杂的计算几何库,它在相当奇怪的对象空间中工作(即,您疯狂地混合了模板,命令式样式函数来对这些模板化的数据结构进行操作等),并且似乎没有对C ++以外的其他语言有健全的约束。与CGAL的Python绑定似乎已被放弃,对我来说看起来并不友好。
  • JTS似乎以GIS为中心,只处理直线,而我需要处理类似SVG的Bezier曲线。

因此,问题是,是否还有其他小的,简单易用的库在处理类似SVG的路径上的布尔运算?

回答:

也许我缺少了一些东西,但是java.awt.geom包中的类不适合您的需求吗?它们处理二维形状。在Area类布尔运算专门处理:

一个Area对象存储和操作的2维空间中的封闭区域的与分辨率无关的描述。Area与其他Area对象结合使用时,可以对对象进行变形并执行各种“构造面积几何(CAG)”操作。CAG操作包括区域加法,减法,交集和异或。

以上是 SVG /矢量图形对象的布尔运算(联合,交集,减法) 的全部内容, 来源链接: utcz.com/qa/429234.html

回到顶部