计算机图形学 编程生成“三次贝塞尔”曲线.doc

上传人:灯火****19 文档编号:137317236 上传时间:2020-07-07 格式:DOC 页数:7 大小:36KB
返回 下载 相关 举报
计算机图形学 编程生成“三次贝塞尔”曲线.doc_第1页
第1页 / 共7页
计算机图形学 编程生成“三次贝塞尔”曲线.doc_第2页
第2页 / 共7页
计算机图形学 编程生成“三次贝塞尔”曲线.doc_第3页
第3页 / 共7页
计算机图形学 编程生成“三次贝塞尔”曲线.doc_第4页
第4页 / 共7页
计算机图形学 编程生成“三次贝塞尔”曲线.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《计算机图形学 编程生成“三次贝塞尔”曲线.doc》由会员分享,可在线阅读,更多相关《计算机图形学 编程生成“三次贝塞尔”曲线.doc(7页珍藏版)》请在金锄头文库上搜索。

1、集 美 大 学计 算 机 工 程 学 院实 验 报 告课程名称计算机图形学教程实验名称实验五、编程生成“三次贝塞尔”曲线实验类型设计型姓名学号日期12月12日地点成绩教师评语:一、 实验目的:一方面,让学生对自由曲线的生成算法有更深入的理解,特别是对于曲线的逼近,能够通过实验编程来验证书上所提供的算法思想:另一方面,在图形程序设计方法(如设计各种各样的图形)、绘图函数的使用以及C和C+语言编程环境、程序的调试和测试方面受到比较系统和严格的训练。二、 实验内容:运用所学的三次贝塞尔曲线生成的算法,根据以下数据点x, y:50, 100 80, 230 100, 270 140, 160 180,

2、 50 240, 65 270, 120 330, 230 380, 230 430, 150计算出结果,并实现三段贝塞尔在屏幕上显示的功能三、 实验要求:(1)3段三次贝塞尔曲线在衔接点上要连续,曲线整体效果要光滑。(2)整个图形轮廓要清晰,色彩要分明四、实验环境: 1PC,CPU:P4 2.0GHz以上,内存:512M,硬盘:40GB以上; 2操作系统:Microsoft Windows 2000 /2003/XP; 3软件:VC或JAVA等。五、实验内容及完成情况:#include graphics.h#include conio.h#include stdio.htypedef str

3、uctdouble x,y;DPOINT; /定义结构体class Bezier /定义Bezier类private:DPOINT* bP;int m_maxIndex;void drawFrame();void drawCurve();void drawCurve(int p0,int p1,int p2,int p3);public:Bezier(DPOINT* p,int len); /定义构造函数void draw();Bezier:Bezier(DPOINT* p,int len) /构造函数的实现this -bP=p;m_maxIndex=len-1;void Bezier:dra

4、w() /通过公有函数调用私有函数drawFrame();drawCurve();void Bezier:drawFrame() /其功能是绘制出多边形和各个端点setcolor(12);for(int i=0;im_maxIndex;i+)line( bPi.x, bPi.y, bPi+1.x, bPi+1.y ); /绘制多边形circle(bPi.x, bPi.y,5); /绘制各个端点circle(bPm_maxIndex.x,bPm_maxIndex.y,5);void Bezier:drawCurve() /实现多段Bezier曲线绘制的功能for(int i=0;i=m_maxI

5、ndex-3;i+=3)drawCurve(i,i+1,i+2,i+3);void Bezier:drawCurve(int p0,int p1,int p2,int p3) /实现绘制某一段Bezier曲线的功能double tmpx=0.0;double tmpy=0.0;double t=0.0;for(;t=1.0;t+=0.001)tmpx=(-bPp0.x+3*bPp1.x-3*bPp2.x+bPp3.x)*t*t*t+(3*bPp0.x-6*bPp1.x+3*bPp2.x)*t*t+(-3*bPp0.x+3*bPp1.x)*t+bPp0.x;tmpy=(-bPp0.y+3*bPp

6、1.y-3*bPp2.y+bPp3.y)*t*t*t+(3*bPp0.y-6*bPp1.y+3*bPp2.y)*t*t+(-3*bPp0.y+3*bPp1.y)*t+bPp0.y;putpixel(tmpx,tmpy,3);void main() /主函数的实现int graphdriver=DETECT,graphmode;initgraph(&graphdriver,&graphmode,E:tc3bgi);setbkcolor(0);outtextxy(10,20,nnnnnn jisuan1013 2010810070 chengaowei);DPOINT* p;p=new DPOIN

7、T10; p0.x=50.0;p0.y=100.0;p1.x=80.0;p1.y=230.0;p2.x=100.0;p2.y=270.0;p3.x=140.0;p3.y=160.0;p4.x=180.0;p4.y=50.0;p5.x=240.0;p5.y=65.0;p6.x=270.0;p6.y=120.0;p7.x=330.0;p7.y=230.0;p8.x=380.0;p8.y=230.0;p9.x=430.0;p9.y=150.0;Bezier bzr(p,10);bzr.draw();delete p;getch();closegraph();运行结果:六、实验总结:通过这次实验,让我对自由曲线的生成算法有更深入的理解,特别是对于曲线的逼近,能够通过实验编程来验证书上所提供的算法思想,在图形程序设计方法(如设计各种各样的图形)、绘图函数的使用以及C和C+语言编程环境、程序的调试和测试方面受到比较系统和严格的训练。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号