实验七三次B样条曲线的算法实现_第1页
实验七三次B样条曲线的算法实现_第2页
实验七三次B样条曲线的算法实现_第3页
全文预览已结束

下载本文档

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

文档简介

1、word实验七 三次B样条曲线的算法实现一、实验目的根据B样条曲线的根底知识,对3次均匀B样条曲线算法进行程序设计,验证算法的正确性,并修改程序,加深对B样条曲线数学模型的理解。二、实验任务2学时 B样条曲线的程序设计。三、实验内容和实验步骤1.算法从三次B样条曲线的定义可知:当p=3时,3 l =0Ci,3(t)=Pi+l Nl,3(t)= Pi N0,3(t)+ Pi+1 N1,3(t)+ Pi+2 N2,3(t)+ Pi+ 3 N3,3(t) 因为四个调和函数N0,3(t)、N1,3(t)、N2,3(t)和N3,3(t) 参看教材P138-139因此只要给出四个控制点的位置矢量的坐标,当

2、t在0,1范围内取离散的100个点时dt=0.01,分别求出每一个曲线上点,相邻点用直线段连接起来,就可以得到相应的B样条曲线。设控制点的个数为PointNum,要求PointNum4,那么可以生成PointNum-3段三次B样条曲线。其中第i段三次B样条曲线的代数形式为:Ci,3(t)x= Pi x N0,3(t)+ P (i+1) x N1,3(t)+ P (i+2) x N2,3(t)+ P (i+3) x N3,3(t)Ci,3(t)y= Pi y N0,3(t)+ P (i+1) y N1,3(t)+ P (i+2) y N2,3(t)+ P (i+3) y N3,3(t)其中,i=

3、1,2, PointNum-32.程序实现如下:工程名:BSpring(1)将调和函数定义为成员函数,函数形式如下:double CBSpringView:N03(double t) return (-pow(t,3)+3*pow(t,2)-3*t+1)/6);/ pow()函数:求x的y次方(次幂)double CBSpringView:N13(double t) return (3*pow(t,3)-6*pow(t,2)+4)/6);double CBSpringView:N23(double t) return (-3*pow(t,3)+3*pow(t,2)+3*t+1)/6);doub

4、le CBSpringView:N33(double t) return (pow(t,3)/6);2编写OnDraw()函数,程序如下:int n,m,pointnum,i,j;int x10,y10,curx,cury; /(xi,yi)为顶点坐标double t,dt; CPen PenRed(PS_SOLID,1,RGB(255,0,0);/定义红色笔 CPen PenBlue(PS_SOLID,1,RGB(0,0,255);/定义蓝色笔n=3; pointnum=5; /5个顶点,那么绘制5-3=2段B样条曲线x1=10;y1=200;x2=40;y2=100;x3=100;y3=100;x4=150;y4=150;x5=150;y5=200;/绘出特征多边形pDC-SelectObject(&PenBlue);pDC-MoveTo(x1,y1);for (i=2;iLineTo(xi,yi);/绘制B样条曲线m=pointnum-n; dt=0.01;pDC-SelectObject(&PenRed);for (i=1;i=m;i+) /绘制m条段B样条曲线 t=0; for (j=0;jMoveTo(curx,cury); else pDC-LineTo(c

温馨提示

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

评论

0/150

提交评论