计算机图形学课程设计
内容及要求
一、 总体目标和要求
目标:深入研究算法,以某个(或某类)图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现该算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到:
u 巩固和实践计算机图形学课程中的理论和算法;
u 学习表现计算机图形学算法的技巧;
u 培养认真学习、积极探索的精神。
总体要求:策划、设计并实现一个能够充分表现某个图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。
开发环境:Viusal C++ 6.0 或者更高版本
工具库的限制:不允许使用任何图形软件包,如OpenGL,DirectX,Java3D等。但可应用如文件读取(特别是图像文件读取、外部模型文件读取)、数据组织(如STL)等非图形工具。
项目选择:选择以下所列程序中的两个即可,具体见第三节。
二、 时间节点和分值
课程设计的时间安排上分若干阶段,每个阶段有相应截止时间、要求、分值和评分标准。总分为100分。作业的提交方式参见附录。
第11周周五(20##-11-9)中午12:00之前,以班级为单位把报告打印稿交到胡涛老师办公室,滞后提交的作业将扣除相应分值直至全部扣除。
要求:
至少提交至概要设计报告,并有一个原型系统。
概要设计确定使用的开发环境,整体模块结构等,可参见相关国家标准文档,但不必完全依照。
原型系统能够基本实现该算法,为以后表现该算法作准备。
评分标准:
清晰的功能列表,算法表现策略,合理且明确的进度安排。中期检查将参照此进度安排。
规范、翔实的概要设计报告,功能正确的原型系统。
三、 内容与要求
作业分为九项内容,只要做其中两项即可。
1) 简单图形的生成
内容:
直线的生成
①DDA法 ②中点画线法 ③Bresenham法
圆的生成
①中点法 ② Bresenham法
椭圆的生成
① 中点法 ② Bresenham法
要求:
Ø 将象素网格表现出来,建立网格坐标系
Ø 用橡皮筋的形式输入参数
Ø 鼠标移动时,显示鼠标当前位置
Ø 显示判别式的计算过程和下一点的选择策略
Ø 记录生成点的坐标,建议用表的形式
Ø 图形生成过程可以重复进行
Ø 建议在一个程序中实现上述算法
2) 多边形区域填充
内容:
种子填充算法;扫描线填充算法;扫描线种子填充算法;边填充算法;栅栏填充算法
要求:
Ø 将象素网格表现出来,建立网格坐标系
Ø 用橡皮筋的形式输入多边形
Ø 鼠标移动时,显示鼠标当前位置
Ø 种子填充算法中用鼠标选择种子点,用表格的形式显示堆栈存储的象素,象素出栈或入栈的过程要显示出来。关键是要将象素填充的顺序表现出来。
Ø 扫描线算法中先显示一条自上而下的扫描线,如果不与多边形相交,则直接向下移动,否则需要填充多边形内的交点。多边形形成以后,要显示边表的内容,扫描线移动的时候,要动态改变活性边表的内容,一条边加入活性边表或从活性边表中删除需要给出提示。
3) 二维裁剪
内容:
线段裁剪
窗口为长方形:①Cohen-SutherLand算法 ②中点分割算法 ③Liang-Barsky 算法
窗口为任意多边形:Cyrus-Beck算法
多边形裁剪
Sutherland-Hodgman算法,Weiler-Atherton算法(任意多边形互裁剪)
要求:
Ø 将象素网格表现出来,建立网格坐标系
Ø 用橡皮筋的形式输入剪裁线段或多边形
Ø 对于线段裁剪,线段被窗口的四条边裁剪的过程要显示出来
Ø 对于中点分割算法,要显示线段一步步分割的过程
Ø Liang-Barsky 算法和Cyrus-Beck算法要显示矢量的计算和选择t参数的过程
Ø Sutherland-Hodgman多边形裁剪过程需先输入一多边形,然后用窗口四边裁剪的过程中要显示顶点增删的过程。
Ø Weiler-Atherton算法需要指明裁剪多边形和被裁剪多边形,从而决定交点的分类
Ø 可以根据程序的需要决定是否在一个程序中完成。
4) 直线和多边形的反走样
内容:实现以下四种反走样的方法:提高分辨率、超采样、连续区域采样、离散区域采样
要求:
Ø 将象素网格表现出来,建立网格坐标系
Ø 用橡皮筋输入一条直线或多边形,线的宽度可以设置,为一整数
Ø 对于提高分辨率方法,首先用网格象素法表示一条直线或多边形,然后将网格缩小,观察直线的变化
Ø 超采样法需要根据经过的不同子象素的数目决定该象素的亮度
Ø 连续区域采样需要根据直线所占象素面积来决定象素的亮度
Ø 离散区域采样将所占面积离散化,根据所占象素点的数目决定亮度,需要考虑加权模板,模板的大小为奇数
Ø 如以上点需要计算,则必须显示计算步骤
5) 曲线曲面生成
内容:
曲线:Bezier曲线、二次B样条曲线、三次B样条曲线、Nurbs曲线
曲面:Ferguson曲面、Bezier曲面、三次B样条曲面、Nurbs曲面、Coons曲面
要求:
对于曲线:
Ø 采用橡皮筋方法输入型值点
Ø 第n个点为鼠标当前位置,使得曲线的形状随鼠标变化
Ø 输入的点存入表格中
Ø 在完成一段曲线后,可以移动型值点的位置产生新的曲线
Ø Nurbs曲线需要输入权因子
Ø 可以显示曲线的型值点多边形
对于曲面:
Ø 采用键盘输入点的坐标
Ø 曲面生成后,可以用鼠标操纵多角度观察,曲面有两种方式切换:网格曲面和光滑曲面(光滑曲面需要加上一个缺省光照)
6) 图形变换
内容:简单图形的平移、旋转、缩放
要求:
可以产生一些基本几何体(球,椭球体,圆锥,长方体,四面体等),大小先利用缺省值,然后在点取物体,在菜单上选择操作方式,程序应该能自动生成变换矩阵并显示出来。另外还可以定义变换,放入变换列表,将若干个变换组合起来形成统一的变换矩阵,然后一下实施变换操作。
7) 简单几何体的消隐
内容:简单几何体(球,椭球体,圆锥,长方体,四面体等)的生成和消隐
要求:
体用线框形式表示,可以在消隐和未消隐之间切换,用鼠标可以操纵形体的位置的角度,包括自消隐和互消隐(多个物体之间的消隐)。
8) 纹理映射
内容:将纹理映射到简单的曲面上
要求:
纹理应该可以自定义,也可以导入外面的纹理图片
曲面包括:平面,二次曲面,Bezier曲面,三次B样条曲面,曲面可以导入外面的图形文件,也可以在程序中生成。
能任意指定映射关键点,能消除纹理走样。
9) 光源效果
内容:演示光源效果
要求:
可以添加光源,删除光源,对每一个光源进行命名;对每一个光源可以进行编辑,包括散射参数,镜面参数,光源位置参数,聚光方向,聚光指数,聚光角度,聚光终止角度,三个衰减系数等。还可以对环境光进行调整,调整采用滑动条的形式。需要制作高光效果,光源效果作用在一个球体上,球体可以指定材质,插值方式分面片模型、Phong模型和Gouraud模型三种可以从不同的角度实时观察。
注:
作业提交方式与做一图形系统的方式相同。
欢迎大家有好的想法,设计出美观大方,表现力好,有创意的程序。
上面列出的是最基本的要求,如果大家能提出更好的建议,请提出来。
第二篇:计算机图形学复习题(20xx)
计算机图形学复习题
第一章
1、 计算机图形学的定义是什么?
计算机图形学是一种使用图形生成原理和算法将二维或三维图形转化为光栅化的计算机显示的学科。简单地说,计算机图形学是研究如何在计算机中表示图形,以及利用计算机进行图形的生成、处理和显示的相关原理与算法。
2、 计算机图形学、图像处理与模式识别之间的关系如何?
3、 图形与图像的区别是什么?
用参数法描述的图形称为图形,用具体颜色信息的像素点阵来表示的图形称为图像。
4、 什么是虚拟现实?虚拟现实与视景仿真有何异同?
虚拟现实是用计算机生成一种虚拟环境,用户可以“沉浸”到该环境中,随意观察周围的景物,并可通过一些特殊设备与该环境直接进行交互的技术;
视景仿真是虚拟显示技术最重要的表现形式。
5、 图形分为哪几类?其表示方法有哪些?
图形分为两类,一类是基于线条表示的几何图形。一类是基于光照、材质和纹理映射表示的真实感图形。
图形的表示方法有两种:参数法和点阵法。
6、 计算机图形学的研究内容是什么?
研究如何利用计算机把描述图形的数学模型通过指定的算法转化为图像显示。
研究如何在计算机中表示图形,以及利用计算机进行图形的生成、处理和显示的相关原理与算法。
7、 为什么说随机扫描显示器是画线设备,而光栅扫描器是画点设备?
图像的定义是存放在文件存储器中的一组画线命令。随机扫描显示器周期性地读取画线命令,依次在屏幕上画出线条,当所有的画线命令都执行完毕后,图像就显示出来。这时随机扫描显示器又返回到第一条命令行进行屏幕刷新。
光栅扫描显示器不能从单元阵列中的一个可编制的像素点直接画一条直线到达另一个可编制的像素点,只能用靠近这条直线路径的像素点来近似地表示这条直线。
8、 试解释:扫描线,光栅扫描,位面和帧缓冲器的含义。
光栅显示器为了能在整个屏幕上显示出图形,电子束从屏幕左上角开始,按照从左往右,从上到下(循环)扫描,每行就形成一条扫描线,这些扫描线也就形成了光栅。这就是“光栅扫描”的由来。
9、 光栅扫描的实现方法有哪些?
(1)隔行扫描是指将一幅屏幕分成两场进行扫描,一场对所有奇数序号的扫描线进行扫描,另一场对所有偶数序号的扫描线进行扫描。
(2)逐行扫描是指扫描线按次序一行接一行地进行扫描的方式。
10、 帧缓冲器的容量如何计算?
P11-12
11、 颜色索引表的作用是什么?其原理是什么?
颜色索引表的作用是将图像中像素的灰度转换成光学信息中的颜色。
索引颜色就是采用一个颜色表存放并索引图像中的颜色。如果原图像中的一种颜色没有出现在查照表中,程序会选取已有颜色中最相近的颜色或使用已有颜色模拟该种颜色。
12、 为什么要制定图形软件标准?经ISO批准的图形标准有哪些?实际使用的非ISO标准又有哪些?
制定图形软件标准是为了提高软件的可移植性。
经ISO批准的图形标准有:GKS,GKS3D,PHIGS,PHIGS+,CGI,IGES,STEP
实际使用的非ISO标准有:OpenGL,DirectX
_______________________________________________________________________________
第三章
13、 什么是图形的 换?
光栅扫描显示器的绘图过程就是在像素点阵中确定最佳逼近于理想图形的像素点击的过程,这个过程称为“图形的扫描变换”。
14、 直线扫描转换方法中,直线中点Bresenham算法的原理是什么?有何优点?其绘制步骤是什么?(要求会根据已知两点坐标,写出算法中每一步坐标值及中点判别式的值)
原理:每次在主位移方向上走一步,另一个方向上走不走取决于中点偏差判别式的值。
优点:绘制速度快,简单
步骤:1.根据起止点坐标得出直线方程
2.选择主位移方向
3.根据中点偏差判别式选择点亮上点还是下点
4.主位移方向移动1个单位,重复第三步直到到达终点
中点判别式:di = (yi + 0.5) – k(xi + 1) – b
if (di < 0) 点亮Pup;
else 点亮Pdown;
15、 圆的中点Bresenham算法的原理是什么?说明其绘制过程。
八分法画圆算法
16、 解释走样与反走样的概念,并说明如何反走样。
由离散量表示连续量而引起的失真称为走样,用于减轻走样现象的技术称为反走样。利用人眼视觉原理,使用加权参数对像素的灰度级别进行调节,以产生模糊的边界,从而达到减弱阶梯效应的视觉效果。
17、 直线距离加权反走样算法的原理是什么?步骤是什么?
直线距离加权反走样算法原理是对于理想直线上的任一点,同时点亮两个以不同灰度级别显示的相邻像素。
______________________________________________________________________________
第四章
18、 有效边(AE)、有效边表(AET),边表(ET)和桶表的含义是什么?
多边形内与当前扫描线香蕉的变成为有效边。
把有效边按照与扫描线交点x坐标递增的顺序存放在一个链表中,称为有效边表。
边表是用于存放扫描线上多边形各条边出现的信息。
桶表是按照扫描线顺序管理边的情况的一个数据结构。
19、 有效边表填充算法的原理是什么?过程如何?(要求能写出多边形边表和每一条扫描线的有效边表)
20、 边缘填充算法的原理是什么?处理过程如何?如何提高处理效率?
原理:边缘填充算法是求出多边形的每条边与扫描线的交点,然后将交点右侧的所有像素颜色全部取反为反色。
为了提高效率,可以在多边形的外接矩形范围内进行像素取反,或者在多边形内添加栅栏,在处理每条边与扫描线的交点时,只将交点与栅栏之间的像素取反。
______________________________________________________________________________
第五章
21、 齐次坐标的概念是什么?为什么要引入齐次坐标。
齐次坐标就是用n+1维矢量表示n维矢量。引入齐次坐标是为了使图形几何变换表达为图形顶点集合矩阵与某一变换矩阵相乘的问题。
22、 二维图形几何变换都有哪些基本变换?说明二维基本变换矩阵中各元素代表的含义?
平移变换
反射变换或
比例变换
旋转变换
错切变换
23、 二维复合变换的原理是什么?如何实现对任意参考点(轴)和任意方向的二维几何变换?
任何一个复杂的几何变换都可以看做基本几何变换的组合形式。
24、 用户坐标系,观察坐标系,设备坐标系、窗口及视区的含义。
用户坐标系:用户定义原始图形所采用的坐标系
观察坐标系:依据观察窗口的方向和形状在用户坐标系中定义的坐标系
设备坐标系:显示器等图形输出设备自身的坐标系
窗口:在观察坐标系中定义的确定显示内容的区域称为窗口
视区:在设备坐标系中定义的输出图形的区域
25、 说明Cohen-Southerland直线裁剪算法的原理和裁剪步骤。
每条直线段的端点都被赋予一组4位二进制代码,称为区域编码,用来标识直线段端点相对于窗口边界及其延长线的位置。
裁剪步骤:
1.若直线段的两端点区域编码都为0,即RC1|RC2=0,说明直线段两端点都在窗口内,应“简取”。
2. 若直线段的两端点区域编码都不为0,即RC1&RC2=0,说明直线段两端点都在窗口外,应“简弃”。
3.若直线段既不满足“简取”也不满足“简弃”的条件,直线段必然与窗口或窗口边界的延长线相交,需要计算直线段与窗口边界的交点。交点将直线段分为两段,其中一段完全位于窗外,可“简弃”。对另一段重复进行上述处理,直至该直线段完全被舍弃或找到完全位于窗口内的直线段为止。
4.一般按固定顺序左、右、下、上求解窗口与直线段的交点。
26、 说明中点分割直线段裁剪算法的原理。
把直线段等分为两段直线,对每一段重复“简取”或“简弃”的处理,对于不能处理的直线段再继续等分两段直线,直至每一段完全能够“简取”或“简弃”。
27、 说明梁友栋直线裁剪算法原理。
以直线段的参数方程为基础设计的,把判断直线段与窗口边界求教的二维裁剪问题转化为求解一组不等式,确定直线段参数的一维裁剪问题。
______________________________________________________________________________
第六章
28、 说明三维几何变换的方法及三维几何变换矩阵中各元素的含义。
方法依然是齐次坐标。
变换矩阵T=
其中:
T1=,对图形进行比例,旋转,反射,错切变换
T2=,对图形进行平移变换
T3=,对图形进行投影变换
T4=[s],对图形进行整体比例的变换
29、 三维基本几何变换都有哪些?其变换矩阵是什么?
平移变换
反射变换
旋转变换
错切变换
比例变换
30、 如何实现对任意参考点(轴)和任意方向的三维几何变换。
31、 什么是平行投影和透视投影?
投影中心到投影面的距离为无限大时得到的投影称为平行投影。
所有的投影线都从空间的一点投射出来得到的投影称为透视投影。
32、 解释视点、灭点、主灭点概念。
视点:观察者眼睛的位置
灭点:不与屏幕平行的平行线投影后汇聚的一点
主灭点:平行于某一坐标轴方向的平行线在屏幕上投影形成的灭点
33、 投影变换的过程是什么?
______________________________________________________________________________
第七章
34、 构成几何形状的曲线和曲面分为几类?各是什么?
2类,一类是由初等解析曲面,如平面,圆柱面,球面和圆环面等组成,另一类由自由曲面组成,如汽车车身,飞机机翼和轮船船体等的曲线和曲面
35、 解释样条曲线,拟合、逼近、参数连续性、几何连续性的含义。
样条曲线:由多项式曲线段连接而成的曲线,在每条的边界处满足特定的连续性条件。
拟合:当用一组型值点来指定曲线曲面的形状时,形状完全通过给定的型值点序列
逼近:当用一组控制点来指定曲线曲面的形状时,形状不必通过控制点。
参数连续性:相邻两个曲线段在交点处具有相同的坐标或n阶导数
几何连续性:相邻两个曲线段在交点处有相同的坐标或n阶导数成比例
36、 三次样条曲线的概念是什么?特点如何?
三次参数样条曲线能使曲线通过特定的型值点,能使曲线段在连接处保持C2连续性,计算量少,存储稳定。
37、 Bezier曲线的概念、性质和特点是什么?
给定n+1个控制点称为n次,,曲线,Bezier曲线定义:
给定n+1个控制顶点Pi(i=0~n) ,则Bezier曲线定义为:
P(t)=∑Bi,n(t)Pi u∈[0,1]
其中:Bi,n(t)称为基函数。
Bi,n(t)=Ci nti (1-t)n-i
Ci n=n!/(i!*(n-i)!)
性质:端点,一阶导数,凸包,可分割,
它有很多优点,但有不足,确定了控制多边形的定点数,也确定了曲线的次数;控制多边形与曲线的逼近程度比较差,次数越高,逼近程度越差;曲线的局部不可修改
38、 B样条曲线的概念、性质和特点是什么?
性质:连续性,局部性质