Bezier曲線的de Casteljau演算法證明

2021-08-31 12:21:14 字數 1119 閱讀 9859

ezier曲線(又稱貝茲曲線或貝塞爾曲線)的定義和性質請看維基百科貝茲曲線。它的定義是:

其中,e casteljau演算法揭示了bezier數學上很美的乙個性質,我八成相信是先有了這個性質,才有了上面的定義式,當然它們是等價的。首先來看維基百科中的三張圖:

二次bezier曲線

三次bezier曲線:

四次bezier曲線:

這三張圖展現了bezier曲線漂亮的數學性質。圖中的引數變數t的從0增長到1,紅色的線就是bezier曲線,bezier曲線上的任乙個點(t),都是其它相鄰線段的同等比例(t)點處的連線,再取同等比例(t)的點再連線,一直取到最後那條線段的同等比例(t)處,該點就是beizer曲線上的點(t). 以二次bezier曲線為例,如該曲線上的1/3點,就是線段p0p1取1/3點,p1p2取1/3點,兩點連線,再取其1/3點處即是。這就是de casteljau演算法提出來的,其數學表示式是:

上式中,k表示第k層,以四次bezier曲線為例,k=0時,就是灰色線段,k=1時,就是綠色線段,k=2就是藍色線段,一直遞推下去就是bezier上的點(t)了。於是用de casteljau演算法很容易求出bezier曲線上的任一點(t)的位置。換一種圖示的方法表示這種遞推關係:

這是用幾何畫板畫的,很難看,解釋一下。左邊一列是原來(k=0)的控制頂點,第二列是(k=1)的控制頂點,以此類推。每個箭頭表示兩個點分別乘以1-t和t並加起來,得到右邊的點。這樣一直做到最後的點就是bezier上的點(t).

先看p0的係數為什麼是

楊輝三角有這樣的特徵:每個數字表示從頂點走下來到該點不同走法的數目,而且無論是哪條路走到該點,向左和向右的次數是一樣的,等於該點的二次多項式展開係數。

到了這裡,如果看懂了的話,我想已經證明了,剩下就是一些說明性言語了。數學美還沒結束,見下圖:

綠色線按順序排列的點p0到p0n這n個點可以畫出一條n次bezier曲線,記為b1;藍色的n個點也可以畫出一條n次bezier曲線;這兩條曲線直接接起來,就是原來p0到pn畫出的n次bezier曲線!神奇吧,它們居然有類似向量的性質。實際應用也是用這個性質,一般取t=1/2,將一條bezier曲線變成兩條小的,再繼續分下去,當bezier曲線足夠小時就可以用線段代替曲線了。這個性質同樣可以證明,但寫到網上很麻煩就不寫了,大家推薦好一點的數學畫圖軟體,謝謝。數學有時很美。

bezier曲線和bezier曲面

如果想理解貝塞爾曲面沒有對其數學基本的認識是很難的,如果你不願意讀這一部分或者你已經知道了關於她的數學知識你可以跳過。首先我會描述貝塞爾曲線再介紹生成貝塞爾曲面。奇怪的是,如果你用過乙個圖形程式,你就已經熟悉了貝塞爾曲線,也許你接觸的是另外的名稱。它們是畫曲線的最基本的方法,而且通常被表示成一系列點...

Bezier曲線繪製方法

de casteljau演算法能簡單快速地求出某個t值的曲線值,複雜度是o n 2 的乘法與加法。這裡平方級的計算感覺比較慢,如果應用秦九韶演算法來求該多項式值的話,複雜度降低到了o n 難度是因為數值穩定性的原因?而如果是繪製一條曲線的話,如果要用m個等間距的點來逼近這條曲線的話,複雜度是o m ...

Bezier曲線簡單實現

關鍵的公式,此公式不能畫出勻速曲線 completedpercent為當前所想得到位置的百分比0.0f 1.0f 根據貝塞爾曲線函式,求得取得此時的x,y座標 pt.x 1 completedpercent 1 completedpercent x1 2 1 completedpercent com...