我正在paper.js中的一个项目中,我需要根据交集,差异和另外两个工会的联合来创建新路径。我做了一些挖掘,发现了插值一个三次贝塞尔样条的数学函数,但我想知道是否有任何JavaScript库可以进行svg-like向量算术。如果有的话,我会复制inkscape的,并将其转换为JavaScript,但你永远不知道。 无论如何,用于内插立方贝济耶数学函数如下:paper.js工会区别和交集
Pointx = (Ax * percent^3) + (Bx * 3 * (percent^2 * (1-percent))) + (Cx * 3 * (percent * (1-percent)^2)) + (Dx * (1-percent)^3)
Pointy = (Ay * percent^3) + (By * 3 * (percent^2 * (1-percent))) + (Cy * 3 * (percent * (1-percent)^2)) + (Dy * (1-percent)^3)
其中A,B,C和d是对于曲线的点。 A被开始时,d是结束,B和C是“控制点”操纵A和D之间的曲率的percent
是多远沿曲线上从0分计算为1。
所以这将是一个非常简单的想出一个插值函数,返回一个提供的贝塞尔点和一个贝塞尔百分比的点。找到反函数 - 给定点(或x值或y值)的百分比(s)将很困难。或者更困难的是,两个贝塞尔相交(我不擅长数学)。我希望这是Inkscape的功能提供的。
是否有任何JavaScript库可以快速完成这种矢量插值?如果不是,我会在这里发布我提出的算法。 谢谢!
不幸的是,这些链接是为了渲染线条。这个函数不会按照这些链接之一显示的稳定时间间隔进行渲染: [link](http://13thparallel.com/archive/bezier-curves/example3.htm) 我真的很想要它,但它会查找它们相交的地方。我会尽快在这里更新我的发现。 –