再论贝塞尔曲线

贝塞尔曲线生成方法:

一、The de Casteljau Algorithm

贝塞尔曲线 n+1 个控制点 b0,b1,,bnt[0,1], 那么:

{B(t)=bn0bji=bj1i(1t)+bj1i+1tb0i=bii=0,,nj,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(1t)n+C1n(1t)n1t+C2n(1t)n2t2++Cn1n(1t)1tn1+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),Bez1=(Bez1i,j),0i,jn

1、贝塞尔曲线 -> 多项式曲线

表示方法是:

a=Bezb

把贝塞尔曲线按照参数 t 升幂排列,皆可以得到其对应的多项式曲线。

Bezi,j={(1)ijCinCji,0,ifijotherwise

也就是:

ai=j=0i(1)ijCinCjibj

2、多项式曲线 ->贝塞尔曲线

表示方法是:

b=Bez1a

Bez(1)i,j=CjiCjn,0,ifjiotherwise

也就是:

bi=j=0iCjiCjnaj

3、参考

[1]:https://en.wikipedia.org/wiki/Convex_hull
[2]:Duncan M. Applied Geometry for Computer Graphics and CAD. Springer, 2005.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值