两条贝塞尔曲线(或两条曲线和一条线)的交点:代码?

时间:2014-07-19 19:58:56

标签: javascript math geometry bezier curves

Checking if two cubic Bézier curves intersect提供http://cagd.cs.byu.edu/~557/text/ch7.pdf的链接..首次通过时听起来可读..但它不是代码。

我想知道是否有人在任何常见的编程语言中实际实现了这种算法。我会对一些Javascript代码(其他语言OK)感兴趣,它可以使用两条立方Bézier曲线或Bézier曲线和一条直线来实现算法。

1 个答案:

答案 0 :(得分:0)

对于三次Bézier曲线和直线,最简单的方法是使用7.3节参数曲线和隐式曲线的交点。您可以将直线写为a x+b y+c=0。如果Bézier曲线以x和y坐标的立方p(t)和q(t)给出,则可以将它们替换为线方程。这给出了一个立方体,您可以通过自己喜欢的根寻找算法来解决这个问题。

类似的问题Checking if two cubic Bézier curves intersect有一些好的答案。特别是第一个答案提到asymptote library,其中包含所有这些代码。您可以在http://sourceforge.net/p/asymptote/code/HEAD/tree/trunk/asymptote/path.cc查看相关的源代码,包括查找立方根的代码。