16-B样条曲线生成算法_第1页
16-B样条曲线生成算法_第2页
16-B样条曲线生成算法_第3页
16-B样条曲线生成算法_第4页
16-B样条曲线生成算法_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

B样条曲线的绘制内容大纲1B样条曲线简介2

B样条曲线定义3均匀周期二次B样条曲线4均匀周期三次B样条曲线

1B样条曲线简介10次Bezier曲线九段二次Bezier曲线

1B样条曲线简介由Gordon和Riesenfeld在1972年提出。B样条是分段曲线,每段参数t的区间是[0,1]。保留Bezier曲线优点,克服了Bezier曲线的弱点。Pi(xi,yi),i=0,1,…,n是控制曲线形状的n+1个控制点Ni,k(t)(i=0,1,…,n)称为k-1次B样条基函数,是递推公式

2B样条曲线定义

(tk-1≤t≤tn+1)注意:ti取值,T=[t0,t1,…,tn+k]是k次B样条函数的节点矢量,节点矢量值不同,就是不同类型的B样条曲线。

(tk-1≤t≤tn+1)i=1,先计算N1,1(t),再计算N1,2(t),…最后计算N1,k(t)

2B样条曲线定义i=0,先计算N0,1(t),再计算N0,2(t),…最后计算N0,k(t)……

(tk-1≤t≤tn+1)

3均匀周期二次B样条曲线均匀性:节点矢量ti=i(i=0,1,2,…,n+k)周期性:每段基函数一样二次B样条曲线表达式:P(t)=Pi(1-t)2/2+Pi+1(-

t2+t+1/2)+Pi+2t2/20

<=t<=1,i=0,1,2,……n-2当t=0时,P(0)=0.5P0+0.5P1二次B样条曲线经过控制多边形各边的中点i=0P(t)=P0(1-t)2/2+P1(-

t2+t+1/2)+P2t2/2P0P1P2当t=1时,P(1)=0.5P1+0.5P2

3均匀周期二次B样条曲线

每条边是二次B样条曲线的切线i=0:P(t)=P0(1-t)2/2+P1(-

t2+t+1/2)+P2t2/2(0≤t≤1)P0P1P2P3P4P1P2P2P3五个控制点i=1:P(t)=P1(1-t)2/2+P2(-

t2+t+1/2)+P3t2/2(0≤t≤1)i=2:P(t)=P2(1-t)2/2+P3(-

t2+t+1/2)+P4t2/2(0≤t≤1)

3均匀周期二次B样条曲线

01234

3均匀周期二次B样条曲线

5012345678910B样条可扩充性Bezier

B样条可局部修改012345678910012345678910

3均匀周期二次B样条曲线

voidBSpline2(CDC*pDC,intx[],inty[],intn,floatdt,COLORREFcolor){intx1,y1,x2,y2;floatn0,n1,n2;

x1=(x[0]+x[1])*0.5,y1=(y[0]+y[1])*0.5;for(inti=0;i<n-1;i++)

for(floatt=dt;t<1.0001;t=t+0.01)

{n0=(1-t)*(1-t)*0.5;

n1=(-2*t*t+2*t+1)*0.5;n2=t*t*0.5;//计算基函数

x2=x[i]*n0+x[i+1]*n1+x[i+2]*n2;

y2=y[i]*n0+y[i+1]*n1+y[i+2]*n2;//计算曲线上点坐标 Line_DDA(pDC,x1,y1,x2,y2,color);

x1=x2,y1=y2;

}}

3均匀周期二次B样条曲线

P0P1P2P3P(t)=Pi(-t3+3t2-3t+1)/6

+Pi+1(3t3-6t2+4)/6

+Pi+2(-3t3+3t2-3t+1)/6

+Pi+3t3/6

0

<=t<=1,i=0,1,2,……n-3

4均匀周期三次B样条曲线

三次B样条曲线表达式:

4均匀周期三次B样条曲线

voidBSpline3(CDC*pDC,intx[],inty[],intn,floatdt,COLORREFcolor){intx1,y1,x2,y2;floatn0,n1,n2,n3;

x1=(x[0]+x[2])*0.5/3+2*x[1]/3;y1=(y[0]+y[2])*0.5/3+2*y[1]/3;

for(inti=0;i<n-2;i++)for(floatt=dt;t<1.0001;t=t+dt) {n0=(-t*t*t+3*t*t-3*t+1)/6; n1=(3*t*t*t-6*t*t+4)/6; n2=(-3*t*t*t+3*t*t+3*t+1)/6; n3=t*t*t/6;//计算基函数 x2=x[i]*n0+x[i+1]*n1+x[i+2]*n2+x[i+3]*n3; y2=y[i]*n0+y[i+1]*n1+y[i+2]*n2+y[i+3]*n3;//计算曲线上点坐标 Line_DDA(pDC,x1,y1,x2,y2,color); x1=x2,y1=y2; }}【例1】已知控

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论