2013-06-11 86 views
2

我有一個B樣條曲線。我有所有的節點和控制點的x,y座標。將B樣條轉換爲貝塞爾曲線

我需要將B樣條曲線轉換爲貝塞爾曲線。

我的最終目標是能夠在html5 canvas元素上繪製形狀。 B樣條來自不支持貝齊爾的dxf文件,而畫布僅支持貝齊爾。

我發現了幾篇試圖解釋這個過程的文章,但是他們在我的腦海裏相當多,看起來似乎很理論化。我真的需要一個例子或一步一步的幫助。

這裏是我發現: (Explains B-Splines)(Converting to Beziers)(Javascript Example)

最後一個環節是很好的,因爲它包含實際的代碼,但它似乎沒有考慮到節點分配的權重。我認爲這很重要,因爲它似乎影響曲線是否通過控制點。

我可以分享我的節點或控制點,如果這將是有用的。如果有人會指點我一步一步的過程,或者幫我一些僞代碼(或實際),我會非常感激。

+0

如果您發佈了一些關於控制點的信息,這將有所幫助。例如,你的觀點[x,y],[x,y,w],[xw,yw,zw,w]還是別的?只需發佈一個定義樣條曲線的小例子,這將有很大幫助。 – tfinniga

回答

1

我寫了一個簡單的Javascript實現Boehm算法用於三次B樣條曲線。這是一個相當簡單的實現涉及極值,在6.3節描述如下:Computer Aided Geometric Design- Sederberg

如果你在執行有興趣,我已經聯繫我寫到這裏的類:bsplines.js

+6

指向您的bsplines.js的鏈接不再有效。你有可能恢復它的機會? – pancake

0

這可能是有益的 - https://github.com/Tagussan/BSpline

我的項目已經開始,我不再需要它,但是這似乎是一個非常有用的方法來提供控制點並繪製曲線。

+0

另請參見[cardinal splines](https://github.com/epistemex/cardinal-spline-js)獲取平滑曲線的簡單方法 – K3N

+0

@TimSum引用的GitHub項目似乎使用光柵技術渲染樣條曲線。我懷疑它不是轉換到貝塞爾曲線。我仍然在爲我尋找解決方案。 –