來源:餅乾教育
貝塞爾曲線(Bézier curve)對於從事CG行業的工作者來說是最熟悉不過的了,無論二維軟體亦或三維軟體都少不了它的身影。它是用於計算機圖形學和相關領域的參數曲線,更高維度的廣泛化貝塞爾曲線就稱作貝塞爾曲面,其中貝塞爾三角是一種特殊的實例。貝塞爾曲線最早來源於伯恩斯坦多項式,但因皮埃爾·貝塞爾於20世紀60年代設計雷諾汽車的曲線車身而得名,後來廣泛應用於計算機圖形領域。
貝塞爾曲線的演變- 伯恩斯坦多項式 -貝塞爾曲線由最原始的1912年就在數學界廣為人知的數學公式伯恩斯坦多項式演變而來。簡單理解,伯恩斯坦多項式可以用來證明,在[ 0, 1 ] 區間內所有的連續函數都可以用多項式來逼近,並且收斂性很強,也就是一致收斂。再簡單點,就是一個連續函數,你可以將它寫成若干個伯恩斯坦多項式相加的形式,並且,隨著 n→∞,這個多項式將一致收斂到原函數,這個就是伯恩斯坦斯的逼近性質。
- 複雜公式的圖形化 -1959年。當時就職於雪鐵龍的法國數學家 Paul de Casteljau 開始對伯恩斯坦多項式進行了圖形化的嘗試,並且提供了一種數值穩定的德卡斯特裡奧(de Casteljau) 算法。(多數理論公式是建立在大量且系統的數學建模基礎之上研究的規律性成果)根據這個算法,就可以實現通過很少的控制點,去生成複雜的平滑曲線,也就是貝塞爾曲線。
- 推廣及應用 -但貝塞爾曲線的聲名大噪,不得不提到1962年就職於雷諾的法國工程師皮埃爾·貝塞爾(Pierre Bézier),他使用這種方法來輔助汽車的車體工業設計(最早計算機的誕生則是為了幫助美國海軍繪製彈道圖),並且廣泛宣傳(典型的理論聯繫實際並獲得成功的示例),因此大家稱為貝塞爾曲線 。
貝塞爾曲線的繪製NO.01 | 二階曲線在平面內選3個不同線的點並且依次用線段連接,在AB和BC線段上找出點D和點E,使得 AD/AB = BE/BC,連接DE,在DE上尋找點F,F點需要滿足:DF/DE = AD/AB = BE/BC,根據DE線段和計算公式找出所有的F點並將其連接起來。如第一個點是F1,第二點是F2(Fn 必須滿足DFn/DE = AD/AB = BE/BC)以此類推,直到最後連接上點C,如下圖所示:
在平面內選4個不同線的點並且依次用線段連接,同二階貝塞爾曲線一樣首先需要在線段上找對應的點(E、F、G),對應的點必須要符合等比的計算規則,計算規則如下:AE/AB = BF/BC = CG/CD;找到對應的點以後接著依次連結EF、FG;接著在EF、FG線段上面繼續找點H、I,對應的點依舊要符合等比的計算規則,也就是 EH/EF = FI/FG;最後連接H、I線段,在HI線段上面繼續找點J、點J的計算規則需要符合:EH/EF = FI/FG = HJ/HI,重複步驟二的動作,找到所有的J點,依次將J點連接起來就得到了三階貝賽爾曲線。
以四階曲線為例,平面上選取5個點並連接,依次選擇滿足等比關係的點並連接,最後將所有的點 J 連起來就能得到一條光滑的曲線,N階曲線亦是以此類推。
貝塞爾曲線廣泛用於計算機圖形學中平滑曲線模擬。由於所有的控制點都位在曲線上,因此可以以圖形方式顯示這些點並用於直觀地操縱曲線。通過在曲線的控制點上應用相應的變換,可以在曲線上應用諸如平移和旋轉的仿射變換。一般的矢量圖形軟體通過它來精確畫出曲線,貝塞爾曲線由線段與節點組成,節點是可拖動的支點,線段像可伸縮的皮筋,我們在繪圖工具上看到的鋼筆工具就是來做這種矢量曲線的。
NO.02 | 路徑動畫路徑動畫是貝塞爾曲線一個十分常用的功能,就是規劃物體的運動軌跡,讓動畫目標能夠沿曲線平滑的實現移動動畫,也就是讓物體沿著貝塞爾曲線運動,而不是機械的直線運動,並且可以很好地控制其速度,例如從A移動到B的圖標,不是簡單地以每步的固定數量的像素移動。當動畫師或界面設計師談論操作的「物理」或「感覺」時,他們可能指的是用於控制所討論的移動的時間速度的特定貝塞爾曲線。