- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)