我有SVG paths-like syntax中指定的2D闭合矢量路径 - 即这些路径包括直线和各种贝塞尔曲线。有没有像小巧,漂亮的东西;离散库(最好用C语言,Java语言或Ruby语言,但如果这个库很干净且易于使用,那么任何语言都会这样做),允许用这些路径进行联合,交集和减法等布尔运算?
到目前为止我发现的内容包括:
所以,问题是,是否还有其他任何小的,好的&浮动的简单库可以处理类似SVG的路径上的布尔操作吗?
答案 0 :(得分:5)
也许我错过了一些东西,但java.awt.geom
包中的课程不适合你的需要吗?它们处理二维形状; Area
类专门处理布尔运算:
Area
对象存储和操作二维空间的封闭区域的与分辨率无关的描述。Area
个对象可以转换,可以执行各种操作 与其他Area
对象组合时的构造区域几何(CAG)操作。 CAG操作包括区域加法,减法,交集和异或。
答案 1 :(得分:2)
你可以JavaScript Clipper,Angus Johnson's Clipper的端口(用Delphi,C ++,C#和Python编写),而后者又基于Bala R. Vatti's clipping algorithm。它能够处理所有多边形情况,包括自相交的情况。
请记住,lib只占用多边形,所以any curves need to be polygonized首先