paper.js 并集差异与交集

Ath*_*ark 5 javascript svg canvas vector-graphics inkscape

我正在 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)
Run Code Online (Sandbox Code Playgroud)

其中 A、B、C 和 D 是曲线的点。A 是起点,D 是终点,B 和 C 是操纵 A 和 D 之间曲率的“控制点”。 是percent沿着曲线计算的距离,范围从 0 到 1。

因此,提出一个插值函数来返回所提供的贝塞尔曲线的一个点和沿贝塞尔曲线的百分比是非常简单的。找到倒数 - 给定点(或 x 值或 y 值)的百分比将很困难。或者更困难的是,两个贝塞尔曲线相交(我不太擅长数学)。我希望这就是 inkscape 的功能所提供的。

有没有可以快速完成这种向量插值的javascript库?如果没有,我将在这里发布我想出的算法。谢谢你!

pur*_*101 1

虽然我不会说这是一个重复的问题,但我相信您会从这个问题的答案中找到深刻的见解,因为它非常相似。

我确实找到了该问题的答案中未提及的另一个资源: http: //13thparallel.com/archive/bezier-curves/

除此之外,该问题中提到的最佳资源在这里: http ://blog.mackerron.com/2011/01/01/javascript-cubic-splines/

这两个资源都详细介绍了可以满足您需求的特定功能。虽然它们不完全是“库”,但可以根据您的目的轻松地将代码移植到您的项目中。