Checking if two cubic Bézier curves intersect给出一个链接到http://cagd.cs.byu.edu/~557/text/ch7.pdf ..声音在第一遍可读..但它不是代码。两条贝塞尔曲线(或两条曲线和一条直线)的交点:代码?
我想知道如果有人实际上已经在任何通用的编程语言中实现了这种算法。我会对一些使用两个三次Bézier曲线或Bézier曲线和一条直线的Javascript代码(其他语言可以)感兴趣。
Checking if two cubic Bézier curves intersect给出一个链接到http://cagd.cs.byu.edu/~557/text/ch7.pdf ..声音在第一遍可读..但它不是代码。两条贝塞尔曲线(或两条曲线和一条直线)的交点:代码?
我想知道如果有人实际上已经在任何通用的编程语言中实现了这种算法。我会对一些使用两个三次Bézier曲线或Bézier曲线和一条直线的Javascript代码(其他语言可以)感兴趣。
对于三次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处看到相关的源代码,包括用于查找立方根的代码。
如果您询问特定的算法,最好在标题/帖子中提及哪一个算法(链接的章节包含多个算法)。细分算法在http://pomax.github.io/bezierinfo/#curveintersection上实现 –