我有二维闭合矢量路径,在
SVG paths-like syntax中指定,即这些路径包括直线和各种贝塞尔曲线.有什么像小,漂亮&离散库(最好在C,Java或Ruby中,但是如果这个库是干净且易于使用的,则可以使用任何语言),允许使用这些路径执行联合,交集和减法等布尔运算?
到目前为止,我发现包括:
>巨大而昂贵的商业矢量图形产品(如Autodesk AutoCAD或Adobe Illustrator)可以使用某种API或脚本进行布尔二维路径操作来调用,这显然是我的目的.
> Inkscape开发的内部lib2geom库,缺少文档,绑定,有一些编译问题,似乎被用于除了Inkscape本身以外的任何项目,看起来相当复杂.
> CGAL是一个巨大而相当复杂的计算几何库,它可以在非常奇怪的对象空间中工作(即,您有模糊的混合模式,命令式样式函数来对这些模板化数据结构等进行操作),并不似乎在C旁边有其他语言的固定绑定.与CGAL的Python绑定似乎被放弃,对我来说看起来不是很友好.
> JTS似乎是以GIS为中心的,只处理直线,而我需要处理像SVG一样的贝塞尔曲线.
所以,问题是,还有其他小的,好的&容易的库浮动以处理类似SVG的路径上的布尔运算?
解决方法
也许我错过了一些东西,但java.awt.geom程序包中的类是否适合您的需要?他们处理二维形状;
Area
类专门处理布尔运算:
An
Area
object stores and manipulates a resolution-independent description of an enclosed area of 2-dimensional space.Area
objects can be transformed and can perform varIoUs
Constructive Area Geometry (CAG) operations when combined with otherArea
objects. The CAG operations include area addition,subtraction,intersection,and exclusive or.