这个仓库中存储着北京林业大学计算机图形学课程的实验,其中的选做和必做部分都完成了,实验取得了满分的成绩。
每个实验的具体要求见如下的实验内容,而其中的参考资料以及其他的内容见任务书
每个实验的源码以及实验报告(说明文档见每个文件夹中的doc文件)
完整的opengl项目在OpenGlProoject中,其中利用vs2022运行.sln文件即可启动整个OpenGL的项目
实验内容:
-
选用任一种光栅图形学算法实现多边形区域的填充。
如:逐点判断法、扫描线算法、边缘填充算法、种子填充算法(除了边界填充算法)…
-
采用C/C++编写程序。
-
选作:
改进提供的polygonfill算法演示界面(polygonfill目录下),写入你的填充算法代码。
实验目的:
- 通过实现光栅图形学经典的多边形填充算法,深入理解光栅图形学的原理。
- 锻炼实践算法的能力。
实验要求:
- 调试通过算法程序;
- 撰写实验报告(参照所附《实验报告书模板》):
- 说明算法中所采用的数据结构;
- 说明算法各函数的功能;
- 提供程序源代码并进行必要的注释;
- 针对各种情况进行算法检验(定义任意多边形如:凸多边形、凹多边形、带孔的多边形、多个多边形…),并对结果进行说明。
- 若在程序中,有任何创新,请注明。将视情况获得加分。
实验内容:
- 解压GlutLib.zip文件,并按照“glut库安装.txt”中的说明,安装glut库。
- 阅读文档CreateProject.txt,建立自己的工程文件。
- 基于给定的源代码cube.cpp等分别建立工程文件,并编译执行。
- 仔细阅读程序注释,了解利用OpenGL进行计算机图形学编程的框架。
- 基于aim.cpp、lines.cpp两个源文件分别建立工程文件,调试通过并执行。
- 通过对给定代码进行局部修改,进一步了解部分函数的意义。
- 选作:基于glut 和OpenGL实现用橡皮筋交互定义矩形的功能。
实验目的:
- 掌握如何建立包含OpenGL库函数的工程文件;
- 熟悉如何利用glut进行OpenGL应用程序的窗口及输入、输出管理等;
- 熟悉OpenGL的函数。
实验要求:
- 通过对给定程序的试运行,解释以下几个函数的作用及各参数的意义:
`glTranslatef(float x, float y, float z);`
`glVertex3f(float x, float y, float z);`
`glColor3f (float a, float b, float c);`
`glLineWidth (float a);`
`glutInitWindowSize (int a,int b);`
`glutInitWindowPosition (int a,int b);`
- 分析以下两个函数的区别:
glVertex3f(float x, float y, float z);
glVertex2f(float x, float y);
- 说明如何利用glut进行OpenGL应用程序的窗口及输入、输出管理。
- 分别展示对三个代码的修改,以及执行结果,对比与原来代码执行结果的不同,并说明原因(展示2-3个即可)。
- 提交实验报告:
回答1-4所提出的问题,参照所附《实验报告书模板》撰写实验报告(其中的实验结果可略)。
实验内容:
-
用梁友栋-barsky算法或者中点分割法等其它算法(除cohen-sutherland直线裁剪算法外)实现直线段相对于给定窗口的裁剪。
-
采用C/C++ 、OpenGL编写程序(参考所提供的程序代码clip.cpp及第三次实验提供的建立Project的过程说明)。
-
选作:
(1) 利用Glut处理鼠标、键盘输入的功能,实现用鼠标交互输入的方式来定义窗口、被裁剪线段的功能。
(2) 改进提供的cohen-sutherland算法演示界面(cohen-sutherland.rar),写入你的裁剪算法代码。
实验目的:
- 通过实现图形学经典的二维裁剪算法,深入理解场景中对几何对象进行裁剪的原理。
- 锻炼实践算法的能力。
- 进一步熟悉OpenGL编程。
实验要求:
- 调试通过算法程序;
- 撰写实验报告(参照所附《实验报告书模板》):
- l 写出算法流程图
- l 说明算法中所采用的数据结构;
- l 说明算法各函数的功能;
- l 提供程序源代码并进行必要的注释;
- l 针对各种情况进行算法检验,并对结果进行说明。
- l 若在程序中,有任何创新,请注明。将视情况获得加分。
实验内容:
1.根据图形学坐标变换的原理,利用OpenGL函数对图形界面中所加载的几何对象进行交互的平移、旋转、缩放等操作。
2.利用OpenGL定义光源及几何对象材料。
3.加载多个几何对象,对比有无消隐处理的结果(利用OpenGL的消隐函数)
4.采用C/C++ 、OpenGL编写程序(参考本次及前几次实验所提供的程序代码及建立Project的过程说明。)。
5.选作:
i. 对光照的颜色和位置以及几何对象的材料进行交互修改
ii. 利用OpenGL的功能给几何对象粘贴纹理
iii. 用MFC实现交互界面
注:如能正确实现以上一个或多个选作内容,将视情况获得附加分。
实验目的:
- 熟悉图形学中坐标变换的原理和方法。
- 通过对交互图形界面的设计领略OpenGL编程的奥妙。
- 初探真实感图形学的魅力。
实验要求:
- 调试通过算法程序;
- 撰写实验报告(参照所附《实验报告书模板》):
- l 说明算法各函数的功能;
- l 提供程序源代码并进行必要的注释;
- l 在三维空间分别或同时加载若干几何对象对程序进行检验,并对结果进行说明。
- l 若在程序中,有任何创新,请注明。将视情况获得加分。