【发布时间】:2012-12-07 22:49:50
【问题描述】:
我正在从事 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 库可以快速进行这种矢量插值?如果没有,我会在这里发布我提出的算法。 谢谢!
【问题讨论】:
标签: javascript canvas svg vector-graphics inkscape