本頁視覺化中的貝茲曲線
n次貝茲曲線由n+1個控制點決定:兩個點是線段,三個點是二次曲線,四個點就是繪圖軟體裡的三次曲線。曲線上的點(畫面中的紅點),是在控制折線的每一邊上反覆取比例t得到的。在這裡,你可以移動控制點,讓t從0掃到1,看構造中的線段留下一根根線,勾勒出曲線。
構造顯示目前t值下每一層的折線,每層比上一層少一條邊。掃描讓t從0走到1,以相等的t間距留下構造線,並依t上色。曲線本身是那條細線。
將構造寫成式子,就是一層層的加權平均,也就是 de Casteljau 演算法:
把這一層層的計算展開,每個控制點的係數就是若干個乘積的和,每個乘積有n個因子,而每個因子是1−t或t。對來說,每個乘積恰好含有i個t,這樣的乘積共有個,所以
這些權重是伯恩斯坦多項式,小圖畫的就是它們。時,權重都不為負,加起來等於1,因此是控制點的加權平均,曲線不會跑出它們的凸包。把一個點移動向量Δ,曲線上的每個點都會移動,在附近移得最多。這一段不一定是離該控制點最近的一段。
t=0時,每一層都從開始,所以;同樣地,。曲線通過兩個端點,通常不通過其餘的點。構造的最後一層只有一條線段,只要沒有縮成一個點,就位於曲線的切線上:
因此曲線從出發時朝向,到達時則從的方向過來,除非那一端的兩個點重合。這就是繪圖軟體把三次曲線中間的兩個點,顯示成從兩端伸出之控制把手的原因。
最後一層留下的線,只要不是單一點,就會在它所帶的那個點與曲線相切。低一層的線也以同樣的方式,與較少相鄰點所決定的曲線相切。因此每一族線都勾勒出自己的曲線,次數較低的曲線便出現在折線內部。勾勒不等於從一側包住:曲線在反曲點會穿過自己的切線,線會分布在兩側。三個控制點不共線時,二次曲線的線就像是在兩排直線排列的釘子間繞線做成的弦線畫,它們勾勒出的是拋物線。
t=s時的構造也能把曲線切成兩段。各層的第一個點,是0到s那一段的控制點;各層的最後一個點,則是s到1那一段的控制點,切開顯示的就是這兩組。一次次對半切下去,各段的控制折線會越來越貼近曲線。升階則往另一個方向:多一個控制點,曲線不變,折線更靠近曲線。而在畫面上按下新增的點,則會改變曲線。
雪鐵龍的保羅・德卡斯特里奧在1959年提出這個構造;雷諾的皮耶・貝茲獨立得到相同的曲線,並在1960年代發表。
值得留意的地方
- t的步長相等,沿曲線走過的距離不一定相等。
- 顏色最濃的地方不是曲線,而是線重疊最多的地方,可能稍微偏離曲線。
相關概念
延伸閱讀: 維基百科: Bézier curve (英文); 維基百科: De Casteljau's algorithm (英文); 維基百科: Bernstein polynomial (英文).