下载后可任意编辑计算机图形学基础实验报告院 系: 计算机科学学院 班 级: 2024 级 4 班 姓 名: 彭晓 学 号: 21209010434 下载后可任意编辑实验二 直线生成算法的实现1.实验目的: 理解基本图形元素光栅化的基本原理,掌握一种基本图形元素光栅化算法,利用 OpenGL实现直线光栅化的 DDA 算法
2.实验内容:(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果;(2) 指出示范程序采纳的算法,以此为基础将其改造为中点线算法或 Bresenham 算法,写入实验报告;(3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告;(4) 了解和使用 OpenGL 的生成直线的命令,来验证程序运行结果
3.实验原理: 示范代码原理参见教材直线光栅化一节中的 DDA 算法
下面介绍下 OpenGL 画线的一些基础知识和 glutReshapeFunc()函数
(1)数学上的直线没有宽度,但 OpenGL 的直线则是有宽度的
同时,OpenGL 的直线必须是有限长度,而不是像数学概念那样是无限的
可以认为,OpenGL 的“直线”概念与数学上的“线段”接近,它可以由两个端点来确定
这里的线由一系列顶点顺次连结而成有闭合和不闭合两种
前面的实验已经知道如何绘“点”,那么 OpenGL 是如何知道拿这些顶点来做什么呢
是一个一个的画出来,还是连成线
或者构成一个多边形
或是做其它事情呢
为了解决这一问题,OpenGL 要求:指定顶点的命令必须包含在 glBegin 函数之后,glEnd 函数之前(否则指定的顶点将被忽略),并由 glBegin 来指明如何使用这些点
例如:glBegin(GL_POINTS);glVertex2f(0
0f);glVertex2f(0
0f);glEnd(); 则这两个点将分别被画