天天看點

挖一挖貝塞爾曲線那些事(一)

一、前世今生

      貝塞爾曲線的最初設計是服務于工業設計,尤其應用與汽車曲線設計。随着計算機畫圖的應用廣泛,若想在計算機上畫出平滑精準的曲線并不是一件容易的事,貝塞爾曲線解決了這樣的問題,貝塞爾虛線通過起始點與結束點來确定曲線的首尾,通過若幹個控制點來确定曲線的走向。由于其由法國工程師皮埃爾·貝塞爾廣泛推廣,是以這種曲線被命名為貝塞爾曲線。

二、數學基礎

      平面上的任意連續曲線可以通過伯恩斯坦多項式來進行逼近拟合,是以,當我們想在平面中畫一條曲線的時候,如果可以模拟出此曲線的函數,則可以十分精準的控制計算機來描繪一系列曲線上的點來繪制曲線。貝塞爾曲線就是基于這樣的數學基礎。

      首先,對于一條貝塞爾曲線,其3要素分别是:起始點,結束點和控制點。其中曲線的起點在起始點,終點在結束點,曲線并不穿過控制點,控制點來掌握曲線的走向,控制點個數可以不定。

1、一階貝塞爾曲線

      一階貝塞爾曲線控制點的個數為0,隻有起始點與結束點。其實一階貝塞爾曲線就是一條從起始點到結束點的直線段。其公式如下:

挖一挖貝塞爾曲線那些事(一)

上面公式中,P為曲線上的點,P0為起始點,P1為結束點。(對于平面上的點,分别用上面公式計算x,y坐标即可)。由于其公式為線性公式,所有這種貝塞爾曲線也被稱為一階貝塞爾曲線。下圖可以很好的描述當t從0到1變化時,線段的繪制過程:

挖一挖貝塞爾曲線那些事(一)

2、二階貝塞爾曲線

      二階貝塞爾曲線有一個控制點,假設起始點,控制點和結束點分别為P0、P1、P2。連接配接P0P1,P1P2,在區間0-1之間,在P0P1線段上取點M,在P1P2線段上取點N,使得P0M/P0P1=P1N/P1P2,找到線段MN上一點Q,同時使得MQ/QN=P0M/P0P1=P1N/P1P2,所有Q點的集合即為所求貝塞爾曲線。上面的描述有些抽象,使用數學推導就義一目了然了,公式推導如下:

挖一挖貝塞爾曲線那些事(一)
挖一挖貝塞爾曲線那些事(一)

繪圖過程如下:

挖一挖貝塞爾曲線那些事(一)

3.高階貝塞爾曲線

      有了一階與二階的基礎,高階貝塞爾曲線也是通過相同的方式來推導,一個通用的遞推公式如下:

挖一挖貝塞爾曲線那些事(一)

三階和四階的繪制過程示範如下:

挖一挖貝塞爾曲線那些事(一)

繼續閱讀