2014-07-19 129 views
0

Checking if two cubic Bézier curves intersect給出一個鏈接到http://cagd.cs.byu.edu/~557/text/ch7.pdf ..聲音在第一遍可讀..但它不是代碼。兩條貝塞爾曲線(或兩條曲線和一條直線)的交點:代碼?

我想知道如果有人實際上已經在任何通用的編程語言中實現了這種算法。我會對一些使用兩個三次Bézier曲線或Bézier曲線和一條直線的Javascript代碼(其他語言可以)感興趣。

+0

如果您詢問特定的算法,最好在標題/帖子中提及哪一個算法(鏈接的章節包含多個算法)。細分算法在http://pomax.github.io/bezierinfo/#curveintersection上實現 –

回答

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處看到相關的源代碼,包括用於查找立方根的代碼。