计算机图形学课程总结

计算机图形学课程总结
计算机图形学课程总结

计算机图形学报告

前言

计算机图形学(Computer Graphics,简称CG)是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学。简单地说,计算机图形学的主要研究内容就是研究如何在计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法。

其从狭义上是来说是一种研究基于物理定律、经验方法以及认知原理,使用各种数学算法处理二维或三维图形数据,生成可视数据表现的科学。广义上来看,计算机图形学不仅包含了从三维图形建模、绘制到动画的过程,同时也包括了对二维矢量图形以及图像视频融合处理的研究。由于计算机图形学在许多领域的成功运用,特别是在迅猛发展的动漫产业中,带来了可观的经济效益。另一方面,由于这些领域应用的推动,也给计算机图形学的发展提供了新的发展机遇与挑战。

计算机图形学的发展趋势包括以下几个方面:

1、与图形硬件的发展紧密结合,突破实时高真实感、高分辨率渲染的技术难点;

2、研究和谐自然的三维模型建模方法;

3、利用日益增长的计算性能,实现具有高度物理真实的动态仿真;

/

4、研究多种高精度数据获取与处理技术,增强图形技术的表现;

5、计算机图形学与图像视频处理技术的结合;

6、从追求绝对的真实感向追求与强调图形的表意性转变。

1、三维物体的表示

计算机图形学的核心技术之一就是三维造型三维物体种类繁多、千变万化,如树、花、云、石、水、砖、木板、橡胶、纸、大理石、钢、玻璃、塑料和布等等。因此,不存在描述具有上述各种不同物质所有特征的统一方法。为了用计算机生成景物的真实感图形,就需要研究能精确描述物体特征的表示方法。根据三维物体的特征,可将三维物体分为规则物体和非规则物体两类。

三维实体表示方法通常分为两大类:边界表示和空间分割表示,尽管并非所有的表示都能完全属于这两类范畴中的某一类。边界表示(B-reps)用一组曲面来描述三维物体,这些曲面将物体分为内部和外部。边界表示的典型例子是多边形平面片和样条曲面。空间分割表示(Space-Partitioning)用来描述物体内部性质,将包含一物体的空间区域分割为一组小的、非重叠的、连续实体(通常是立方体)。三维物体的一般空间分割描述是八叉树表示。

本章主要介绍三维物体的各种表示方法及其特点。

三维物体的数据结构

给定五个点P1,P2,P3,P4,P5,由五条线段连接它们可以组成不同的物体:同样是五个点、用五条边连接,不同的连接方法可构成不同的物体。惟一地表示一个物体,描述该物体的数据必须包含两类信息:

(1)几何信息:描述物体的几何形状、空间位置关系;

(2)拓扑信息:说明物体的构成规则。

把构成物体的几何、拓扑两类信息组合在描述物体的数据中,形成了不同的数据结构形式。但不管形式如何,都必须满足一些基本的条件:1、能够描述物体的几何关系和拓扑关系;2、对物体的描述应该是完整的、惟一的;3、便于对数据进行各种处理,且能获得较快的速度;4、数据的冗余量要小。5、三维物体的层次结构:

多边形表面

表示三维物体的最常用方法是使用一组包围物体内部的表面多边形。大多数图形系统以一组表面多边形来存储物体的描述。由于所有表面以线性方程加以描述,因此简化并加速了物体的表面绘制和显示。故,多边形描述被称为“标准图形物体”。

多面体的多边形表示精确定义了物体的表面特征,但对其他物体,则通过多边形网格逼近表示。通过沿多边形表面进行明暗处理消除或减少多边形棱边,以实现真实感绘制。为了提高逼近精度,可通过将曲面分成更小的多边形面片加以改进。本课程主要讲解了多边形表面法、平面方程法、多边形网络法。

二次曲面和超二次曲面

二次曲面是一类常用的物体,由二次方程描述,包括球面、椭球面、环面、抛物面和双曲面。二次曲面,尤其是球面和椭球面,是最基本的图形物体,经常作为图元包含在图形包中,由此可以构造更复杂的物体。

