bezier曲线的编程,实验报告.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
bezier曲线的编程,实验报告   《计算机图形学》实验4实验报告   实验题目:参数曲线绘制   实验内容:1圆的参数曲线绘制。   2显式数学曲线描绘程序。   3贝赛尔曲线绘制。   编写程序调用验证之。   参考资料:1   2   3   4数学曲线绘制.ppt和实验3的参考ppt   基本概念:   1、圆的参数曲线绘制:圆的参数曲线绘制就是按照圆的定义,利用步长,得在显示域上每一点的位置,然后绘制。圆是图形中经常使用的元素,圆被定义为所有离一中心位置距离为给定值R的点集。   2、显示数学曲线描绘程序:显示曲线的绘制就是在已知的坐标系上,按照方程要求在固定的点画点,然后连接成一条线。   3、贝塞尔曲线的绘制:贝赛尔曲线的每一个顶点都有两个控制点,用于控制在顶点两侧的曲线的弧度。它是应用于二维图形应用程序的数学曲线。曲线的定义有四个点:起始点、终止点以及两个相互分离的中间点。滑动两个中间点,贝塞尔曲线的形状会发生变化。   算法设计:   1、圆的算法设计:本例程体现的主要是圆的快速算法,这里的主要算法是:   X=Xc+Rcost   Y=Yc+Rsint0 个点之间的线段,最后从最左节点绘制到最右节点坐标后结束绘制。体现在代码中就是:   for(t=0;tMoveTo(coeff_x[0],coeff_y[0]);for(i=1;iLineTo(coeff_x[i],coeff_y[i]);}for(t=0;tSetPixel(x,y,RGB(0,0,0));}   delt=/(float)npoints;   t=;   for(i=0;iMoveTo((int)coeffx[i],(int)coeffy[i]);   pDC->LineTo((int)coeffx[i+1],(int)coeffy[i+1]);   }   bezpoint(degree,npoints,coeffx,points1);   bezpoint(degree,npoints,coeffy,points2);   for(i=0;iSetPixel((int)points1[i],(int)points2[i],RGB(123,123,123));}   B样条曲线   voidCBView::bsp(intdegree,intl,float*coeff,float*knot,intdense,float*points,int*point_num)   {   inti,ii;   floatu;   *point_num=0;   for(i=degree-1;iknot[i])   for(ii=0;ii=i-degree+k+1;j--)   {   t1=(knot[j+degree-k]-u)/(knot[j+degree-k]-knot[j-1]);   t2=;   coeffa[j]=t1*coeffa[j-1]+t2*coeffa[j];   }   returncoeffa[i+1];   }   主函数:   voidCBView::OnDraw(CDC*pDC)   {   CBDoc*pDoc=GetDocument();   ASSERT_VALID(pDoc);   //TODO:adddrawcodefornativedatahere   intk,n;   intdegree,i,a;   intdense=290,l=5;   floatcoeffx[]={10,40,265,300,400,500,600};   floatcoeffy[]={20,130,160,90,300,100,300};   floatpoints1[XX],points2[XX];   floatknot[]={0,0,0,0,0,1,2,2,2,2,2};   int*point_num;   k=5,n=5;/*n+1个点*/   degree=5;   a=0;   point_num=&a;   for(i=0;iMoveTo((int)coeffx[i],(int)coeffy[i]);   pDC->LineTo((int)coeffx[i+1],(int)coeffy[i+1]);   }   bsp(degree,l,coeffx,knot,dense,points1,point_num);   bsp(degree,l,coeffy,knot,dense,points2,point_num);   }for(i=0;iSetPixel((int)points1[i],(int)points2[i],RGB(123,123,123));   四、程序调试及结果的分析   1、deCas

文档评论(0)

a888118a + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档