课程实验指导
文章平均质量分 54
实验指导书
图形空间
这个作者很懒,什么都没留下…
展开
-
实验0.1 FreeGlut配置简介
1.FreeGlut简介:先介绍下Glut库。GLUT最初由MarkKilgard编写,从OpenGL Redbook(红宝书)第二版起就用来作为示例程序的支持环境,直到第八版为止(注:第九版开始改为GLFW)。从那时起,GLUT因为其简单、可用性广、可移植性强,被广泛应用于各种OpenGL实际应用中。Glut最新版本为3.7版,大致在1998年8月停止维护和更新,同时其代码也没有开源。Fre...原创 2019-02-20 11:47:42 · 19034 阅读 · 7 评论 -
实验0.2 OpenGL程序创建与运行
下列介绍与图示均以Microsoft Visual Studio Community 2017版本(下面简称为VS)为例,其它版本类似。1. 创建控制台应用(1)点击:文件->新建->项目,如下图所示:选择“Visual C+±>Windows桌面->控制台应用”:在名称对应框中,修改工程名称为“HelloPoint”:点击“确定”,得到缺省工程结果,如图所示:2. 生成解决方案,确认生成没有错误(1) 点击菜单:生成->生成解决方案,如图所示:(2)原创 2020-05-20 08:21:29 · 2862 阅读 · 1 评论 -
实验1 OpenGL初识
一.实验目的熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘图的特点;利用VC+OpenGL作为开发平台设计程序,以能够在屏幕上生成任意一个像素点作为本实验的目标。二.实验内容了解和使用VC的开发环境,理解简单的OpenGL程序结构。掌握OpenGL提供的基本图形函数,尤其是生成点的函数。三.实验原理1. 基本语法常用的程序设计语言,如C、C++、Pascal、Fortran和Java等,都支持OpenGL的开发。这里只讨论C版本下OpenGL的语法。OpenGL基本函数均使用原创 2020-05-19 19:11:37 · 3858 阅读 · 0 评论 -
实验2 OpenGL交互
一.实验目的理解并掌握一个OpenGL程序的常见交互方法。二.实验内容运行示范代码,掌握程序鼠标交互方法、鼠标坐标获取方法。尝试为示范代码添加键盘与菜单控制,来实现绘制一些基本图形功能。三.实验原理在OpenGL中处理鼠标事件非常方便,GLUT已经为我们注册好了函数,只需要我们提供一个方法。使用glutMouseFunc函数,就可以注册自定义函数,这样当发生鼠标事件时就会自动调用自己定义的方法。函数的原型是:void glutMouseFunc(void(*func)(int but原创 2020-10-21 11:50:24 · 5831 阅读 · 1 评论 -
实验3 直线光栅化
1.实验目的:理解基本图形元素光栅化的基本原理;掌握基本图形元素光栅化方法,如中点方法,Bresenham方法;利用OpenGL实现基本图形元素的光栅化算法。2.实验内容:(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果。(2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告。(3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告。(4) 了解和使用OpenGL的生成直线的命令,来验证程序运行结果。3.实验原原创 2020-10-21 12:04:33 · 5797 阅读 · 4 评论 -
实验3.1 直线光栅化(键盘交互版)
这个版本是在实验3的基础上增加了键盘交互功能。1.实验目的:理解基本图形元素光栅化的基本原理;掌握基本图形元素光栅化方法,如中点方法,Bresenham方法;利用OpenGL实现基本图形元素的光栅化算法。2.实验内容:(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果。(2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告。(3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告。(4) 了解和使用OpenG.原创 2020-10-21 12:08:57 · 1786 阅读 · 0 评论 -
实验3.2 一般直线的中点绘制算法
教材上的直线绘制算法只针对斜率0原创 2022-07-28 15:27:02 · 1003 阅读 · 0 评论 -
实验4 直线编码裁剪算法
1.实验目的:了解二维图形裁剪的原理(点的裁剪、直线的裁剪、多边形的裁剪);利用VC+OpenGL实现直线的裁剪算法。2.实验内容:(1) 理解直线裁剪的原理(Cohen-Surtherland算法、梁友栋算法)。(2) 利用VC+OpenGL实现直线的编码裁剪算法,在屏幕上用一个封闭矩形裁剪任意一条直线。(3) 调试、编译、修改程序。(4) 尝试实现梁友栋裁剪算法。3.实验原理:在编码裁剪算法中,为了快速判断一条直线段与矩形窗口的位置关系,采用了如图A.4所示的空间划分和编码方案。原创 2020-10-21 14:13:51 · 4706 阅读 · 0 评论 -
实验4.1 编码裁剪算法(鼠标交互版)
1.实验目的:理解直线裁剪的基本原理;验证直线的编码裁剪算法;实现梁友栋-Barsky裁剪算法;2.实验内容:本次实验主要结合鼠标画线程序来验证编码裁剪算法和实现梁友栋-Barsky裁剪算法,具体步骤如下:(1) 阅读学习所给的编码裁剪示范代码,了解程序使用方法,并结合三种不同类型直线对其进行裁剪测试,将测试结果分别存为图1,图2和图3,保存至word实验文档中(30分钟);(2) 为示范代码增加梁友栋-Barsky裁剪算法,并通过键盘按键“L”来控制,即按键盘“L”键时,用梁友栋-Bar原创 2020-10-21 14:31:04 · 2078 阅读 · 0 评论 -
实验5 OpenGL二维几何变换
1.实验目的:理解并掌握OpenGL二维平移、旋转、缩放变换的方法。2.实验内容:(1)阅读实验原理,掌握OpenGL程序平移、旋转、缩放变换的方法。(2)根据示范代码,完成实验作业。3.实验原理:(1) OpenGL下的几何变换在OpenGL的核心库中,每一种几何变换都有一个独立的函数,所有变换都在三维空间中定义。平移矩阵构造函数为glTranslate<f,d>(tx, ty, tz),作用是把当前矩阵和一个表示移动物体的矩阵相乘。tx、ty、tz指定这个移动物体的矩阵原创 2020-10-21 15:24:48 · 11844 阅读 · 8 评论 -
实验6 OpenGL模型视图变换
1.实验目的:学习了解三维图形几何变换原理。理解掌握OpenGL三维图形几何变换的方法。理解掌握OpenGL程序的模型视图变换。掌握OpenGL三维图形显示与观察的原理与实现。2.实验内容:(1)阅读教材有关三维图形变换原理,运行示范实验代码,掌握OPENGL程序三维图形变换的方法;(2)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换。(3)请分别调整观察变换矩阵、模型变换矩阵和投影变换矩阵的参数,观察变换结果;(4)掌握三维观察流程、观察坐标系的确定、世界坐标原创 2020-10-21 15:44:10 · 8994 阅读 · 5 评论 -
实验7 3D机器人
1.实验目的:(1) 熟悉视点观察函数的设置和使用。(2) 熟悉3D图形变换的设置和使用。(3) 进一步熟悉基本3D图元的绘制。(4) 体验透视投影和正交投影的不同效果。(5) 掌握简单机器人编程。2.实验内容:(1)简单机器人。设计如图A.7所示。机器人由四大部分组成,即头、身、双手、双腿,分别由立方体经过图形变换而成。头部尺寸,宽为1,高为1,厚为0.5;身体尺寸,宽为4,高为4,厚为0.5;手部尺寸,宽为1,高为3,厚为0.5,手与手心距离2.5,手与肩齐平;腿部尺寸,宽为1,高为3,厚原创 2020-10-21 16:28:08 · 6449 阅读 · 1 评论 -
实验8 OpenGL太阳系动画
1.实验目的:熟悉颜色缓存、深度缓存、模板缓存、累计缓存的内容,掌握缓存清除的方法;建立太阳、地球、月亮的运动模型;利用双缓存技术,用动画方式显示模型,加深读者对几何变换、投影变换以及观察变换的理解,并提高利用图形软件包绘制图形的能力。2.实验内容: 模拟简单的太阳系,太阳在中心,地球每365天绕太阳转一周,月球每年绕地球转12周。另外,地球每天24个小时绕它自己的轴旋转。3.实验原理:(1)主要用三维平移变换、旋转变换实现太阳、地球、月亮的相对运动。 本节实验绘制了一个简单的太阳系原创 2020-10-21 16:38:09 · 6182 阅读 · 0 评论 -
实验9 OpenGL光照
1.实验目的:了解掌握OpenGL程序的光照与材质,能正确使用光源与材质函数设置所需的绘制效果。2.实验内容:(1)下载并运行Nate Robin程序包中的lightmaterial程序,试验不同光照、材质系数。(2)运行示范代码,了解光照与材质函数使用。3.实验原理:为在场景中增加光照,需要执行以下步骤。(1)设置一个或多个光源,设定它的有关属性。(2)选择一种光照模型。(3)设置物体的材料属性。具体见教材用OpenGL生成真实感图形的相关内容。4.实验代码:#include &l原创 2020-10-21 19:21:27 · 5780 阅读 · 0 评论 -
实验10 Bezier曲线生成
1.实验目的:了解曲线的生成原理;掌握几种常见的曲线生成算法,利用VC+OpenGL实现Bezier曲线生成算法。2.实验内容:(1)结合示范代码了解曲线生成原理与算法实现,尤其是Bezier曲线。(2)调试、编译、修改示范程序。3.实验原理:Bezier曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的Bezier曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始点和终止点,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的原创 2020-10-22 00:19:42 · 8915 阅读 · 4 评论 -
实验10 Bezier曲线生成-实验提高-控制点生成B样条曲线
本代码根据已知控制点( 10, 5, 0 ),( 5, 10, 0 ),( -5, 15, 0 ),( -10, -5, 0 ),( 4, -4, 0 ),( 10, 5, 0 ), ( 5, 10, 0 ), ( -5, 15, 0 ), ( -10, -5, 0 ),( 10, 5, 0 )来生成三次B样条曲线。原创 2022-06-11 07:43:21 · 1173 阅读 · 1 评论 -
实验10 Bezier曲线生成-实验提高-交互式生成B样条曲线
本代码生成三次B样条曲线。主要功能:原创 2022-06-11 07:35:48 · 856 阅读 · 4 评论 -
实验11 B样条曲面生成
1.实验目的:掌握B样条、NURBS(非均匀有理B样条)曲线、曲面的概念。掌握B样条、NURBS曲面编程方法。2.实验内容:结合示范代码了解曲线B样条曲面生成原理与算法实现,尤其是NURBS曲面。调试、编译、修改示范程序。3.实验原理:求值器能够描述任何角度的多项式或有理多项式样条或表面,包括B-样条,NURBS(非均匀有理B-样条)表面,Bezier曲线和表面,以及Hermite样条。由于求值器只提供了对曲线或表面底层描述,需要使用更高层次的NURBS接口来生成B样条曲面。OpenGL提供原创 2020-10-22 00:23:58 · 3910 阅读 · 3 评论