貝塞爾曲線

簡介

在數學的數值分析領域中,貝塞爾曲線, 又稱貝賽爾曲線(Bézier曲線)是電腦圖形學中相當重要的參數曲線。更高維度的廣泛化貝塞爾曲線就稱作貝塞爾曲面,其中貝塞爾三角是一種特殊的實例。
貝塞爾曲線於1962年,由法國工程師皮埃爾·貝塞爾(Pierre Bézier)所廣泛發表,他運用貝塞爾曲線來爲汽車的主體進行設計。貝塞爾曲線最初由Paul de Casteljau於1959年運用de Casteljau算法開發,以穩定數值的方法求出貝塞爾曲線。

實例

線性貝塞爾曲線

給定點P0P1,線性貝塞爾曲線只是一條兩點之間的直線。這條線由下式給出:

\mathbf{B}(t)=\mathbf{P}_0 + (\mathbf{P}_1-\mathbf{P}_0)t=(1-t)\mathbf{P}_0 + t\mathbf{P}_1 \mbox{ , } t \in [0,1]

且其等同於線性插值

二次方貝塞爾曲線

二次方貝塞爾曲線的路徑由給定點P0P1P2的函數Bt)追蹤:

\mathbf{B}(t) = (1 - t)^{2}\mathbf{P}_0 + 2t(1 - t)\mathbf{P}_1 + t^{2}\mathbf{P}_2 \mbox{ , } t \in [0,1]

TrueType字型就運用了以貝塞爾樣條組成的二次貝塞爾曲線。

三次方貝塞爾曲線

P0P1P2P3四個點在平面或在三維空間中定義了三次方貝塞爾曲線。曲線起始於P0走向P1,並從P2的方向來到P3。一般不會經過P1P2;這兩個點只是在那裏提供方向資訊。P0P1之間的間距,決定了曲線在轉而趨進P3之前,走向P2方向的“長度有多長”。

曲線的參數形式爲:

\mathbf{B}(t)=\mathbf{P}_0(1-t)^3+3\mathbf{P}_1t(1-t)^2+3\mathbf{P}_2t^2(1-t)+\mathbf{P}_3t^3 \mbox{ , } t \in [0,1]

現代的成象系統,如PostScriptAsymptoteMetafont,運用了以貝塞爾樣條組成的三次貝塞爾曲線,用來描繪曲線輪廓。

一般化

n階貝塞爾曲線可如下推斷。給定點P0P1、…、Pn,其貝塞爾曲線即

\mathbf{B}(t)=\sum_{i=0}^n {n\choose i}\mathbf{P}_i(1-t)^{n-i}t^i ={n\choose 0}\mathbf{P}_0(1-t)^nt^{0}+{n\choose 1}\mathbf{P}_1(1-t)^{n-1}t^{1}+\cdots+{n\choose n-1}\mathbf{P}_n(1-t)^{1}t^{n-1}+{n\choose n}\mathbf{P}_n(1-t)^{0}t^n \mbox{ , } t \in [0,1]

例如n=5

\mathbf{B}(t)=\mathbf{P}_0(1-t)^5+5\mathbf{P}_1t(1-t)^4+10\mathbf{P}_2t^2(1-t)^3+10\mathbf{P}_3t^3(1-t)^2+5\mathbf{P}_4t^4(1-t)+\mathbf{P}_5t^5 \mbox{ , } t \in [0,1]

如上公式可如下遞歸表達: 用\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}表示由點P0P1、…、Pn所決定的貝塞爾曲線。則

\mathbf{B}(t) = \mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_n}(t) = (1-t)\mathbf{B}_{\mathbf{P}_0\mathbf{P}_1\ldots\mathbf{P}_{n-1}}(t) + t\mathbf{B}_{\mathbf{P}_1\mathbf{P}_2\ldots\mathbf{P}_n}(t)

用平常話來說,n階的貝塞爾曲線,即雙n-1階貝塞爾曲線之間的插值。

術語

一些關於參數曲線的術語,有

\mathbf{B}(t) = \sum_{i=0}^n \mathbf{P}_i\mathbf{b}_{i,n}(t),\quad t\in[0,1]

即多項式

\mathbf{b}_{i,n}(t) = {n\choose i} t^i (1-t)^{n-i},\quad i=0,\ldots n

又稱作n階的伯恩斯坦基底多項式,定義00 = 1。

Pi稱作貝塞爾曲線的控制點多邊形以帶有的貝塞爾點連接而成,起始於P0並以Pn終止,稱作貝塞爾多邊形(或控制多邊形)。貝塞爾多邊形的凸包(convex hull)包含有貝塞爾曲線。

註解

  • 開始於P0並結束於Pn的曲線,即所謂的端點插值法屬性。
  • 曲線是直線的充分必要條件是所有的控制點都位在曲線上。同樣的,貝塞爾曲線是直線的充分必要條件是控制點共線
  • 曲線的起始點(結束點)相切於貝塞爾多邊形的第一節(最後一節)。
  • 一條曲線可在任意點切割成兩條或任意多條子曲線,每一條子曲線仍是貝塞爾曲線。
  • 一些看似簡單的曲線(如)無法以貝塞爾曲線精確的描述,或分段成貝塞爾曲線(雖然當每個內部控制點對單位圓上的外部控制點水平或垂直的的距離爲4\left(\sqrt{2} -1\right)/3時,分成四段的貝塞爾曲線,可以小於千分之一的最大半徑誤差近似於圓)。
  • 位於固定偏移量的曲線(來自給定的貝塞爾曲線),又稱作偏移曲線(假平行於原來的曲線,如兩條鐵軌之間的偏移)無法以貝塞爾曲線精確的形成(某些瑣屑實例除外)。無論如何,現存的啓發法通常可爲實際用途中給出近似值。

建構貝塞爾曲線

線性曲線

線性貝塞爾曲線演示動畫,t in [0,1]
線性貝塞爾曲線演示動畫,t in [0,1]

線性貝塞爾曲線函數中的t會經過由P0P1Bt)所描述的曲線。例如當t=0.25時,Bt)即一條由點P0P1路徑的四分之一處。就像由0至1的連續tBt)描述一條由P0P1的直線。

二次曲線

爲建構二次貝塞爾曲線,可以中介點Q0Q1作爲由0至1的t

  • P0P1的連續點Q0,描述一條線性貝塞爾曲線。
  • P1P2的連續點Q1,描述一條線性貝塞爾曲線。
  • Q0Q1的連續點Bt),描述一條二次貝塞爾曲線。
二次貝塞爾曲線的結構   二次貝塞爾曲線演示動畫,t in [0,1]
二次貝塞爾曲線的結構   二次貝塞爾曲線演示動畫,t in [0,1]

高階曲線

爲建構高階曲線,便需要相應更多的中介點。對於三次曲線,可由線性貝塞爾曲線描述的中介點Q0Q1Q2,和由二次曲線描述的點R0R1所建構:

三次貝塞爾曲線的結構   三次貝塞爾曲線演示動畫,t in [0,1]
三次貝塞爾曲線的結構   三次貝塞爾曲線演示動畫,t in [0,1]

對於四次曲線,可由線性貝塞爾曲線描述的中介點Q0Q1Q2Q3,由二次貝塞爾曲線描述的點R0R1R2,和由三次貝塞爾曲線描述的點S0S1所建構:

四次貝塞爾曲線的結構   四次貝塞爾曲線演示動畫,t in [0,1]
四次貝塞爾曲線的結構   四次貝塞爾曲線演示動畫,t in [0,1]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章