貝賽爾曲線的前世今生
貝塞爾曲線,這個命名規則一眼看上去大概是一個叫貝塞爾的數學家發明的。但,貝塞爾曲線依據的最原始的數學公式,是在1912年在數學界廣為人知的伯恩斯坦多項式。簡單理解,伯恩斯坦多項式可以用來證明,在[ a, b ] 區間上所有的連續函數都可以用多項式來逼近,並且收斂性很強,也就是一致收斂。再簡單點,就是一個連續函數,你可以將它寫成若干個伯恩斯坦多項式相加的形式,並且,隨著 n→∞,這個多項式將一致收斂到原函數,這個就是伯恩斯坦斯的逼近性質。
時光荏苒歲月如梭,鏡頭切換到了1959年。當時就職於雪鐵龍的法國數學家 Paul de Casteljau 開始對伯恩斯坦多項式進行了圖形化的嘗試,並且提供了一種數值穩定的德卡斯特裡奧(de Casteljau) 算法。(多數理論公式是建立在大量且系統的數學建模基礎之上研究的規律性成果)根據這個算法,就可以實現通過很少的控制點,去生成複雜的平滑曲線,也就是貝塞爾曲線。
但貝塞爾曲線的聲名大噪,不得不提到1962年就職於雷諾的法國工程師皮埃爾·貝塞爾(Pierre Bézier),他使用這種方法來輔助汽車的車體工業設計(最早計算機的誕生則是為了幫助美國海軍繪製彈道圖),並且廣泛宣傳(典型的理論聯繫實際並獲得成功的示例),因此大家稱為貝塞爾曲線 。
貝賽爾曲線的數學理論:
既然貝賽爾曲線的本質是通過數學計算公式去繪製平滑的曲線,那就可以通過數學工具進行實際求證以及解釋說明。當然對其進行數學求證就沒必要了,因為這些偉大的數學家們已經做過了,這裡只是解釋說明:
● 步驟一:在平面內選3個不同線的點並且依次用線段連接。如下所示..
3點連線
●步驟二:在AB和BC線段上找出點D和點E,使得AD/AB = BE/BC
AD/AB = BE/BC
● 步驟三:連接DE,在DE上尋找點F,F點需要滿足:DF/DE = AD/AB = BE/BC
DF/DE = AD/AB = BE/BC
● 步驟四:最最重要的!根據DE線段和計算公式找出所有的F點,記住是所有的F點,然後將其這些點連接起來。那,連接規則是什麼?以上圖為例,第一個連接點是A-F,第二連接點是A-F1(這個F1必須滿足DF1/DE = AD/AB = BE/BC)以此類推,直到最後連接上C點,下面上一個動圖加深理解:
貝塞爾曲線(源自維基百科)
可能有些朋友還是不理解,那麼這個GIF我截下其中的一張圖說明,如下圖:
動圖裡的P0、P1、P2分別代表的是上圖的:P0 == A;P1 == B;P2 == C。那麼這個黑色點,代表的就是F點,綠色線段的2個端點(P0-P1線段上的綠色點,代表是就是D點,P0-P2線段上的綠色點,代表是就是E點)。線段上面點的獲取,必須要滿足等比關係。
關於貝賽爾曲線的基本數學理論大概就是上面的內容。兩個線段根據等比關係找點的貝塞爾曲線,一般也稱為二階貝塞爾曲線。
貝賽爾曲線的N階拓展(三階貝塞爾與N階貝塞爾曲線)
剛才說到,上面的貝賽爾曲線一般稱為二階貝塞爾曲線,既然是二階貝塞爾曲線,那肯定有三階貝塞爾曲線、四階貝賽爾曲線等等。其實三階貝塞爾與四階貝賽爾曲線以及N階貝賽爾曲線曲線的規則都是一樣的,都是先在線段上找點,這個點必須要滿足等比關係,然後依次連接,下面是三階貝賽爾曲線的解釋說明:
● 步驟一:三階貝賽爾曲線,簡單理解就是在平面內選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點連接起來,這樣最終完成了三階貝賽爾曲線。
J點依次連線
整一個三階貝賽爾曲線的動作加起來就是下面的一張動圖:
三階貝塞爾曲線(源自維基百科)
那麼四階貝賽爾曲線的實現步驟也是一樣的,平面上先選取5個點(5點4線)、依次選點(滿足等比關係)、依次連接、根據計算規則找到所有的點(逐個連接)。。。。。。
四階貝塞爾曲線(源自維基百科)
貌似都是從二階貝塞爾曲線說起的,那麼一階貝賽爾又是怎麼樣的?一階貝賽爾如圖:
一階貝塞爾曲線(源自維基百科)
可以看到一階貝賽爾是一條直線!因此,N階貝賽爾不僅可以畫平滑的曲線也可以畫直線,因此自定義控制項畫直線又多了一種可選擇的方式,但是一般用貝賽爾主要是畫曲線,這裡只是提供了一種別的解決思路。
本文源自網絡,版權歸原作者【騎小豬看流星】所有,侵刪。
原文連結:
https://www.jianshu.com/p/0c9b4b681724