假设我有数据来呈现两个基于Bezier的重叠形状,它们是重叠的,显示在svg或画布上(在哪里并不重要)。我想计算由两个形状合并产生的形状的轮廓,这样我就有了一个干净(新)轮廓和尽可能少的节点和句柄。我希望达到像 adobe illustrator 这样的矢量程序通过 Pathfinder〉Add 提供的效果或字体程序 glyphs 与 * 删除重叠 *。例如:https://helpx.adobe.com/illustrator/using/combining-objects.html
有可能有一个库或一个概念来完成这个任务吗?我正在浏览器中使用javascript,但是任何其他关于如何进行这样的计算的源代码也会有帮助。
同样重要的是,这个计算发生在渲染之前,对渲染结果(svg/canvas)是不可知的。
在下面的插图中,左边是输入形状,右边是预期结果。我有数据,意味着所有的节点和句柄(从贝塞尔曲线),我想计算右侧的红色(节点)和绿色点(句柄)的坐标。
1条答案
按热度按时间xpcnnkqh1#
特别是它类似Boolean operations的unite()来合并路径元素,语法如下:
下面的示例还使用了Jarek Foksa的pathData多边形填充。
示例:联合路径:
x一个一个一个一个x一个一个二个一个x一个一个三个一个
可选:路径规格化(使用getPathData()多边形填充)
您可能还需要转换svg原语(
<rect>
,<circle>
,<polygon>
),就像大写字母A中的水平笔划一样。pathData polyfill提供了一种标准化svg元素的方法。
这个标准化将输出一个
d
属性(对于每个选择的svg子元素),该属性只包含一个简化的立方体路径命令集(M,C,L,Z)-所有这些命令都基于绝对坐标。我不会说paper.js有太多的教程或详细的示例,但您可以查看pathItem的参考以查看所有选项。
另请参阅:以编程方式减去SVG路径