
(第2版)计算机图形学基础(OpenGL版)
文章平均质量分 51
主要为计算机图形学基础(OpenGL版)(第2版)所附实验内容与章节代码。
图形空间
这个作者很懒,什么都没留下…
展开
-
《计算机图形学基础(OpenGL版)》使用院校
详细的使用院校名单原创 2018-04-22 18:19:42 · 2587 阅读 · 1 评论 -
《计算机图形学基础(OpenGL版)》(第2版)教学建议
章节 课堂 实验 内容 学时 备注 内容 学时 备注 第1章 绪论 图形学简介 1 第2章 图形系统 图形系统简介 1 实验1 OpenGL初识 2 第3章 二维图形光栅化与裁剪 3.1 光栅化问题概述 3.2 直线段光栅化 2 实验3直线光栅化 2 3.3 圆弧光栅化 建议学生自学..原创 2021-08-27 16:17:44 · 1937 阅读 · 6 评论 -
《计算机图形学基础(OpenGL版)》第2版前言
本书计划于2019年底由清华大学出版社出版。随着虚拟现实和5G技术的发展,计算机图形学将会发挥更加重要的基础作用,因此,越来越多的高校开设了图形学课程,同时也有更多的技术爱好者加入了图形学的学习队伍。为了更好地帮助读者学习和掌握计算机图形学,作者用心地改版了这本书。下面对本书的指导思想进行一些介绍,希望在这些重要问题上和读者取得共识,之后介绍下本书内容组织及改版情况。1.指导思想(...原创 2019-09-01 12:11:27 · 2419 阅读 · 1 评论 -
《计算机图形学基础(OpenGL版)》(第2版)勘误表
页码行或位置原内容更正为备注98式(4.49)[cosθ−sinθ0sinθcosθ0001]\begin{bmatrix} cos\theta & \mathbf{-sin\theta} & 0 \\ \mathbf{sin\theta} & cos\theta & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} ⎣⎡cosθsinθ0−sinθcosθ0001⎦⎤[cosθsinθ0−sinθ...原创 2020-09-15 21:43:46 · 2272 阅读 · 6 评论 -
计算机图形学慕课信息整理
课程名 负责人 所属院校 平台 教材 慕课链接 计算机图形学 赵明 中国农业大学 中国大学MOOC 孙家广、胡事民,计算机图形学基础教程,清华出版社 https://www.icourse163.org/course/CAU-45006 计算...原创 2021-08-27 18:33:36 · 1062 阅读 · 0 评论 -
实验0.0 Visual Studio 2022安装指南
希望这个安装指南能帮助您顺利安装并开始使用Visual Studio 2022进行图形学开发!原创 2024-05-12 22:53:07 · 2009 阅读 · 0 评论 -
实验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 · 21967 阅读 · 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 · 3640 阅读 · 1 评论 -
实验1 OpenGL初识
一.实验目的熟悉编程环境;了解光栅图形显示器的特点;了解计算机绘图的特点;利用VC+OpenGL作为开发平台设计程序,以能够在屏幕上生成任意一个像素点作为本实验的目标。二.实验内容了解和使用VC的开发环境,理解简单的OpenGL程序结构。掌握OpenGL提供的基本图形函数,尤其是生成点的函数。三.实验原理1. 基本语法常用的程序设计语言,如C、C++、Pascal、Fortran和Java等,都支持OpenGL的开发。这里只讨论C版本下OpenGL的语法。OpenGL基本函数均使用原创 2020-05-19 19:11:37 · 4403 阅读 · 0 评论 -
实验2 OpenGL交互
一.实验目的理解并掌握一个OpenGL程序的常见交互方法。二.实验内容运行示范代码,掌握程序鼠标交互方法、鼠标坐标获取方法。尝试为示范代码添加键盘与菜单控制,来实现绘制一些基本图形功能。三.实验原理在OpenGL中处理鼠标事件非常方便,GLUT已经为我们注册好了函数,只需要我们提供一个方法。使用glutMouseFunc函数,就可以注册自定义函数,这样当发生鼠标事件时就会自动调用自己定义的方法。函数的原型是:void glutMouseFunc(void(*func)(int but原创 2020-10-21 11:50:24 · 6575 阅读 · 1 评论 -
实验3 直线光栅化
1.实验目的:理解基本图形元素光栅化的基本原理;掌握基本图形元素光栅化方法,如中点方法,Bresenham方法;利用OpenGL实现基本图形元素的光栅化算法。2.实验内容:(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果。(2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告。(3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告。(4) 了解和使用OpenGL的生成直线的命令,来验证程序运行结果。3.实验原原创 2020-10-21 12:04:33 · 6602 阅读 · 4 评论 -
实验3.1 直线光栅化(键盘交互版)
这个版本是在实验3的基础上增加了键盘交互功能。1.实验目的:理解基本图形元素光栅化的基本原理;掌握基本图形元素光栅化方法,如中点方法,Bresenham方法;利用OpenGL实现基本图形元素的光栅化算法。2.实验内容:(1) 根据所给的直线光栅化的示范源程序,在计算机上编译运行,输出正确结果。(2) 指出示范程序采用的算法,以此为基础将其改造为中点线算法或Bresenham算法,写入实验报告。(3) 根据示范代码,将其改造为圆的光栅化算法,写入实验报告。(4) 了解和使用OpenG.原创 2020-10-21 12:08:57 · 1985 阅读 · 0 评论 -
实验3.2 一般直线的中点绘制算法
教材上的直线绘制算法只针对斜率0原创 2022-07-28 15:27:02 · 1245 阅读 · 0 评论 -
实验4 直线编码裁剪算法
1.实验目的:了解二维图形裁剪的原理(点的裁剪、直线的裁剪、多边形的裁剪);利用VC+OpenGL实现直线的裁剪算法。2.实验内容:(1) 理解直线裁剪的原理(Cohen-Surtherland算法、梁友栋算法)。(2) 利用VC+OpenGL实现直线的编码裁剪算法,在屏幕上用一个封闭矩形裁剪任意一条直线。(3) 调试、编译、修改程序。(4) 尝试实现梁友栋裁剪算法。3.实验原理:在编码裁剪算法中,为了快速判断一条直线段与矩形窗口的位置关系,采用了如图A.4所示的空间划分和编码方案。原创 2020-10-21 14:13:51 · 5312 阅读 · 0 评论 -
实验4.1 编码裁剪算法(鼠标交互版)
1.实验目的:理解直线裁剪的基本原理;验证直线的编码裁剪算法;实现梁友栋-Barsky裁剪算法;2.实验内容:本次实验主要结合鼠标画线程序来验证编码裁剪算法和实现梁友栋-Barsky裁剪算法,具体步骤如下:(1) 阅读学习所给的编码裁剪示范代码,了解程序使用方法,并结合三种不同类型直线对其进行裁剪测试,将测试结果分别存为图1,图2和图3,保存至word实验文档中(30分钟);(2) 为示范代码增加梁友栋-Barsky裁剪算法,并通过键盘按键“L”来控制,即按键盘“L”键时,用梁友栋-Bar原创 2020-10-21 14:31:04 · 2206 阅读 · 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 · 13526 阅读 · 8 评论 -
实验6 OpenGL模型视图变换
1.实验目的:学习了解三维图形几何变换原理。理解掌握OpenGL三维图形几何变换的方法。理解掌握OpenGL程序的模型视图变换。掌握OpenGL三维图形显示与观察的原理与实现。2.实验内容:(1)阅读教材有关三维图形变换原理,运行示范实验代码,掌握OPENGL程序三维图形变换的方法;(2)阅读实验原理,运行示范实验代码,理解掌握OpenGL程序的模型视图变换。(3)请分别调整观察变换矩阵、模型变换矩阵和投影变换矩阵的参数,观察变换结果;(4)掌握三维观察流程、观察坐标系的确定、世界坐标原创 2020-10-21 15:44:10 · 9859 阅读 · 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 · 7155 阅读 · 1 评论 -
实验8 OpenGL太阳系动画
1.实验目的:熟悉颜色缓存、深度缓存、模板缓存、累计缓存的内容,掌握缓存清除的方法;建立太阳、地球、月亮的运动模型;利用双缓存技术,用动画方式显示模型,加深读者对几何变换、投影变换以及观察变换的理解,并提高利用图形软件包绘制图形的能力。2.实验内容: 模拟简单的太阳系,太阳在中心,地球每365天绕太阳转一周,月球每年绕地球转12周。另外,地球每天24个小时绕它自己的轴旋转。3.实验原理:(1)主要用三维平移变换、旋转变换实现太阳、地球、月亮的相对运动。 本节实验绘制了一个简单的太阳系原创 2020-10-21 16:38:09 · 6627 阅读 · 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 · 6238 阅读 · 0 评论 -
实验10 Bezier曲线生成
1.实验目的:了解曲线的生成原理;掌握几种常见的曲线生成算法,利用VC+OpenGL实现Bezier曲线生成算法。2.实验内容:(1)结合示范代码了解曲线生成原理与算法实现,尤其是Bezier曲线。(2)调试、编译、修改示范程序。3.实验原理:Bezier曲线是通过一组多边形折线的顶点来定义的。如果折线的顶点固定不变,则由其定义的Bezier曲线是唯一的。在折线的各顶点中,只有第一点和最后一点在曲线上且作为曲线的起始点和终止点,其他的点用于控制曲线的形状及阶次。曲线的形状趋向于多边形折线的原创 2020-10-22 00:19:42 · 9774 阅读 · 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 · 1488 阅读 · 1 评论 -
实验10 Bezier曲线生成-实验提高-交互式生成B样条曲线
本代码生成三次B样条曲线。主要功能:原创 2022-06-11 07:35:48 · 1079 阅读 · 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 · 4330 阅读 · 3 评论 -
教材配套代码
欢迎大家下载使用。后续还会继续更新,有问题也欢迎给我邮件(wpxu08@gmail.com)反馈。原创 2022-09-28 09:26:35 · 1567 阅读 · 1 评论 -
第2章代码-图形系统
2.4.5 OpenGL程序实例分析#include <GL/glut.h>float angle = 0.0f; //旋转角度void Init(){ GLfloat light_ambient[] = { 1.5,1.5,1.5,1.0 };//环境光分量RGB值 float lpos[4] = { 1.0,1.0,1,0 };//灯光坐标位置 glEnable(GL_DEPTH_TEST); //启用深度测试 glClearColor(0.0f, 0.0f, 0.0f,原创 2020-09-17 14:06:23 · 863 阅读 · 0 评论 -
第3章代码-光栅化与裁剪
第3章有关代码3.2 直线段光栅化3.2.1 数值微分算法3.2.2 Bresenham画线法3.2.3 中点画线算法3.3 圆弧光栅化3.3.1 圆的对称性及其应用3.3.2 Bresenham画圆算法3.3.3 中点画圆算法3.4 区 域 填 充3.4.2 种子填充算法3.7 裁 剪3.7.2 直线裁剪1. Cohen-Sutherland编码裁剪算法2.Liang-Barsky参数化裁剪算法3.2 直线段光栅化3.2.1 数值微分算法void LineDDA(i原创 2020-09-17 12:24:39 · 1272 阅读 · 0 评论 -
第4章代码-图形几何变换
4.4 编程实例——三角形与矩形变换及动画4.4.1 自定义矩阵变换实例——三角形变换#include <GL/glut.h> #include <stdlib.h>#include <math.h>/* 初始化显示窗口大小 */ GLsizei winWidth=600,winHeight=600;/* 设置世界坐标系的显示范围 */ GLfloat xwcMin=0.0,xwcMax=225.0; GLfloat ywcMin=0.原创 2020-09-17 15:06:19 · 1799 阅读 · 4 评论 -
第5章代码-三维观察
目录5.5 编程实例5.5.1 二维实例——红蓝三角形5.5.2 三维实例——立方体透视投影5.5 编程实例5.5.1 二维实例——红蓝三角形#include <GL/glut.h>typedef GLfloat point2d[2]; //a point data type void triangle( point2d a, point2d b, point2d c) //display a triangle{ glBe原创 2020-09-17 15:56:29 · 1284 阅读 · 0 评论 -
第6章代码-三维造型
目录6.3.4编程实例-简单实体构建6.4.3 Bezier曲线曲面1. 调和函数方式绘制Bezier曲线2. 离散方式绘制Bezier曲线6.4.6 编程实例-OpenGL曲线曲面生成1.绘制Bezier曲线2.绘制Bezier曲面6.3.4编程实例-简单实体构建本实例参考了著名的Nehe OpenGL示例构建了四棱锥和立方体的实体模型,这两个模型的顶点位置如图6.13所示。可见,四棱锥的四个侧面的顶点序列分别为v0v1v2、v0v2v3、v0v3v4、v0v4v1,底面为v1v2v3v4。传递顶点信原创 2020-09-18 19:48:04 · 2002 阅读 · 0 评论 -
第7章代码-真实感图形技术
7.8.4 编程实例——纹理映射下面代码实现了把平面纹理映射在球面上的功能,运行结果如下图所示。#include <GL/glut.h>#include <stdlib.h>#include <stdio.h>#define stripeImageWidth 32GLubyte stripeImage[4*stripeImageWidth];void makeStripeImage(void) //生成纹理{ int j; for原创 2020-09-18 20:11:01 · 1580 阅读 · 2 评论