1. 程式人生 > >貝塞爾曲線原理(轉載)

貝塞爾曲線原理(轉載)

image cnblogs itblog gif 二次 fcc ike 轉載 依次

最近在做圖形學的實驗,關於貝塞爾曲線在網上看到一個非常好的資料:

以下內容轉載自:https://www.cnblogs.com/hnfxs/p/3148483.html

原理和簡單推導(以三階為例):

P0P02P2是一條拋物線上順序三個不同的點。過P0P2點的兩切線交於P1點,在P02點的切線交P0P1P2P1P01P11,則如下比例成立:

技術分享圖片

這是所謂拋物線的三切線定理。

技術分享圖片

P0P2固定,引入參數t,令上述比值為t:(1-t),即有:

技術分享圖片
t從0變到1,第一、二式就分別表示控制二邊形的第一、二條邊,它們是兩條一次Bezier曲線。將一、二式代入第三式得:

技術分享圖片

t從0變到1時,它表示了由三頂點P0

、P1、P2三點定義的一條二次Bezier曲線。

並且表明:

二次Bezier曲線P02可以定義為分別由前兩個頂點(P0,P1)和後兩個頂點(P1,P2)決定的一次Bezier曲線的線性組合

依次類推,

由四個控制點定義的三次Bezier曲線P03可被定義為分別由(P0,P1,P2)和(P1,P2,P3)確定的二條二次Bezier曲線的線性組合,由(n+1)個控制點Pi(i=0,1,...,n)定義的n次Bezier曲線P0n可被定義為分別由前、後n個控制點定義的兩條(n-1)次Bezier曲線P0n-1P1n-1的線性組合:
技術分享圖片
由此得到Bezier曲線的遞推計算公式

技術分享圖片

這就是這就是de Casteljau算法,可以簡單闡述三階貝塞爾曲線原理。

下面是總結:轉自http://blog.csdn.net/tianhai110/article/details/2203572

Bézier curve(貝塞爾曲線)是應用於二維圖形應用程序的數學曲線。 曲線定義:起始點、終止點(也稱錨點)、控制點。通過調整控制點,貝塞爾曲線的形狀會發生變化。 1962年,法國數學家Pierre Bézier第一個研究了這種矢量繪制曲線的方法,並給出了詳細的計算公式,因此按照這樣的公式繪制出來的曲線就用他的姓氏來命名,稱為貝塞爾曲線。

以下公式中:B(t)為t時間下 點的坐標;

P0為起點,Pn為終點,Pi為控制點

一階貝塞爾曲線(線段):

技術分享圖片

技術分享圖片

意義:由 P0 至 P1 的連續點, 描述的一條線段

二階貝塞爾曲線(拋物線):

技術分享圖片

技術分享圖片

原理:由 P0 至 P1 的連續點 Q0,描述一條線段。
由 P1 至 P2 的連續點 Q1,描述一條線段。
由 Q0 至 Q1 的連續點 B(t),描述一條二次貝塞爾曲線。

經驗:P1-P0為曲線在P0處的切線。

三階貝塞爾曲線:

技術分享圖片

技術分享圖片

通用公式:

技術分享圖片

高階貝塞爾曲線:

4階曲線:

技術分享圖片

5階曲線:

技術分享圖片

貝塞爾曲線原理(轉載)