您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 实验报告(贝塞尔曲线生成算法的设计与调试)
实验报告贝塞尔曲线生成算法的设计与调试一、实验目的在掌握曲线、曲面数学理论的基础上,通过调试,绘制Bezier曲线。加深同学对数学理论的理解。通过二条Bezier曲线的拼接设计,掌握自由曲线的拟合方法。二、实验原理1、由三次Bezier曲线的公式:P(t)=∑PiBi,3(t)出发,编写生成Bezier曲线的程序,要求如下:(1)用鼠标输入特征多边形的四点。然后调用Bezier曲线生成算法绘出曲线。(2)重复上步3—4遍,验证编写的算法的正确性。2、将特征多边形改为五个控制点,修改程序后绘出四次曲线。3、实现二条三次Bezier的拼接,并使连接点处保持一阶连续。三、实验程序typedefcptypefloat[4][4];floatcc(intn,inti)//计算n!/(i!(n-i)!){intj;floata;a=1;for(j=i+1;j=n;j++)a*=j;for(j=2;j=n-i;j++)a/=j;returna;}floatb_lend(Inti,intn,floatt2)//计算Bi,n(t){floatv;v=cc(n,i);for(j=1;j=i;j++)v*=t2;for(j=1;j=n-i;j++)v*=(1-t2);returnv;}voidbezier(floatx0,floaty0,floatz0,floatt0,intn,cptypecp2)//给定t0,计算f(t0){inti;floatb1,g;for(i=0;i=n;i++){b1=b_lend(i,n,t0);x0=x0+cp2[i,1]*b1;y0=y0+cp2[i,2]*b1;z0=z0+cp2[i,3]*b1;}}voiddraw_curv(intk,cptypecp1)//将t分成k等份,循环迭代,绘出曲线。{inti,j,x1,y1,z1;floatx,y,z,delt;delt=1.0/k;t=0;for(i=1;i=k;i++){x=y=z=0;bezier(x,y,z,t,3,cp1);if(t==0)moveto(x,y);elselineto(x,y);t+=delt;}}四、测试结果五、实验总结贝塞尔曲线的算法编写中,一些数学函数的调用也很复杂,因为不常用,所以经常翻阅API文档。最困难的是因为对该图形系统的不熟悉,导致操作时遇到一些难题,仔细比对才得以解决。同时对一些数学函数的使用再次加深了印象,更重要的是掌握了许多实用的计算机图形学的算法。
本文标题:实验报告(贝塞尔曲线生成算法的设计与调试)
链接地址:https://www.777doc.com/doc-2460585 .html