{

柔性物体

有些物体不具有固定形状,当处于运动状态或接近其他物体时会变化其表面特征,如分子结构、水珠、带状物体、人类肌肉等。这些物体具有“柔性”,称之为柔性物体 (Blobby objects),因为这些物体具有一定程度的流动性。

目前已开发了几种用分布函数来表示柔性物体的建模方法,其一是用 Gauss 密度函数的组合来对物体建模,表面函数定义如下:

其中, , T 是某个特定临界值,参数 a k ,b k 用来调整单个柔性物体。 2、三维空间图形观察 由于屏幕和绘图机只能用二维空间来表示图形,因此要显示三维图形就必须用投影方法来降低其维数。为了对三维物体做投影,首先要在三维空间中给定一投影平面和一投影中心,从投影中心发出的所有通过物体的射线与投影平面的交点的集合便形成了物体的投影。当投影中心位于无限远时,从投影中心发出的通过物体的射线形成一族平行线,因此三维物体的投影变换分为两类:透视投影和平行投影。

三维观察步骤

~

建立三维景象可以比喻为使用一种人造照相机的概念,我们能够移动照相机到任意位置,用我们希望的任意方法来定向它,而且可以用快门对三维物体获取二维图像的快照。

虽然人造照相机是一个有用的概念,但从产生一个图像来看,它比只按一下按钮要多点麻烦。事实上,创建我们的“照片”需实现:确定投影类型;定义观察坐标系。 三维投影变换

三维空间中的直线之投影仍是直线,因此只要找到直线段的端点的投影,再把两投影点连接起来,所得之直线即为原直线段的投影。

0)(2=-=∑-T e b z y x f k r a k k k ,,222k

k k k z y x r

++=

透视投影及其分类

透视投影变换由投影平面和投影中心所确定。物体投影的大小和投影中心到物体的距离成反比。任何一束不平行于投影平面的平行线,其透视投影后将会聚到一点,该点称之为灭点(Vanishing Point)。在三维空间中平行线只会在无穷远点处相交所以灭点也可看作是无穷远点的透视投影。在所有灭点中,平行于三个坐标轴之一的直线束的灭点称为主灭点(Principal Vanishing Point),主灭点最多有三个。按主灭点数目的多少,透视投影分为一点透视、两点透视和三点透视。

透视投影的确定

平行投影及其分类

平行投影由通过物体上各点的与投影方向平行的一束平行线(投影线)和投影平面的交点来实现。如果投影方向和投影平面垂直,则该平行投影称为正平行投影;否则称为斜平行投影。

三维观察流程

变换的分类:模型变换;图象变换;视见变换。

三维图形的显示流程如下图所示:

三维图形裁剪

三维图形的裁剪指的是相对于三维观察体的裁剪。由于三维观察体的大小和形状与生成显示的投影类型密切相关,不同类型的投影确定了不同形状和大小的观察体,这将使三维图

形的裁剪较之二维图形的裁剪更加复杂费时。为了简化三维裁剪,我们引入规范化观察体。

三维的规范化观察体分为两种,对于平行投影,规范化观察体为一单位立方体,由: 1 ,0 ,1 ,0 ,1 ,0======z z y y x x 六个平面围成。透视投影时,其规范化观察体由平面:1 , , ,min ==±=±=z z z z y z x 所围成。

3、光照明模型原理

光照明模型是生成真实感图形的基础。简言之,光照明模型即根据光学物理的有关定律,计算景物表面上任一点投向观察者眼中的光亮度的大小和色彩组成的公式。对于在光栅图形设备上显示的真实感图形,我们需要依据光照明模型计算每一像素上可见的景物表面投向观察者的光亮度。光照明模型分为局部光照明模型和整体光照明模型。本章主要介绍基本光照模型

光源属性和物体表面属性

光源的属性包括它向四周所辐射光的光谱分布、空间光亮度分布,以及光源的几何形状。光源有四类:点光源、线光源、面光源和体光源。

物体表面属性包括表面的材质和形状。物体表面的材质类型决定了反射光线的强弱。表面光滑的材质将反射较多的入射光,而较暗的表面则吸收较多的入射光。对一个透明的表面,

一部分入射光会被反射,而另一部分被折射。粗糙的物体表面往往将反射光向各个方向散射,这种光线的散射现象称为漫反射。非常粗糙的材质表面主要产生漫反射,因而从各个视角观察到的光亮度是几乎相同的。

简单的局部光照明模型

整体光照明模型

一个完整的光照明模型应该包括八个分量:由光源和环境引起的漫反射分量、镜面反射分量、规则透射分量和漫透射分量。前面我们介绍的几个光照明模型仅考虑了由光源引起的漫反射分量和镜面反射分量,而环镜反射分量则简单地用一常数代替。在图形学中,这类光照明模型称为局部光照明模型。反之,能同时模拟光源和环境照明效果的光照明模型称作整体光照明模型。整体光照明模型的典型代表是 Whitted 模型和Hall模型。且通过该两种模型进行试验得出的试验结果表明,Hall 模型不仅能反映物体表面的反射特性,而且能较精确地反映物体表面的透射性。与 Whitted 模型相比,该模型能生成更为逼真的光照效果。

4、简单面绘制

用计算机生成连续色调的真实感图形必须完成四个基本任务:场景造型,取景变换和场景变换,隐藏面消除,计算场景中可见面的颜色。本章就基于局部光照明模型的一些画面绘制算法进行讨论,包括隐藏面消除算法、明暗处理方法、阴影生成技术等。

隐藏线隐藏面的消除是计算机图形学中的一个基本问题,所涉及的对象是一个三维图形,而消隐后的图形要在二维空间中表现出来。因此,消隐后显示的图形和三维空间到二维空间的投影方式有关。给定一个三维物体及由投影类型、投影平面等因素所规定的观察规范以后,我们希望对于投影中心(透视投影)或投影方向(平行投影)来说,物体的哪些边和哪些面是可见的,以便只显示那些可见的边和面。虽然这种基本思想的提出十分简单,但其实现却需要耗费大量的时间,因而出现了许多经过精心设计的算法。

消隐方法根据其处理时是直接对物体定义进行处理还是处理它们的投影图象,可分为物空间消隐方法和像空间消隐方法。

@

多面体的隐藏线消除

多面体是最简单的三维物体,有关多面体的隐藏线消除之研究也进行的最早、研究的最彻底。

设有多个互不相交的多面体构成一场景,对该场景的消隐和其表示方式有关。讨论多面体的隐藏线消除,总是假定它们用线框表示。在这种方式下,多面体用棱边来表示,那些隐藏线就是一些不可见的棱边或棱边的一部分。若能把每条棱边的可见和不可见的分界点找到,消隐问题就迎刃而解了。这些分界点都是多面体的各棱边在oxy 平面上投影的交点上图所示的多面体共有 15 条边,若不记棱边端点处的交点,其在oxy 平面上的投影间的交点仅有 5 个。采用一些处理技术后,可使交点减少到两个。这说明有许多棱边在oxy 平面上的投影相互间并不相交,且即使相交,也不一定为有效交点。问题是如何能预先知道它们是不相交的,从而把它们排除在求交计算之外呢对此,有以下几种方法用于加速求交。

函数型曲面的隐藏线消除

曲面可以用数学方程来描述,也可以用数据表来表示,如海拔高度或人口密度的拓扑数据等。对于这种曲面函数,通常采用层位线来显示,并消除层位线中的隐藏部分。

设曲面的方程为:y= f(x, z),则该曲面由两族曲线x = x i = const 和z = z i = const 来表示。我们先考虑对应于z = z i= const 的一族曲线的消隐算法假设图形显示器在水平方向有M 个像素点,则建立具有M 个分量的数组yu[j], j = 0, 1, …, M -1 以存储每一x 值处平面曲线所取的最大y 值。yu[j]的初值取为小于min f(x, z) 的任意值。设z i = z0 + ih, i = 0, 1, …, n, h > 0,平面z = z n 是最靠近观察者的,从平面z = z n 上的曲线y = f(x, z n)开始,对水平方向上每一个像素点的对应x 坐标值x j,计算:y j,n = f(x j, z n)若y j,n> yu[j],则点 (x j, y j,n, z n) 可见,并把yu[j] 之值置为y j,n;若y j,n < yu[j],则点(x j, y j,n, z n)不可见,此时不修改yu[j]之值。对平面z = z n 完成上述操作后,再对平面z = z n-1上的曲线重复上述操作。这样按照z 值减少方向一条一条曲线处理,就得到一组消除隐藏线的曲线族。

参数曲面的隐藏线消除

由参数方程定义的曲面是图形学中最常用的曲面表

示形式。参数曲面的显示通常采用曲线网格形式,因此参数曲面的隐藏线消除就是去掉被遮挡的曲线网格部分。所以,为了实现消隐,必须进行以下工作:① 建立曲面的网格表示② 点的可见性测试;③ 轮廓处理这三个步骤。

在物空间实现隐藏线消除的简单算法也有建立曲面网格表示方法和点的可见性测试法。

光线投射算法

光线投射算法(ray casting algorithm)建立于几何光学基础之上,它沿光线的路径追踪可见面,是一种有效的消隐算法。由于场景中有无数条光线,而我们仅对穿过像素点的光线感兴趣,因此可考虑从像素点出发,逆向跟踪射入场景的光线路径。光线投射算法对包含曲面,特别是球面的场景有很高的效率。

光线投射的基本原理很简单,假设从视点 V 通过屏幕像素e 向场景投射一条光线,交场景中的景物于点 P 1, P 2, …, P m 那么离视点最近的点 P 1 就是画面在像素点 e 处的可见点,像素点 e 的光亮度应由点 P 1向视线方向 P 1V 辐射的光亮度决定。如果通过视点 V 向屏幕上每一像素点都投射光线以求得每一投射光线与场景的第一个交点(可见点),并置相应像素的光亮度为交点处的光亮度,那么,我们就得到一幅完整的真实感图形。光线投射算法只能实现局部光照明效果,其突出优点是不必单独消隐,算法简单。

5、光线跟踪算法

光线跟踪算法是生成真实感图形的主要算法之一。由于该算法原理简、实现方便,且能生成各种逼真的视觉效果,因而在图形学及 CAD 各个领域得到了广泛应用。

光线跟踪的基本原理

(

尽管光线跟踪的基本原理在某些早期的消隐和绘制算法中得到了一定程度的应用,但完善的光线跟踪算法系 Whitted 所提出。该算法的基础就是第三章介绍的 Whitted 模型,该模型决定了光线跟踪算法是一个递归算法。

在标准的光线跟踪算法中,有两个隐含的假设:(1)光线是一根没有大小的直线;(2)景物表面是完全光滑的,光在表面的反射遵循光的镜面反射和规则透射规律。这两个假设导致了光线跟踪算法生成的图形中含有轮廓清晰的多重反射效果。显然,这种图形是超现实的。

]1,0[,,),(),(),(

∈?????===v u v u z z v u y y v u x x

由 Whitted 模型可知,景物表面上每一可见点处的光亮度由以下三部分组成:由光源直接照射而引起的光亮度、来自环境中其他景物的入射光引起的镜面反射光亮度、来自环境中其他景物的入射光引起的规则透射光亮度。

光线跟踪几何

下面我们讨论反射光线方向和折射光线方向的确定以及光线与景物表面的求交方法:

1、反射光线与折射光线的确定;

2、光线与景物的求交几何。

光线跟踪中的阴影生成算法

阴影是真实感图形的一个重要的组成部分,它对增加景物表面细节,丰富观察者对场景的空间感起着举足轻重的作用。景物表面的阴影是由于光源和周围环境向景物表面投射的光能受到场景中其他不透明景物的遮挡而产生的,它实际上是景物表面漫反射光的一种局部衰减。在阴影计算中,必须考虑两个因素,即表面上的阴影区域和阴影区域内各点的光亮度。

(

显然,上述算法对理想点光源来说非常有效,但它生成的阴影区域与非阴影区域之间存在一个极分明的光亮度突变,形成不真实的视觉效果。现实生活中的光源均为具有一定发光面积的表面,因而在阴影区域和照明区域之间有一自然的过渡,即通常所称的半影区域。显然,半影区域是由于区域内各点受到光源上部分发光表面的照射而产生的,而完全不受光源照射的阴影区域称为本影区域。传统的光线跟踪算法由于将光源处理成理想点光源,因此在景物表面只能生成本影,而没有半影。Cook 等用分布式光线跟踪算法生成了逼真的半影效果。

6、纹理映射技术

景物表面存在丰富的纹理细节,人们正是依据这些纹理细节来区分各种具有相同形状的景物,因而,景物表面纹理细节的模拟在真实感图形合成技术中起着非常重要的作用。如何在计算机生成的图形中有效地表现这些纹理细节,一直是图形学的一个主要研究课题。

自 20 世纪 70 年代中期 Catmull 首次采用纹理映射技术生成景物表面的纹理细节以来,纹理映射技术得到了广泛的研究和应用。根据纹理定义域的不同,纹理分为二维纹理和三维纹理;基于纹理表现形式,纹理又分为颜色纹理、几何纹理和过程纹理三大类。颜色纹理指的是呈现在物体表面上的各种非立体的花纹、图案和文字等,如花瓶上的各种非立体图案、墙面上的拼花图案等都可以用颜色纹理来模拟。几何纹理是指景物表面微观几何形状的表面纹理,如桔子、树干、岩石、山脉等表面呈现的凹凸不平的纹理细节。而过程纹理则表

现了各种规则或不规则的动态变化的自然景象, 如水波、云、火、烟雾等。

二维纹理映射的基本原理

二维纹理映射实质上是从二维纹理平面到三维景物表面的一个映射。由于二维纹理定义在一平面区域上,这样,该平面区域上的每一点处,均定义有一灰度值或颜色值。我们称该平面区域为纹理空间。在图形绘制时,应用纹理映射方法可方便地确定景物表面上任一可见点 P 在纹理空间中的对应位置 (u, v),而 (u, v) 处所定义的纹理值或颜色值即描述了景物表面在点 P 处的某种纹理属性。因而,纹理映射技术可分以下两步进行:(1)确定表面的哪些参数需定义成纹理形式, 即确定纹理属性。

(2)建立纹理空间与景物空间及景物空间与屏幕空间之间的映射关系,即定义下面的映射:m: ObjectSpace→ TextureSpace; T: ScreenSpace→ ObjectSpace。

,

纹理映射的建立

纹理映射 m 的定义与景物的表示方式有关,而且不是惟一的。由于不同的定义方法产生的映射效果各不相同,因而,m 的确定在纹理映射算法中处于非常重要的地位,它直接影响最终生成图形的真实性。从数学的观点看,映射 m 可用下式描述(u, v) = F(x, y, z)。

其中 (u, v),(x, y, z) 分别为纹理空间和景物空间中的点。由于参数曲面定义了一二维参数空间到三维空间的映射关系, 因而当将参数空间和纹理空间等同起来看时(两者之间的关系由一仿射变换确定),映射 m 等价于参数曲面自身定义的逆映射。对复杂的高次参数曲面来说,其逆变换往往无法给出解析表达,一般需采用数值求解技术离散求得。但对简单的二次曲面来说,其纹理映射函数可解析地表达。如一高为 h,半径为r的圆柱面可用下面的参数形式来表达:x = rcosq , y = rsinq , z = hj,其中0 ≤q ≤ 2p,0 ≤ j ≤ 1。

7、辐射度方法

辐射度方法是继光线跟踪算法后真实感图形绘制技术的一个重要发展。尽管光线跟踪算法成功地模拟了景物表面间的镜面反射、规则投射及阴影等整体光照效果,但由于光线跟踪算法的采样特性以及 Whitted 光照明模型的不完善性,该方法很难模拟景物表面之间的多重漫反射效果,因而不能重现诸如色彩辉映等光照现象。他所生成的图形往往是超现实的。

1984 年,美国Cornell 大学和日本广岛大学的学者分别将热辐射工程中的辐射度方

法引入到计算机图形学中,用辐射度方法成功地模拟了理想漫射表面间的多重漫反射效果。尽管初期实验例子中的场景非常简单,但经过几年的发展后,许多有效地的辐射度算法相继提出,所模拟的场景越来越真实,生成了一批十分精致的真实感图形。与前面介绍的光照模型和绘制算法有所不同,辐射度方法基于物理学中的能量平衡原理,它采用数值求解技术来近似计算每一景物表面上的辐射度分布。由于场景中景物表面的辐射度分布与视点选取无关,因而辐射度方法是一个视点独立(view independent)的算法。辐射度方法的这一特点使得它被广泛应用于虚拟环境的漫游(walkthrough)系统中。

8、颜色空间

真实感图形系统最终生成的是一幅能在监视器上显示或在打印机和绘图仪等输出设备上输出的彩色图像,因此真实感图形的绘制效果依赖于对景物颜色的准确表达。颜色是可见光的一种视觉特性。从客观上来说,可见光本身并没有颜色,所谓颜色只是人的视觉系统对所接受到的光信号产生的一种感觉。物体呈现出来的颜色既决定于光源中各种光波长的分布,也决定于物体本身的物理性质。若一个物体仅反射或折射一个很窄频带内的光而吸收其他波长的光,则反射或透射光信号中各种波长的光所占的比例不同,导致物体显示出一定的颜色。所以,颜色既是一种心理生理现象,也是一种心理物理现象。

颜色的视觉特性及基本定义

可见光的波长大约在 380nm (纳米)到 780nm 之间,即只有从 380nm 到 780nm 波长范围内的电磁辐射能够引起人的视觉。实验表明,即使对在可见光范围内的光,人眼对其感受的敏感程度也是不同的。这一实验结果反映在国际照明委员会(简称 CIE)的光谱光效率函数曲线 n(l ) 和 n’(l )(下图)中,其中n(l ) 是在明亮观察(明视觉)条件下的实验结果,而 n’(l ) 是在昏暗观察(暗视觉)条件下的实验结果。

可看出,在明视觉下人眼对波长 550nm 左右的光最为敏感,而对可见光谱两端的光,其敏感程度迅速减弱。光谱光效率函数提供了根据眼睛敏感程度而校正的光能量度,对任一光谱能量分布 P (l ),人眼对它感知的亮度(即有效光能)为:

标准原色和色度图

纯的单色光在实际生活中是很难找到的。我们所看到的颜色都是混合色,任意两种不同的颜色在合适的强度配比下可生成另一种颜色。若两种颜色混合生成白色,它们就被称为互补色。事实上,人眼能识别的颜色能够用任何满足一定条件的三种基本颜色混合而成,这

∑?===

770

380770

380)()()()(λλλλλλv P d v P Y

里的条件指的是此三种颜色中任意两种的组合都不能产生第三种颜色,这三种颜色称为三原色。最常用的三原色是红色、绿色和蓝色。试验表明, 绝大部分试验光都能通过调整红、绿、蓝三原色的大小比例得到匹配,但仍有少部分光无法匹配。对这些得不到匹配的试验光,若允许将某一种原色匹配光叠加到试验光上(等价于用负的匹配光来匹配试验光),则匹配成功。

常用颜色模型

在计算机图形学中,用户经常需为光源和景物设置适当的颜色,这就需要一个良好的界面使得用户直接操作、选择各种颜色。由于颜色定义方式有多种,不同的场合所使用的颜色系统也不尽相同,因而,有必要给出各种颜色系统的定义及相互转换的关系,以便为用户提供方便的选择。常用的颜色模型有多种,不同的颜色模型有不同的用途,有的适用于彩色监视器,有的应用于彩色电视接收机,有的用于彩色印刷等。本节介绍常用的 RGB 模型、CMY 模型、YIQ 模型、YUV 模型、HSV模型和 HLS 模型及其相互之间的转换。

9、总结

通过这几个周的学习,我了解了什么是计算机图形学、为什么需要计算机图形学以及计算机图形学在各个领域的应用。计算机图形学是一种使用数学算法将二维或三维图形转化为计算机显示器的栅格形式的科学,研究的是应用计算机产生图像的所有工作,不管图像是静态的还是动态的,可交互的还是固定的,等。计算机图形学有着广泛的应用领域,包括物理、航天、电影、电视、游戏、艺术、广告、通信、天气预报等几乎所有领域都用到了计算机图形学的知识,这些领域通过计算机图形学将几何模型生成图像,将问题可视化从而为各领域更好的服务。21世纪是信息的时代,在日新月异的科技更新中相信计算机会发挥越来越重要的作用,计算机图形学也会在更多的领域所应用,虽然我国在这方面还比较薄弱,但相信会有越来越好的时候。

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号:2012211632 班级:计算机12-2班 实验地点:逸夫楼507 实验时间:15.04.10 15.04.17

实验一 1 实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析实验数据的能力; 编程实现DDA 算法、Bresenham 中点算法;对于给定起点和终点的直线,分别调用DDA 算法和Bresenham 中点算法进行批量绘制,并记录两种算法的绘制时间;利用excel 等数据分析软件,将试验结果编制成表格,并绘制折线图比较两种算法的性能。 2 实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One (自制平台) 3 实验结果 3.1 程序流程图 (1)DDA 算法 是 否 否 是 是 开始 计算k ,b K<=1 x=x+1;y=y+k; 绘点 x<=X1 y<=Y1 绘点 y=y+1;x=x+1/k; 结束

(2)Mid_Bresenham 算法 是 否 否 是 是 是 否 是 否 开始 计算dx,dy dx>dy D=dx-2*dy 绘点 D<0 y=y+1;D = D + 2*dx - 2*dy; x=x+1; D = D - 2*dy; x=x+1; x

3.2程序代码 //-------------------------算法实现------------------------------// //绘制像素的函数DrawPixel(x, y); (1)DDA算法 void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) { //----------请实现DDA算法------------// float k, b; float d; k = float(Y1 - Y0)/float(X1 - X0); b = float(X1*Y0 - X0*Y1)/float(X1 - X0); if(fabs(k)<= 1) { if(X0 > X1) { int temp = X0; X0 = X1; X1 = temp; }

研究生计算机图形学课程室内场景OpenGL--实验报告Word版

《高级计算机图形学》实验报告 姓名:学号:班级: 【实验报告要求】 实验名称:高级计算机图形学室内场景 实验目的:掌握使用OpenGL生成真实感复杂对象的方法,进一步熟练掌握构造实体几何表示法、扫描表示法、八叉树法、BSP树法等建模方法。 实验要求:要求利用OpenGL生成一个真实感的复杂对象及其周围场景,并显示观测点变化时的几何变换,要具备在一个纹理复杂的场景中漫游功能。要求使用到光线跟踪算法、 纹理映射技术以及实时绘制技术。 一、实验效果图 图1:正面效果图

图2:背面效果图 图4:背面效果图

图4:室内场景细节效果图 图5:场景角度转换效果图

二、源文件数据代码: 共6个文件,其实现代码如下: 1、DlgAbout.cpp #include "StdAfx.h" #include "DlgAbout.h" CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialog) END_MESSAGE_MAP() 2、FormCommandView.cpp #include "stdafx.h" #include "Tool.h" #include "MainFrm.h" #include "FormCommandView.h" #include "ToolDoc.h" #include "RenderView.h" // Download by https://www.360docs.net/doc/a218179599.html, #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif // CFormCommandView IMPLEMENT_DYNCREATE(CFormCommandView, CFormView) CFormCommandView::CFormCommandView() : CFormView(CFormCommandView::IDD) { //{{AFX_DATA_INIT(CFormCommandView)

计算机图形学实验报告 (2)

中南大学信息科学与工程学院 实验报告实验名称 实验地点科技楼四楼 实验日期2014年6月 指导教师 学生班级 学生姓名 学生学号 提交日期2014年6月

实验一Window图形编程基础 一、实验类型:验证型实验 二、实验目的 1、熟练使用实验主要开发平台VC6.0; 2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的Windows图形应用程序; 3、掌握Window图形编程的基本方法; 4、学会使用基本绘图函数和Window GDI对象; 三、实验内容 创建基于MFC的Single Document应用程序(Win32应用程序也可,同学们可根据自己的喜好决定),程序可以实现以下要求: 1、用户可以通过菜单选择绘图颜色; 2、用户点击菜单选择绘图形状时,能在视图中绘制指定形状的图形; 四、实验要求与指导 1、建立名为“颜色”的菜单,该菜单下有四个菜单项:红、绿、蓝、黄。用户通过点击不同的菜单项,可以选择不同的颜色进行绘图。 2、建立名为“绘图”的菜单,该菜单下有三个菜单项:直线、曲线、矩形 其中“曲线”项有级联菜单,包括:圆、椭圆。 3、用户通过点击“绘图”中不同的菜单项,弹出对话框,让用户输入绘图位置,在指定位置进行绘图。

五、实验结果: 六、实验主要代码 1、画直线:CClientDC *m_pDC;再在OnDraw函数里给变量初始化m_pDC=new CClientDC(this); 在OnDraw函数中添加: m_pDC=new CClientDC(this); m_pDC->MoveTo(10,10); m_pDC->LineTo(100,100); m_pDC->SetPixel(100,200,RGB(0,0,0)); m_pDC->TextOut(100,100); 2、画圆: void CMyCG::LineDDA2(int xa, int ya, int xb, int yb, CDC *pDC) { int dx = xb - xa; int dy = yb - ya; int Steps, k; float xIncrement,yIncrement; float x = xa,y= ya; if(abs(dx)>abs(dy))

计算机图形学总结

第一章绪论 计算机图形学的基本概念 计算机图形学:是研究怎样用数字计算机生成、处理和显示图形的一门学科。 图形:计算机图形学的研究对象。 构成图形的要素:几何要素——几何属性(点、线、面、体) 非几何要素——视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽) 表示图形的方法:点阵表示;参数表示 研究内容 计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 计算机图形学的应用 图形用户界面;计算机辅助设计与制造(CAD/CAM);4 科学计算的可视化:CT; 真实感图形实时绘制与自然景物仿真;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务和商务数据的图形显示;地形地貌和自然资源的图形显示 过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广

告 计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学 当前研究热点: 1.真实感图形实时绘制 2.野外自然景物的模拟3 与计算机网络技术的紧密结合 4 计算机动画 5 用户接口 6 计算机艺术 7 并行图形处理 所熟悉的图形软件包 图形软件的标准 GKS (Graphics Kernel System) (第一个官方标准,1977) PHIGS(Programmer’s Herarchical Iuteractive Graphics system) 一些非官方图形软件,广泛应用于工业界,成为事实上的标准 DirectX (MS) Xlib(X-Window系统) OpenGL(SGI) Adobe公司Postscript CAGD(Computer Aided Geometric Design) 图形系统的功能1.计算功能2.存储功能3.对话功能4.输入功能5.输出功能 图形输入设备 1 键盘和鼠标 2 跟踪球和空间球 3 光笔 4 数字化仪 5 触摸板 6 扫描仪

计算机图形学课程设计报告

一、设计内容与要求 1.1、设计题目 算法实现时钟运动 1.2、总体目标和要求 (1)目标:以图形学算法为目标,深入研究。继而策划、设计并实现一个能够表现计算机图形学算法原理的或完整过程的演示系统,并能从某些方面作出评价和改进意见。通过完成一个完整程序,经历策划、设计、开发、测试、总结和验收各阶段,达到巩固和实践计算机图形学课程中的理论和算法;学习表现计算机图形学算法的技巧;培养认真学习、积极探索的精神。 (2)总体要求:策划、设计并实现一个能够充分表现图形学算法的演示系统,界面要求美观大方,能清楚地演示算法执行的每一个步骤。(3)开发环境:Viusal C++ 6.0 1.3、设计要求 内容: (1)掌握动画基本原理; (2)实现平面几何变换; 功能要求: (1)显示时钟三个时针,实现三根时针间的相互关系;

(2)通过右键菜单切换时钟背景与时针颜色; 1.4设计方案 通过使用OpenGL提供的标准库函数,综合图形学Bresenham画线和画圆的算法,OpenGL颜色模型中颜色表示模式等实现指针式时钟运动,并通过点击右键菜单实习时钟背景与时针颜色的转换。根据Bresenham画线和画圆的算法,画出时钟的指针和表盘。再根据OpenGL颜色模型定义当前颜色。设置当时钟运行时交换的菜单,运行程序时可变换时钟背景与时针的颜色。最后再设置一个恢复菜单恢复开始时表盘与指针的颜色。

二、总体设计 2.1、过程流程图

2.2、椭圆的中点生成算法 1、椭圆对称性质原理: (1)圆是满足x轴对称的,这样只需要计算原来的1/2点的位置;(2)圆是满足y轴对称的,这样只需要计算原来的1/2点的位置; 通过上面分析可以得到实际上我们计算椭圆生成时候,只需要计算1/4个椭圆就可以实现对于所有点的生成了。 2、中点椭圆算法内容: (1)输入椭圆的两个半径r1和r2,并且输入椭圆的圆心。设置初始点(x0,y0)的位置为(0,r2); (2)计算区域1中央决策参数的初始值 p = ry*ry - rx*rx*ry + 1/4*(rx*rx); (3)在区域1中的每个Xn为止,从n = 0 开始,直到|K|(斜率)小于-1时后结束; <1>如果p < 0 ,绘制下一个点(x+1,y),并且计算 p = p + r2*r2*(3+2*x); <2>如果P >=0 ,绘制下一个点(x+1,y-1),并且计算 p = p + r2*r2*(3+2*point.x) - 2*r1*r1*(y-1) (4)设置新的参数初始值; p = ry*ry(X0+1/2)*(X0+1/2) + rx*rx*(Y0-1) - rx*rx*ry*ry; (5)在区域2中的每个Yn为止,从n = 0开始,直到y = 0时结束。 <1>如果P>0的情况下,下一个目标点为(x,y-1),并且计算 p = p - 2rx*rx*(Yn+1) + rx*rx;

计算机图形学课程设计书

计算机图形学课程设计 书 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

课程设计(论文)任务书 理学院信息与计算科学专业2015-1班 一、课程设计(论文)题目:图像融合的程序设计 二、课程设计(论文)工作: 自2018 年1 月10 日起至2018 年1 月12日止 三、课程设计(论文) 地点: 2-201 四、课程设计(论文)内容要求: 1.本课程设计的目的 (1)熟悉Delphi7的使用,理论与实际应用相结合,养成良好的程序设计技能;(2)了解并掌握图像融合的各种实现方法,具备初步的独立分析和设计能力;(3)初步掌握开发过程中的问题分析,程序设计,代码编写、测试等基本方法;(4)提高综合运用所学的理论知识和方法独立分析和解决问题的能力; (5)在实践中认识、学习计算机图形学相关知识。 2.课程设计的任务及要求 1)基本要求: (1)研究课程设计任务,并进行程序需求分析; (2)对程序进行总体设计,分解系统功能模块,进行任务分配,以实现分工合作;(3)实现各功能模块代码; (4)程序组装,测试、完善系统。 2)创新要求: 在基本要求达到后,可进行创新设计,如改进界面、增加功能或进行代码优化。

3)课程设计论文编写要求 (1)要按照书稿的规格打印誊写课程设计论文 (2)论文包括封面、设计任务书(含评语)、摘要、目录、设计内容、设计小结(3)论文装订按学校的统一要求完成 4)参考文献: (1)David ,《计算机图形学的算法基础》,机械工业出版社 (2)Steve Cunningham,《计算机图形学》,机械工业出版社 (3) 5)课程设计进度安排 内容天数地点 程序总体设计 1 实验室 软件设计及调试 1 实验室 答辩及撰写报告 1 实验室、图书馆 学生签名: 2018年1月12日 摘要 图像融合是图像处理中重要部分,能够协同利用同一场景的多种传感器图像信息,输出一幅更适合于人类视觉感知或计算机进一步处理与分析的融合图像。它可明显的改善单一传感器的不足,提高结果图像的清晰度及信息包含量,有利于更为准确、更为可靠、更为全面地获取目标或场景的信息。图像融合主要应用于军事国防上、遥感方面、医学图像处理、机器人、安全和监控、生物监测等领域。用于较多也较成熟的是红外和可见光的融合,在一副图像上显示多种信息,突出目标。一般情况下,图像融合由

