计算机图形学上机实验报告|上机实验实习报告|计算机上机实习报告|计算机图形学实验|计算机图形学编程程序源代码
1>实现方法: 与中点Bresenham算法基本原理一样,即当 ,此时x为最大位移方向,算法每次在x方向上加1,y方向上减1或减0。不同就是对于当前选定的点Pi(xi,yi),下一个点应该取哪一个的依据更简单:即判断直线与垂直网格线交点与网格线之间的误差d与0.5的大小关系
2>程序流程:
? 为简化计算,取e=2(d-0.5)dx
(1)输入直线两端点p0(x0,y0)和p1(x1,y1).
(2) 计算初始值dx,dy,d=-dx,x=x0,y=y0.
(3) 绘制点(x,y).
(4) e更新为e+2dy.判断e的符号.若e<0,则(x,y)更新为(x+1,y);否则(x,y)更新为(x+1,y+1), ,e更新为e-2dx.
(5) 当直线没画完时,重复步骤(3)和(4),否则结束
5、圆的绘制
1>实现方法: 与中点Bresenham算法基本原理相似,即当 ,此时x为最大位移方向,算法每次在x方向上加1,y方向上减1或减0。即对于当前选定的点Pi(xi,yi),下一个点应该取哪一个就依据圆的方程计算中点的位置来判断
2>程序流程:
? 为简化计算,取e=2(d-0.5)dx
(1) 输入圆的半径r.
(2) 计算初始值d=1-r,x=x0,y=r.
(3) 绘制点(x,y)及其在八分圆中的另外7个对称点.
(4) 判断d的符号.若d<0, 先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5 ,再将(x,y)更新为(x+1,y-1).
(5) 当x<=y时,重复步骤(3)和(4),否则结束
三、实验结果
初始界面1-1
DDA算法画直线图1-2
?中点Bresenham算法画直线图1-3
?改进Bresenham算法画直线图1-4?????
八分法绘制圆图1-5
四、体会
?? 体会主要有以下两点:
?????? ? 1> 经过这次实验,逐步对opengl软件有了一定的了解,而且对于理论知识有了很好的巩固,对于中点Bresenham算法的设计思想有了更深刻的认识,熟练地掌握了它的设计方法,当初在学习理论知识的时候,对于此算法的代码实现充满了猜测与想象,经过实地训练,终于了解到如何用代码实现画图,而且并非仅仅会C语言就能编写画图程序,gult程序有自己特殊的框架与实现过程.在这次试验中,虽然没有完全理解其原理,但在一定程度上已经为我们今后的学习应用打下了基础.
?????? 2>? 通过实验,使我复习了C++的编程调试工具的使用,也是一定程度上的收获吧.