深圳大学计算机图形学大作业实验报告

}

}

if (state) { return; }

board[last.x][last.y] = 0; --stage;

由于程序过多,上面只列出了部分算法的核心代码和截图。

2.部分算法说明: Dda算法:

算法源于书本上代码,从鼠标点击屏幕的坐标得到直线段,利用浮点数取整得到y值,其中用到浮点数的乘法,加法和取整运算。这个算法用c来实现比较简单易懂,可是有浮点数取整运算,不利于硬件实现。

填充算法:

这个是区域填充的扫描线算法,四连通和扫描线种子填充法是可以填充任意形状的图形(曲线,多边形等)的。在使用时只需先画好需要填充的边界然后选择种子填充并用鼠标左键点击确定种子点即可填充。

扫描转换:

扫描线转换算法是固定填充的,对指定区域进行填充这个程序的程序体很复杂,涉及到很多的子函数调用,分工合作时相当困难,将其合为一个程序不利于寻找错误,也降低了程序可读性,故做此算法时我们都是集中在一起讨论,完成这个程序用时相当长。

裁剪算法:

源于书本的cohen—sutherland算法,要注意的一点就是书本上描述的坐标系跟电脑上实现坐标系不同,要修改一下在生成编码的时候因此而产生的符号问题。

二维动画:

这个作业里,实现了一个单车和时钟的动画。作业的原理使用二维坐标变换,二维旋转的原理。 作业在显示时候有点闪烁,轮子滚动过慢。 BEZIER曲线:

算法源于书上,是三次bezier曲线的算法。

Bresenham画圆和中点画圆算法:

两个算法均为书上源程序,实现并没有太大的问题,但是有一点没有处理好,就是不可以确定圆心位置,在最后实现效果上并没有做好。

雪花曲线:

Koch雪花可由一个正三角形生成,即将正三角形的每一边三等分后将中间一段向外凸起成一个以该段长度为边长的正三角形(去掉底边),然后对每一段直线又再重复上述过程,这样无休止地重复下去即得Koch雪花。

马跳回溯算法:

定义结构体:struct PLACE{int x, int y}表示棋盘上的位置。 依题意,马每跳一步之后都可以从七个不同的方向选择下一步的跳马,当然,前提是跳的这一步在棋盘内且它前面的任何一步都没跳到这一格子上(限界),就可以认为这一步跳成功,否则跳马不成功。若跳马不成功,则找下一个方向尝试跳马,若七个方向都跳马不成功,则回溯。

3.使用说明

系统操作说明

一:程序运行环境: 个人计算机,VC6环境

二: 操作说明:

直线:直线有三种算法,分别是DDA,Bresenham 和中点算法,在画直线时,先在画图区点一下,然后按住鼠标左键移动就可以动态的画直线了,到合适的时候释放左键即可。

圆:圆是用Bresenham算法实现的,在画圆时,先在画图区点一点为圆心,然后按住鼠标左键移动可以改变半径,到合适的时候释放左键即可。

椭圆:椭圆是用中点算法实现的,在画椭圆时,先在画图区点一下,然后按住鼠标左键移动可以改变椭圆短半径和长半径,到合适的时候释放左键即可。

二维填充:二维填充有三种算法,其中扫描线转换算法是固定填充的,对指定区域进行填充。四连通和扫描线种子填充法是可以填充任意形状的图形(曲线,多边形等)的。在使用时只需先画好需要填充的边界然后选择种子填充并用鼠标左键点击确定种子点即可填充。

二维裁剪:二维裁剪是演示性的功能,直接点击该菜单项就可演示。

二维基本变换:二维基本变换是演示性的功能,直接点击该菜单项就可演示。

二维动画:二维动画是演示性的功能,直接点击该菜单项就可演示。

三维图形:三维图形是演示性的功能,直接点击该菜单项就可以演示了。不过三维图形里面的凸多边形建模是交互式的,可以滚动鼠标的滑轮改变投影参考点以获得不同的视觉效果。

Bezier曲线:Bezier曲线是用DeCasteljau 算法实现的,按提示说明在画图区点四个点就可以画Bezier曲线了。

雪花曲线:雪花曲线是选做项目,是用递归实现的,点击该菜单项即可演示雪花曲线了。

跳马回溯法:跳马回溯法也是选作项目,按开始键后用左键在屏幕上点一下,释放鼠标后会显示棋盘,用回溯法跳马,跳完所有步后回到原点结束。

颜色:可以改变画图颜色。

清除:把画图区置为背景色白色。

分工情况:

姓名 肖健 负责部分 主程序包括直线,圆和椭圆,多边形扫描填充和区域填充,二维图形变换(自行车和时钟),三维图形变换, Bezier曲线等 李泽凯 汪兆千

PPT,敲代码,找资料, 马跳回溯 做报告, 雪花曲线 参考文献:

[1]刘倩主编, 计算机图形学实验教程,西南交通大学出版社,2009 [2]张彩明等编著,计算机图形学(第二版),科学出版社,2008 [3]白建军等编著,Opengl三维图形设计与制作,人民邮电出版社,1999 [4] 孙家广,胡事民 编著, 计算机图形学基础教程,清华大学出版社,2005 [5] 孙鑫、余安萍编著,VC++深入详解,电子工业出版社,2006 [6] 侯俊杰主编,深入浅出MFC,华中科技大学出版社,2001 [7]pndn程序员联合网上的源程序----计算机图形学 [8] pndn程序员联合网上的源程序---- Graphics

[9]白燕斌,史惠康主编,opengl三维图形库编程指南,机械工业出版社,1998 [10]周建龙 肖春主编,计算机图形学理论与Opengl编程实践,华南理工大学出版社,2007

[11] 孙鑫VC++网上视频

指导教师批阅意见: 成绩评定: 指导教师签字: 年 月 日 备注: 注:1、报告内的项目或内容设置,可根据实际情况加以调整和补充。

2、教师批改学生实验报告时间应在学生提交实验报告时间后10日内。

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4