我正在 paper.js 中的一个项目上工作,我需要根据其他两个的交集、差异和联合创建新路径。我做了一些挖掘,发现了插入三次贝塞尔样条曲线的数学函数,但我想知道是否有任何 javascript 库可以进行类似 svg 的矢量算术。如果有的话,我会复制 inkscape 并将其转换为 javascript,但你永远不知道。无论如何,用于插值三次贝塞尔曲线的数学函数如下:
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 值)的百分比将是困难的。或者更困难的是,两个贝塞尔曲线相交(我不太擅长数学)。我希望这就是inkscape的功能所提供的。
有没有可以快速进行这种矢量插值的 javascript 库?如果没有,我会在这里发布我提出的算法。谢谢!