计算机图形学实验报告

目录

实验一直线的DDA算法 一、【实验目的】 1.掌握DDA算法的基本原理。 2.掌握DDA直线扫描转换算法。 3.深入了解直线扫描转换的编程思想。 二、【实验内容】 1.利用DDA的算法原理,编程实现对直线的扫描转换。 2.加强对DDA算法的理解和掌握。 三、【测试数据及其结果】 四、【实验源代码】 #include

#include #include #include GLsizei winWidth=500; GLsizei winHeight=500; void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); glMatrixMode(GL_PROJECTION); gluOrtho2D(0.0,200.0,0.0,150.0); } void DDALine(int x0,int y0,int x1,int y1) { glColor3f(1.0,0.0,0.0); int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { glPointSize(3); glBegin(GL_POINTS); glV ertex2i(int(x+0.5),(int)(y+0.5)); glEnd(); x+=xIncre; y+=yIncre; } } void Display(void) { glClear(GL_COLOR_BUFFER_BIT); DDALine(100,100,200,180); glFlush(); }

西安电子科技大学计算机图形学重点总结,缩印必备!

反走样:在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样;用于减少或消除这种效果的技术称为反走样 反走样方法主要有:提高分辨率、区域采样和加权区域采样 提高分辨率:把显示器分辨率提高一倍,锯齿宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。这种反走样方法是以4倍的存储器代价和扫描转换时间获得的。因此,增加分辨率虽然简单,但是不经济的方法,而且它也只能减轻而不能消除锯齿问题。 区域采样方法:假定每个象素是一个具有一定面积的小区域,将直线段看作具有一定宽度的狭长矩形。当直线段与象素有交时,求出两者相交区域的面积,然后根据相交区域面积的大小确定该象素的亮度值。 加权区域采样:相交区域对象素亮度的贡献依赖于该区域与象素中心的距离。当直线经过该象素时,该象素的亮度F是在两者相交区域A′上对滤波器进行积分的积分值 刚体:平移和旋转的组合,保持线段的长度,保持角的大小,图形不变形,为刚体变化 仿射:旋转、平移、缩放的组合为仿射变换,平行边仍然平行,错切变换也为仿射变换 较高次数逼近的三种方法:1将y和z直接表示成x的显函数即y=f(x) z=g(x)2用一个形如f(x,y,z)=0的隐式方程的解来表示曲线3曲线的参数表示 前两方法缺点:1由一个x值不能得到多个y值;这一定义不是旋转不变的;描述具有与坐标轴垂直的切线的曲线是困难的2给定方程的解可能更多;曲线段做链接时,很难确定他们的切线方向在连接点上是否相等 参数表示为什么要选择三做参数:1低于三次的函数控制曲线形状时不够灵活,高于三次的曲线会增加不必要的摆动其增加计算量2三次参数曲线是三维空间中次数最低的非平面曲线3定义高次曲线需要更多条件,这样在交互生成时会造成曲线的摆动而难以控制 G0连续:两条曲线段拼接成一条曲线 G1连续:两条曲线段拼接点处切向量方向相同。若相等(方向、大小)-C1 Gn连续:两条曲线段拼接点处切向量的阶导数方向相同。n阶导数相等-Cn B样条曲线优势:1四点加权求和,调和函数非负且和为1,具有凸壳特性2可证明Qi和Qi+1在连接点处连续3曲线段三次函数,所以整个曲线具有连续4凸壳的对曲线裁剪有用 中点生成算法: TBRL中点生成算法:

