贝塞尔曲线(B′ezier)基础
貝塞爾曲線是計算機圖形學和計算機輔助設計中最重要的曲線之一。
在機器人(特別是移動機器人)軌跡規劃中,經常用到貝塞爾曲線。
貝塞爾曲線是一種特殊的多項式曲線,n 階貝塞爾曲線由 n+1 個控制點來確定。
1、低階貝塞爾曲線
線性貝塞爾曲線
控制點為b0(p0,q0)和b1(p1,q1),其多項式表示為:
(x(t),y(t))=(1?t)(p0,q0)+t(p1,q1),fort∈[0,1]
用向量形式表示為:
B(t)=(1?t)b0+tb1
二次貝塞爾曲線
控制點為b0(p0,q0)、b1(p1,q1)和b2(p2,q2),其多項式表示為:
B(t)=(1?t)2(p0,q0)+2(1?t)t(p1,q1)+t2(p2,q2),fort∈[0,1]
三個控制點組成的圖形角控制三角形。
三次貝塞爾曲線
四個控制點為:b0,b1,b2,b3,三次貝塞爾曲線定義為:
B(t)=(1?t)3b0+3(1?t)2tb1+3(1?t)tb2+t3b3,fort∈[0,1]
三次貝塞爾曲線所能表示的形狀遠遠多于二次貝塞爾曲線,它可以表示環、尖角和拐點。
B′(0)=3(b1?b0),?B′(1)=3(b3?b2)
表示初始點的切向量和最初兩個控制點的連線平行,終點的切向量和最后兩個控制點的連線平行。
2、一般貝塞爾曲線
給定 n+1 個控制點 b0,b1,?,bn, 則 n 階貝塞爾曲線定義為:
B(t)=∑i=0nbiBi,n(t)
其中:
Bi,n(t)={n!(n?i)!i!(1?t)n?iti,0,if???0≤i≤notherwise
稱作n 階貝塞爾曲多項式或控制函數。
二項式展開定理:
(x+y)n=∑i=0nCinxn?iyi
其每一項的系數和貝塞爾曲線的系數形同。
3、貝塞爾曲多項式的性質:
- 統一性
各項系數之和為1
- 非負性
各項系數均大于0
- 對稱性
第i項系數和倒數第i項系數相同
- 遞歸性
遞歸性指其系數滿足下式:
Bi,n(t)=(1?t)Bi,n?1(t)+tBi?1,n?1(t),i=1,?,n,B?1,n?1(t)=Bn,n?1(t)=0
4、貝塞爾曲曲線的性質:
凸包(Convex Hulls):
在一個實數向量空間V中,對于給定的集合X,所有包含X的凸集(Convex)的交集S被稱為X的凸包
S:=?X≤K≤VK,k∈凸集
X的凸集(Convex)可以用X內所有點 (x1,?,xn)的線性組合來構造。
S:=[∑j=1ntjxj|xj∈X,∑j=1ntj=1,tj∈[0,1]]
在二維歐幾里得空間中,凸包可想象為一條剛好包著所有點的橡皮圈。
性質1:
n階貝塞爾曲線 B(t) ,控制點為 b0,?,bn, 滿足如下性質:
端點插值性質:
B(0)=bo,B(1)=bn
端點切線定理:
B′(0)=n(b1?b0),B′(1)=n(bn?bn?1)
凸包性質
B(t)∈S{bo,?,bn},?t∈[0,1]
即:貝塞爾曲線上的點在其控制點定義的凸包內仿射變換不變性
T(∑i=0nbiBi,n(t))=∑i=0nT(bi)Bi,n(t),T為仿射變換
變差縮減性質
對平面貝塞爾曲線 B(t) 和給定的直線,貝塞爾曲線與直線的交點個數不大于其控制多邊形和直線的交點的個數。
5、The de Casteljau Algorithm
貝塞爾曲線 n+1 個控制點 b0,b1,?,bn,t∈[0,1],那么:
{B(t)=bn0bji=bj?1i(1?t)+bj?1i+1tb0i=bii=0,?,n?j,j=1,?,n
6、貝塞爾曲線分支
對于貝塞爾曲線 B(t)=∑ni=0biBi,n(t), 其在時刻 t 被分成兩部分:
Bleft:bo0,b10,?,bn?10,bn0和Bright:bn0,?,n1n?1,b0n,
其中,bji 仍然由 de Casteljau Algorithm 計算出。
參考:
[1]:https://en.wikipedia.org/wiki/Convex_hull[2]:Duncan M. Applied Geometry for Computer Graphics and CAD. Springer, 2005.總結
以上是生活随笔為你收集整理的贝塞尔曲线(B′ezier)基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: moveit!功能包安装问题
- 下一篇: 贝塞尔曲线(Bezier Curves)