再论贝塞尔曲线
貝塞爾曲線生成方法:
一、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
1、線性曲線
2、二次曲線
3、三次曲線
4、四次曲線
5、五次曲線
6、例子
三次貝塞爾曲線的控制點為:b0(1.0,1.0),b1(2.0,7.0),b2(8.0,6.0),b3(12.0,2.0),其點B(0.25) 求法如下:
b10=34(1.0,1.0)+14(2.0,7.0)=(1.25,2.5)
b11=34(2.0,7.0)+14(8.0,6.0)=(3.5,6.75)
b12=34(8.0,6.0)+14(12.0,2.0)=(9.0,5.0)
b20=34(1.25,2.5)+14(3.5,6.75)=(1.8125,3.5625)
…
算法流程如下:
圖形表示如下:
二、任意多項式曲線與貝塞爾曲線的轉換
貝塞爾曲線展開:
B(t)=b0(1?t)n+C1n(1?t)n?1t+C2n(1?t)n?2t2+?+Cn?1n(1?t)1tn?1+tn=TBezb
一般多項式:
P(t)=a0+a1t+?+antn=Ta
定義一下參數:
a=(a0,a1,?,an)T,b=(b0,b1,?,bn)T
B=(B0,n(t),?,Bn,n(t)),T=(1,t,…,n)
Bez=(Bezi,j),Bez?1=(Bez?1i,j),0≤i,j≤n
1、貝塞爾曲線 -> 多項式曲線
表示方法是:
a=Bez?b
把貝塞爾曲線按照參數 t 升冪排列,皆可以得到其對應的多項式曲線。
Bezi,j={(?1)i?jCinCji,0,ifi≥jotherwise
也就是:
ai=∑j=0i(?1)i?jCinCjibj
2、多項式曲線 ->貝塞爾曲線
表示方法是:
b=Bez?1?a
Bez(?1)i,j=???CjiCjn,0,ifj≤iotherwise
也就是:
bi=∑j=0iCjiCjnaj
3、參考
[1]:https://en.wikipedia.org/wiki/Convex_hull [2]:Duncan M. Applied Geometry for Computer Graphics and CAD. Springer, 2005.總結
- 上一篇: 有理贝塞尔曲线(Rational Bez
- 下一篇: ROS 总结(一):ROS系统框架