Bezier曲線繪製方法

2021-07-06 01:46:50 字數 778 閱讀 3951

de casteljau演算法能簡單快速地求出某個t值的曲線值,複雜度是o(n^2)的乘法與加法。

這裡平方級的計算感覺比較慢,如果應用秦九韶演算法來求該多項式值的話,複雜度降低到了o(n)。  (難度是因為數值穩定性的原因?)

而如果是繪製一條曲線的話,如果要用m個等間距的點來逼近這條曲線的話,複雜度是o(m*n^2),有乘法。

感覺不應該用這個方法,太慢了。

比如用高階差分的方法,同樣用m個等間距的點來逼近曲線的值,複雜度只要o(m*n),而且只有加減法。(差了乙個n,實際n取比較小,不過再小也是肉,n=3時,耗時減小3倍)

例子  求x^2的等間距值方法如下:

這裡第n行就是n階向前差分的值。

具體做法就是,首先先要有n+1個初始值,然後,求出n個一階差分,n-1個二階差分。最後一行為1個n階差分值,然後最後一行向後擴充套件m個值(常數),然後在反向向上求值。

似乎de casteljau演算法優點只在求不等間距的點時候或者具體某個t值的時候才體現出來。

OpenGL繪製Bezier曲線的方法

專案要求 使用滑鼠在螢幕中任意設定控制點,並生成曲線 使用滑鼠和鍵盤的互動操作實現對曲線的修改。專案總體介紹 本專案利用bezier曲線生成演算法生成可由使用者自定義的曲線。可實現核心功能如下 1 使用者用滑鼠左擊螢幕任意處產生記錄點。2 滑鼠右擊螢幕任意處由先前的任意個數記錄點和其先後關係生成be...

Qt 繪製平滑Bezier曲線

1 二階bezier static qpointf quadvalue const qpointf p0,const qpointf p1,const qpointf p2,qreal t static qpointf quadderived const qpointf p0,const qpoin...

繪製貝塞爾Bezier曲線

trainingtools.cpp 定義控制台應用程式的入口點。include include include include include include using namespace std const int ww max mark count 40 最大40個控制點 int mark c...