计算机图形学实验报告记录

计算机图形学实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

计算机图形学实验报告 姓名:___ __________ 学号:_____ ________ 班级:______ _______ 时间:_____2016年12月_________

实验一OpenGL编程与图形绘制 1.实验目的 了解OpenGL编程,并熟悉OpenGL的主要功能、绘制流程和基本语法。学会配置OpenGL环境,并在该环境中编程绘图。 2.实验内容 OpenGL的主要功能:模型绘制、模型观察、颜色模式、光照应用、图像效果增强、位图和图像处理、纹理映射、实时动画和交互技术。 OpenGL的绘制流程分为两个方面:一个完整的窗口系统的OpenGL图形处理系统的结构为:最底层为图形硬件,第二层为操作系统,第三层为窗口系统,第四层为OpenGL,最上面的层为应用软件;OpenGL命令将被放在一个命令缓冲区中,这样命令缓冲区中包含了大量的命令、顶点数据和纹理数据。当缓冲区被清空时,缓冲区中的命令和数据都将传递给流水线的下一个阶段。 OpenGL的基本语法中相关库有:OpenGL核心库:gl、OpenGL实用程序库:glu、OpenG 编程辅助库:aux、OpenGL实用程序工具包(OpenGL utility toolkit,GLUT):glut、Windows 专用库:wgl。 OpenGL的基本语法中命名规则为:OpenGL函数都遵循一个命名约定,即采用以下格式:<库前缀><根命令><可选的参数个数><可选的参数类型>。 了解了上述基础知识后,配置好OpenGL环境,然后在该环境中编程练习图形的绘制,本次实验主要是对点的绘制、直线的绘制和多边形面的绘制。 3.实验代码及结果 3.1点的绘制: #include void Initial(void) { glClearColor(1.0f,1.0f,1.0f,1.0f); //设置窗口背景颜色为白色 glMatrixMode(GL_PROJECTION); //指定设置投影参数 gluOrtho2D(0.0,200.0,0.0,150.0); //设置投影参数 } void Display(void) {

