引自博客:
http://www.lxweimin.com/p/55c721887568
https://www.zhihu.com/question/29565629
http://blog.csdn.net/shenziheng1/article/details/54410816
貝塞爾曲線模擬工具:http://myst729.github.io/bezier-curve/
三階貝塞爾曲線模擬:http://cubic-bezier.com/
函數曲線:https://www.desmos.com/calculator
一句話概括貝塞爾曲線:將任意一條曲線轉化為精確的數學公式。
定義:
由于用計算機畫圖大部分時間是操作鼠標來掌握線條的路徑,與手繪的感覺和效果有很大的差別。即使是一位精明的畫師能輕松繪出各種圖形,拿到鼠標想隨心所欲的畫圖也不是一件容易的事。這一點是計算機萬萬不能代替手工的工作,所以到目前為止人們只能頗感無奈。使用貝塞爾工具畫圖很大程度上彌補了這一缺憾。
貝塞爾曲線是計算機圖形圖像造型的基本工具,是圖形造型運用得最多的基本線條之一。它通過控制曲線上的四個點(起始點、終止點以及兩個相互分離的中間點)來創造、編輯圖形。其中起重要作用的是位于曲線中央的控制線。這條線是虛擬的,中間與貝塞爾曲線交叉,兩端是控制端點。移動兩端的端點時貝塞爾曲線改變曲線的曲率(彎曲的程度);移動中間點(也就是移動虛擬的控制線)時,貝塞爾曲線在起始點和終止點鎖定的情況下做均勻移動。注意,貝塞爾曲線上的所有控制點、節點均可編輯。這種“智能化”的矢量線條為藝術家提供了一種理想的圖形編輯與創造的工具。
原理:
一階貝塞爾(直線)
一階貝賽爾曲線上的由兩個點確定? P0 和P1,當t在0--->1區間上遞增時,根據
此會得到多個點的坐標,其實這些的點就是一條直線上的點。
B(t) = P0 + (P1-P0)*t
B(t) = (1-t)P0 + tP1
//=>
B(t).x = (1-t)P0.x + tP1.x
B(t).y = (1-t)P0.y + tP1.y
二階貝塞爾曲線
二階貝賽爾曲線由`3`個點確定,它可以理解成是這樣的一階貝賽爾曲線:確定該`一階貝賽爾曲線`的兩個點是變化的。
這兩個點(設分別為Pm,Pn)是怎樣變化的呢,這兩個點又分別是(P0,P1)確定的`一階貝賽爾曲線`和(P1,P2)確定的`一階貝賽爾`
Pm(t) = (1-t)P0 + tP1
Pn(t) = (1-t)P1 + tP2
B(t) = (1-t)Pm(t) + tPn(t)
= (1-t)^2 P0 + 2(1-t)tP1+ t^2P2
三階貝塞爾曲線
貝塞爾曲線的特點:
特點一:曲線通過始點和終點,并與特征多邊形首末兩邊相切于始點和終點,中間點將曲線拉向自己。
特點二:平面離散點控制曲線的形狀,改變一個離散點的坐標,曲線的形狀將隨之改變(點對曲線具有整體控制性)。
特點三:曲線落在特征多邊形的凸包之內,它比特征多邊形更趨于光滑。
特點四:貝塞爾曲線屬于“平均通過”式曲線。
貝塞爾曲線的使用:
數據點: 指一條路徑的起始點和終止點。
控制點:控制點決定了一條路徑的彎曲軌跡。