Skip to content

Latest commit

 

History

History
160 lines (98 loc) · 5.94 KB

File metadata and controls

160 lines (98 loc) · 5.94 KB

Computer-Graphics-Course-Experiment

这个仓库中存储着北京林业大学计算机图形学课程的实验,其中的选做和必做部分都完成了,实验取得了满分的成绩。

每个实验的具体要求见如下的实验内容,而其中的参考资料以及其他的内容见任务书

每个实验的源码以及实验报告(说明文档见每个文件夹中的doc文件)

完整的opengl项目在OpenGlProoject中,其中利用vs2022运行.sln文件即可启动整个OpenGL的项目

实验内容:

实验二:多边形填充

实验内容:

  1. 选用任一种光栅图形学算法实现多边形区域的填充。

    如:逐点判断法、扫描线算法、边缘填充算法、种子填充算法(除了边界填充算法)…

  2. 采用C/C++编写程序。

  3. 选作:

改进提供的polygonfill算法演示界面(polygonfill目录下),写入你的填充算法代码。

实验目的:

  1. 通过实现光栅图形学经典的多边形填充算法,深入理解光栅图形学的原理。
  2. 锻炼实践算法的能力。

实验要求:

  1. 调试通过算法程序;
  2. 撰写实验报告(参照所附《实验报告书模板》):
  • 说明算法中所采用的数据结构;
  • 说明算法各函数的功能;
  • 提供程序源代码并进行必要的注释;
  • 针对各种情况进行算法检验(定义任意多边形如:凸多边形、凹多边形、带孔的多边形、多个多边形…),并对结果进行说明。
  • 若在程序中,有任何创新,请注明。将视情况获得加分。

实验三:基于OpenGL的图形学编程初探

实验内容:

  1. 解压GlutLib.zip文件,并按照“glut库安装.txt”中的说明,安装glut库。
  2. 阅读文档CreateProject.txt,建立自己的工程文件。
  3. 基于给定的源代码cube.cpp等分别建立工程文件,并编译执行。
  4. 仔细阅读程序注释,了解利用OpenGL进行计算机图形学编程的框架。
  5. 基于aim.cpp、lines.cpp两个源文件分别建立工程文件,调试通过并执行。
  6. 通过对给定代码进行局部修改,进一步了解部分函数的意义。
  7. 选作:基于glut 和OpenGL实现用橡皮筋交互定义矩形的功能。

实验目的:

  1. 掌握如何建立包含OpenGL库函数的工程文件;
  2. 熟悉如何利用glut进行OpenGL应用程序的窗口及输入、输出管理等;
  3. 熟悉OpenGL的函数。

实验要求:

  1. 通过对给定程序的试运行,解释以下几个函数的作用及各参数的意义:
`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);`
  1. 分析以下两个函数的区别:
glVertex3f(float x, float y, float z);

glVertex2f(float x, float y);
  1. 说明如何利用glut进行OpenGL应用程序的窗口及输入、输出管理。
  2. 分别展示对三个代码的修改,以及执行结果,对比与原来代码执行结果的不同,并说明原因(展示2-3个即可)。
  3. 提交实验报告:

回答1-4所提出的问题,参照所附《实验报告书模板》撰写实验报告(其中的实验结果可略)。

实验四:二维裁剪

实验内容:

  1. 用梁友栋-barsky算法或者中点分割法等其它算法(除cohen-sutherland直线裁剪算法外)实现直线段相对于给定窗口的裁剪。

  2. 采用C/C++ 、OpenGL编写程序(参考所提供的程序代码clip.cpp及第三次实验提供的建立Project的过程说明)。

  3. 选作:

    (1) 利用Glut处理鼠标、键盘输入的功能,实现用鼠标交互输入的方式来定义窗口、被裁剪线段的功能。

    (2) 改进提供的cohen-sutherland算法演示界面(cohen-sutherland.rar),写入你的裁剪算法代码。

实验目的:

  1. 通过实现图形学经典的二维裁剪算法,深入理解场景中对几何对象进行裁剪的原理。
  2. 锻炼实践算法的能力。
  3. 进一步熟悉OpenGL编程。

实验要求:

  1. 调试通过算法程序;
  2. 撰写实验报告(参照所附《实验报告书模板》):
  • l 写出算法流程图
  • l 说明算法中所采用的数据结构;
  • l 说明算法各函数的功能;
  • l 提供程序源代码并进行必要的注释;
  • l 针对各种情况进行算法检验,并对结果进行说明。
  • l 若在程序中,有任何创新,请注明。将视情况获得加分。

实验五:交互图形界面下的真实感图形

实验内容:

1.根据图形学坐标变换的原理,利用OpenGL函数对图形界面中所加载的几何对象进行交互的平移、旋转、缩放等操作。

2.利用OpenGL定义光源及几何对象材料。

3.加载多个几何对象,对比有无消隐处理的结果(利用OpenGL的消隐函数)

4.采用C/C++ 、OpenGL编写程序(参考本次及前几次实验所提供的程序代码及建立Project的过程说明。)。

5.选作:

​ i. 对光照的颜色和位置以及几何对象的材料进行交互修改

​ ii. 利用OpenGL的功能给几何对象粘贴纹理

​ iii. 用MFC实现交互界面

注:如能正确实现以上一个或多个选作内容,将视情况获得附加分。

实验目的:

  1. 熟悉图形学中坐标变换的原理和方法。
  2. 通过对交互图形界面的设计领略OpenGL编程的奥妙。
  3. 初探真实感图形学的魅力。

实验要求:

  1. 调试通过算法程序;
  2. 撰写实验报告(参照所附《实验报告书模板》):
  • l 说明算法各函数的功能;
  • l 提供程序源代码并进行必要的注释;
  • l 在三维空间分别或同时加载若干几何对象对程序进行检验,并对结果进行说明。
  • l 若在程序中,有任何创新,请注明。将视情况获得加分。