计算机图形学课程教学大纲

《计算机图形学》课程教学大纲一、课程基本信息 课程代码:110053 课程名称:计算机图形学 英文名称:Computer Graphics 课程类别:专业课 学时:72 学分: 适用对象:信息与计算科学专业本科生 考核方式:考试(平时成绩占总成绩的30%) 先修课程:高级语言程序设计、数据结构、高等代数 二、课程简介 中文简介: 计算机图形学是研究计算机生成、处理和显示图形的学科。它的重要性体现在人们越来越强烈地需要和谐的人机交互环境:图形用户界面已经成为一个软件的重要组成部分,以图形的方式来表示抽象的概念或数据已经成为信息领域的一个重要发展趋势。通过本课程的学习,使学生掌握计算机图形学的基本原理和基本方法,理解图形绘制的基本算法,学会初步图形程序设计。 英文简介: Computer Graphics is the subject which concerned with how computer builds, processes and shows graphics. Its importance has been shown in people’s more and more intensively need for harmony human-machine interface. Graphics user interface has become an important part of software. It is a significant trend to show abstract conception or data in graphics way. Through the learning of this course, students could master Computer Graphics’basic theories and methods,understand graphics basic algorithms and learn how to design basic graphics program. 三、课程性质与教学目的 《计算机图形学》是信息与计算科学专业的一门主要专业课。通过本课程的学习,使学生掌握基本的二、三维的图形的计算机绘制方法,理解光栅图形生成基本算法、几何造型技术、真实感图形生成、图形标准与图形变换等概念和知识。学会图形程序设计的基本方法,为图形算法的设计、图形软件的开发打下基础。 四、教学内容及要求 第一章绪论 (一)目的与要求 1.掌握计算机图形学的基本概念; 2.了解计算机图形学的发展、应用; 3.掌握图形系统的组成。

计算机图形学心得体会

计算机图形学心得体会 姓名: 学号: 201203284 班级: 计科11202 序号: 31 院系: 计算机科学学院

通过一个学期的学习,经过老师细心的讲解,我对图形学这门课有了基础的认识,从您的课上我学到了不少知识,基本上对图形学有了一个大体的认识。上课的时候,您的PPT做的栩栩如生,创意新颖的FLASH就吸引了我的眼球,再加上您那详细生动的讲解,就让我对这门课产生了浓厚的兴趣,随着一节一节课的教学,您的讲课更加深深地吸引了我,并且随着对这门课越来越深入的了解更促使我产生了学好这门的欲望。您教会了我们怎们做基本知识,还教了我们不少的算法。听您的课可以说是听得津津有味。以下就是我对计算机图形学这门课的认识。 一、图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。从处理技术上来看图形主要分为两类一类是基于线条信息表示的如工程图、等高线地图、曲面的线框图等另一类是明暗图也就是通常所说的真实感图形。计算机图形学一个主要的目的就是要利用计算机产生令人赏心悦目的真实感图形。为此必须建立图形所描述的场景的几何表示再用某种光照模型计算在假想的光源、纹理、材质属性下的光照明效果。所以计算机图形学与另一门学科计算机辅助几何设计有着密切的关系。事实上图形学也把可以表示几何场景的曲线曲面造型技术和实体造型技术作为其主要的研究内容。同时真实感图形计算的结果是以数字图像的方式提供的计算机图形学也就和图像处理有着密切的关系。 二、计算机图形学的研究内容非常广泛如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。1990年的第11届亚洲运动会上首次采用了计算机三维动画技术来制作有关的电视节目片头。继而以3D Studio 为代表的三维动画微机软什和以Photostyler、Photoshop等为代表的微机二维平面设计软件的普及对我国计算机动画技术的应用起到了推波助谰的作用。计算机动画的应用领域十分宽广除了用来制作影视作品外在科学研究、视觉模拟、电子游戏、工业设计、教学训练、写真仿真、过程控制、平面绘画、机械设计等许多方面都有重要应用如军事战术模拟。 三、科学计算可视化它将科学计算过程中及计算结果的数据转换为几何

计算机图形学 课程设计作品

《计算机图形学Visual c++版》考试作业报告 题目:计算机图形学图形画板 专业:推荐IT学长淘宝日用品店530213 班级:推荐IT学长淘宝日用品店530213 学号:推荐IT学长淘宝日用品店530213 姓名:推荐IT学长淘宝日用品店530213 指导教师:推荐IT学长淘宝日用品店530213 完成日期: 2015年12月2日

一、课程设计目的 本课程设计的目标就是要达到理论与实际应用相结合,提高学生设计图形及编写大型程序的能力,并培养基本的、良好的计算机图形学的技能。 设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握计算机图形学基本知识和算法设计的基本技能术,掌握分析、解决实际问题的能力。 通过这次设计,要求在加深对课程基本内容的理解。同时,在程序设计方法以及上机操作等基本技能和科学作风方面受到比较系统和严格的训练。 二、设计内容推荐IT学长淘宝日用品店530213 设计一个图形画板,在这个图形画板中要实现: 1,画线功能,而且画的线要具备反走样功能。 2, 利用上面的画线功能实现画矩形,椭圆,多边形,并且可以对这些图形进行填充。 3,可以对选中区域的图形放大,缩小,平移,旋转等功能。 三、设计过程 程序预处理:包括头文件的加载,常量的定义以及全局变量的定义 #include "stdafx.h" #include "GraDesign.h" #include "GraDesignDoc.h" #include "GraDesignView.h" #include "math.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif //******自定义全局变量 int type = -1; CPoint point1; CPoint point2; CPoint temp[2];

计算机图形学实验报告

计算机图形学 实验报告 姓名:谢云飞 学号:20112497 班级:计算机科学与技术11-2班实验地点:逸夫楼507 实验时间:2014.03

实验1直线的生成 1实验目的和要求 理解直线生成的原理;掌握典型直线生成算法;掌握步处理、分析 实验数据的能力; 编程实现DDA算法、Bresenham中点算法;对于给定起点和终点的 直线,分别调用DDA算法和Bresenham中点算法进行批量绘制,并记 录两种算法的绘制时间;利用excel等数据分析软件,将试验结果编 制成表格,并绘制折线图比较两种算法的性能。 2实验环境和工具 开发环境:Visual C++ 6.0 实验平台:Experiment_Frame_One(自制平台)。 本实验提供名为 Experiment_Frame_One的平台,该平台提供基本 绘制、设置、输入功能,学生在此基础上实现DDA算法和Mid_Bresenham 算法,并进行分析。 ?平台界面:如错误!未找到引用源。所示 ?设置:通过view->setting菜单进入,如错误!未找到引 用源。所示 ?输入:通过view->input…菜单进入.如错误!未找到引用 源。所示 ?实现算法: ◆DDA算法:void CExperiment_Frame_OneView::DDA(int X0, int Y0, int X1, int Y1) Mid_Bresenham法:void CExperiment_Frame_OneView::Mid_Bresenham(int X0, int Y0, int X1, int Y1)

3实验结果 3.1程序流程图 1)DDA算法流程图:开始 定义两点坐标差dx,dy,以及epsl,计数k=0,描绘点坐标x,y,x增 量xIncre,y增量yIncre ↓ 输入两点坐标x1,y1,x0,y0 ↓ dx=x1-x0,dy=y1-y0; _________↓_________ ↓↓ 若|dx|>|dy| 反之 epsl=|dx| epsl=|dy| ↓________...________↓ ↓ xIncre=dx/epsl; yIncre=dy/epsl ↓ 填充(强制整形)(x+0.5,y+0.5); ↓←←←← 横坐标x+xIncre; 纵坐标y+yIncre; ↓↑ 若k<=epsl →→→k++ ↓ 结束 2)Mid_Bresenham算法流程图开始 ↓ 定义整形dx,dy,判断值d,以及UpIncre,DownIncre,填充点x,y ↓ 输入x0,y0,x1,y1 ______↓______ ↓↓ 若x0>x1 反之 x=x1;x1=x0;x0=x; x=x0;

计算机图形学必考知识点

Phong Lighting 该模型计算效率高、与物理事实足够接近。Phong模型利用4个向量计算表面任一点的颜色值,考虑了光线和材质之间的三种相互作用:环境光反射、漫反射和镜面反射。Phong模型使用公式:I s=K s L s cosαΦα:高光系数。计算方面的优势:把r和v归一化为单位向量,利用点积计算镜面反射分量:I s=K s L s max((r,v)α,0),还可增加距离衰减因子。 在Gouraud着色这种明暗绘制方法中,对公用一个顶点的多边形的法向量取平均值,把归一化的平均值定义为该顶点的法向量,Gouraud着色对顶点的明暗值进行插值。Phong着色是在多边形内对法向量进行插值。Phong着色要求把光照模型应用到每个片元上,也被称为片元的着色。 颜色模型RGB XYZ HSV RGB:RGB颜色模式已经成为现代图形系统的标准,使用RGB加色模型的RGB三原色系统中,红绿蓝图像在概念上有各自的缓存,每个像素都分别有三个分量。任意色光F都可表示为F=r [ R ] + g [ G ] + b [ B ]。RGB颜色立方体中沿着一个坐标轴方向的距离代表了颜色中相应原色的分量,原点(黑)到体对角线顶点(白)为不同亮度的灰色 XYZ:在RGB 系统基础上,改用三个假想的原色X、Y、Z建立了一个新的色度系统, 将它匹配等能光谱的三刺激值,该系统称为视场XYZ色度系统,在XYZ空间中不能直观地评价颜色。 HSV是一种将RGB中的点在圆柱坐标系中的表示法,H色相S饱和度V明度,中心轴为灰色底黑顶白,绕轴角度为H,到该轴距离为S,沿轴高度为S。 RGB优点:笛卡尔坐标系,线性,基于硬件(易转换),基于三刺激值,缺点:难以指定命名颜色,不能覆盖所有颜色范围,不一致。 HSV优点:易于转换成RGB,直观指定颜色,’缺点:非线性,不能覆盖所有颜色范围,不一致 XYZ:覆盖所有颜色范围,基于人眼的三刺激值,线性,包含所有空间,缺点:不一致 交互式计算机程序员模型 (应用模型<->应用程序<->图形库)->(图形系统<->显示屏).应用程序和图形系统之间的接口可以通过图形库的一组函数来指定,这和接口的规范称为应用程序编程人员接口(API),软件驱动程序负责解释API的输出并把这些数据转换为能被特定硬件识别的形式。API提供的功能应该同程序员用来确定图像的概念模型相匹配。建立复杂的交互式模型,首先要从基本对象开始。良好的交互式程序需包含下述特性:平滑的显示效果。使用交互设备控制屏幕上图像的显示。能使用各种方法输入信息和显示信息。界面友好易于使用和学习。对用户的操作具有反馈功能。对用户的误操作具有容忍性。Opengl并不直接支持交互,窗口和输入函数并没有包含在API中。 简单光线跟踪、迭代光线跟踪 光线跟踪是一种真实感地显示物体的方法,该方法由Appel在1968年提出。光线跟踪方法沿着到达视点的光线的相反方向跟踪,经过屏幕上每一象素,找出与视线所交的物体表面点P0,并继续跟踪,找出影响P0点光强的所有的光源,从而算出P0点上精确的光照强度。光线跟踪器最适合于绘制具有高反射属性表面的场景。优缺点:原理简单,便于实现,能生成各种逼真的视觉效果,但计算量开销大,终止条件:光线与光源相交光线超出视线范围,达到最大递归层次。一般有三种:1)相交表面为理想漫射面,跟踪结束。2)相交表面为理想镜面,光线沿镜面反射方向继续跟踪。3)相交表面为规则透射面,光线沿规则透射方向继续跟踪。 描述光线跟踪简单方法是递归,即通过一个递归函数跟踪一条光线,其反射光想和折射光线再调用此函数本身,递归函数用来跟踪一条光线,该光线由一个点和一个方向确定,函数返回与光线相交的第一个对象表面的明暗值。递归函数会调用函数计算指定的光线与最近对象表面的交点位置。 图形学算法加速技术BVH, GRID, BSP, OCTree 加速技术:判定光线与场景中景物表面的相对位置关系,避免光线与实际不相交的景物表面的求交运算。加速器技术分为以下两种:Bounding Volume Hierarchy 简写BVH,即包围盒层次技术,是一种基于“物体”的场景管理技术,广泛应用于碰撞检测、射线相交测试之类的场合。BVH的数据结构其实就是一棵二叉树(Binary Tree)。它有两种节点(Node)类型:Interior Node 和Leaf Node。前者也是非叶子节点,即如果一个Node不是Leaf Node,它必定是Interior Node。Leaf Node 是最终存放物体/们的地方,而Interior Node存放着代表该划分(Partition)的包围盒信息,下面还有两个子树有待遍历。使用BVH需要考虑两个阶段的工作:构建(Build)和遍历(Traversal)。另一种是景物空间分割技术,包括BSP tree,KD tree Octree Grid BSP:二叉空间区分树 OCTree:划分二维平面空间无限四等分 Z-buffer算法 算法描述:1、帧缓冲器中的颜色设置为背景颜色2、z缓冲器中的z值设置成最小值(离视点最远)3、以任意顺序扫描各多边形a) 对于多边形中的每一个采样点,计算其深度值z(x,y) b) 比较z(x, y)与z缓冲器中已有的值zbuffer(x,y)如果z(x, y) >zbuffer(x, y),那么计算该像素(x, y)的光亮值属性并写入帧缓冲器更新z缓冲器zbuffer(x, y)=z(x, y) Z-buffer算法是使用广泛的隐藏面消除算法思想为保留每条投影线从COP到已绘制最近点距离,在投影后绘制多边形时更新这个信息。存储必要的深度信息放在Z缓存中,深度大于Z缓存中已有的深度值,对应投影线上已绘制的多边形距离观察者更近,故忽略该当前多边形颜色,深度小于Z缓存中的已有深度值,用这个多边形的颜色替换缓存中的颜色,并更新Z缓存的深度值。 void zBuffer() {int x, y; for (y = 0; y < YMAX; y++) for (x = 0; x < XMAX; x++) { WritePixel (x, y, BACKGROUND_VALUE); WriteZ (x, y, 1);} for each polygon { for each pixel in polygon’s projection { //plane equation doubl pz = Z-value at pixel (x, y); if (pz < ReadZ (x, y)) { // New point is closer to front of view WritePixel (x, y, color at pixel (x, y)) WriteZ (x, y, pz);}}}} 优点:算法复杂度只会随着场景的复杂度线性增加、无须排序、适合于并行实现 缺点:z缓冲器需要占用大量存储单元、深度采样与量化带来走样现象、难以处理透明物体 着色器编程方法vert. frag 着色器初始化:1、将着色器读入内存2、创建一个程序对象3、创建着色器对象4、把着色器对象绑定到程序对象5、编译着色器6、将所有的程序连接起来7、选择当前的程序对象8、把应用程序和着色器之间的uniform变量及attribute变量关联起来。 Vertex Shader:实现了一种通用的可编程方法操作顶点,输入主要有:1、属性、2、使用的常量数据3、被Uniforms使用的特殊类型4、顶点着色器编程源码。输入叫做varying变量。被使用在传统的基于顶点的操作,例如位移矩阵、计算光照方程、产生贴图坐标等。Fragment shader:计算每个像素的颜色和其他属性,实现了一种作用于片段的通用可编程方法,对光栅化阶段产生的每个片段进行操作。输入:Varying 变量、Uniforms-用于片元着色器的常量,Samples-用于呈现纹理、编程代码。输出:内建变量。 观察变换 建模变换是把对象从对象标架变换到世界标架 观察变换把世界坐标变换成照相机坐标。VC是与物理设备无关的,用于设置观察窗口观察和描述用户感兴趣的区域内部分对象,观察坐标系采用左手直角坐标系,可在用户坐标系中的任何位置、任何方向定义。其中有一坐标轴与观察方向重合同向并与观察平面垂直。观察变换是指将对象描述从世界坐标系变换到观察坐标系的过程。(1):平移观察坐标系的坐标原点,与世界坐标系的原点重合,(2):将x e,y e轴分别旋转(-θ)角与x w、y w轴重合。 规范化设备坐标系 规范化设备坐标系是与具体的物理设备无关的一种坐标系,用于定义视区,描述来自世界坐标系窗口内对象的图形。 光线与隐式表面求交 将一个对象表面定义为f(x,y,z)=f(p)=0,来自P0,方向为d的光线用参数的形式表示为P(t)=P0+td. 交点位置处参数t的值满足:f(P0+td)=0,若f是一个代数曲面,则f是形式为X i Y j Z k的多项式之和,求交就转化为寻求多项式所有根的问题,满足的情况一:二次曲面,情况二:品面求交,将光线方程带入平面方程:p*n+c=0可得到一个只需做一次除法的标量方程p=p0+td。可通过计算得到交点的参数t的值:t=(p0*n+c)/(n*d). 几何变换T R S矩阵表示 三维平移T 三维缩放S旋转绕z轴Rz( ) 100dx 010dy 001dz 0001 Sx000 0Sy00 00Sz0 0001 cos-sin00 sin cos00 0010 0001 θθ θθ 旋转绕x轴Rx(θ) 旋转绕y轴Ry(θ) 1000 0cos-sin0 0sin cos0 0001 θθ θθ cos0sin0 0100 -sin0cos0 0001 θθ θθ 曲线曲面 Bezier曲线性质:Bezier曲线的起点和终点分别是特征多边形的第一个顶点和最后一个顶点。曲线在起点和终点处的切线分别是特征多边形的第一条边和最后一条边,且切矢的模长分别为相应边长的n倍;(2)凸包性;(3)几何不变性(4)变差缩减性。端点插值。 均匀B样条曲线的性质包括:凸包性、局部性、B样条混合函数的权性、连续性、B样条多项式的次数不取决于控制函数。 G连续C连续 C0连续满足:C1连续满足: (1)(0) p(1)=(1)(0)(0) (1)(0) px qx py q qy pz qz == ???? ???? ???? ???? (1)(0) p'(1)=(1)'(0)(0) (1)(0) p x q x p y q q y p z q z == ???? ???? ???? ???? C0(G0)连续:曲线的三个分量在连接点必须对应相等 C1连续:参数方程和一阶导数都对应相等 G1连续:两曲线的切线向量成比例 三维空间中,曲线上某点的导数即是该点的切线,只要求两个曲线段连接点的导数成比例,不需要导 数相等,即p’(1)=aq’(0) 称为G1几何连续性。将该思想推广到高阶导数,就可得到C n和G n连续性。

计算机图形学课程设计报告简单图形的绘制-

《计算机图形学》课程设计 报告 学生姓名:学号: 学院: 班级: 题目: 简单图形的绘制 职称2015年7月1日

目录 目录............................................................................................... I 一、选题背景 (1) 二、算法设计 (2) 2.1 绘制直线、圆、椭圆、抛物线 (2) 2.1.1 绘制直线 (2) 2.1.2 绘制圆 (2) 2.1.3 绘制椭圆 (2) 2.1.4 绘制抛物线 (2) 2.2 三维几何变换 (2) 三、程序及功能说明 (5) 3.1 绘制直线、圆、椭圆、抛物线...... (5) 3.1.1 绘制直线 (5) 3.1.2 绘制圆 (5) 3.1.3 绘制椭圆 (5) 3.1.4 绘制抛物线 (6) 3.2 图形的平移 (6) 3.3 图形的旋转 (6) 3.4 图形的缩放 (7) 四、结果分析 (7) 4.1 绘制直线、圆、椭圆、抛物线 (7) 4.1.1 直线 (7) 4.1.2 圆 (8)

4.1.3 椭圆 (8) 4.1.4 抛物线 (8) 4.2 图形的平移 (9) 4.3 图形的旋转 (10) 4.4 图形的缩放 (11) 五、总结 (10) 六、课程设计心得体会 (14) 参考文献 (15) 源程序 (16)

一、选题背景

二、算法设计 2.1 绘制直线、圆、椭圆、抛物线 2.1.1 绘制直线 通过两个点的坐标来绘制直线。计算机图形学中二维图形在显示输出之前需要扫描转换,生成直线的算法一般有DDA 算法和中点算法。 2.1.2 绘制圆 通过运用圆的参数方程cos ;sin x a r y b r θθ=+=+来绘制圆的图形,其中[0,2]θπ∈, (a,b )为圆心,r 为半径,运用参数方程,只需要确定半径的长度和圆心的位置,即可绘制出圆。 2.1.3 绘制椭圆 通过运用椭圆的参数方程cos ;sin x a y b θθ==来绘制椭圆的图形,其中 [0,2]θπ∈,是已知的变量,a ,b 分别为长半轴,短半轴,当确定a 和b 后,通过参数方程即可得到这个椭圆的方程。 2.1.4 绘制抛物线 根据点绘制抛物线图像是通过拟合完成,根据三个点的坐标,通过数据拟合,得到经过这三个点的函数关系式,从而再根据这个函数关系式绘制出抛物线上其他的点,形成一条连续的抛物线;或直接根据已知函数绘制图像是通过已知函数画出图像。 2.2 三维几何变换 三维几何变换是二维几何变换的推广。二维几何变换在齐次坐标空间中 可用3?3的变换矩阵表示,类似的,三维几何变换在齐次坐标空间中可用4?4的变换矩阵表示。三维空间中的点(),,x y z 的齐次坐标定义为(),,h h h x y z ,其中,h 为不等与零的任意常数,h x hx =,h y hy =,h z hz =。亦即点(),,x y z 对应4维齐次坐标空间的一条直线:

相关文档
最新文档