计算机图形学实验报告

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

计算机图形学

实验报告

学号:20072115

姓名:

班级:计算机 2班

指导老师:何太军

2010.6.19

实验一、Windows 图形程序设计基础

1、实验目的

1)学习理解Win32 应用程序设计的基本知识(SDK 编程);

2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。

4)学习MFC 类库的概念与结构;

5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);

6)学习使用MFC 的图形编程。

2、实验内容

1)使用WindowsAPI 编写一个简单的Win32 程序,调用绘图API 函数绘制若干图形。(可选任务)

2 )使用MFC AppWizard 建立一个SDI 程序,窗口内显示"Hello,This

is my first SDI Application"。(必选任务)

3)利用MFC AppWizard(exe)建立一个SDI 程序,在文档视口内绘制基本图形(直线、圆、椭圆、矩形、多边形、曲线、圆弧、椭圆弧、填充、文字等),练习图形属性的编程(修改线型、线宽、颜色、填充样式、文字样式等)。定义图形数据结构Point\Line\Circle 等保存一些简单图形数据(在文档类中),并在视图类OnDraw 中绘制。

3、实验过程

1)使用MFC AppWizard(exe)建立一个SDI 程序,选择单文档;

2)在View类的OnDraw()函数中添加图形绘制代码,说出字符串“Hello,This

is my first SDI Application”,另外实现各种颜色、各种边框的线、圆、方形、多边形以及圆弧的绘制;

3)在类视图中添加图形数据point_pp,pp_circle的类,保存简单图形数据,通过在OnDraw()函数中调用,实现线、圆的绘制。

4、实验结果

正确地在指定位置显示了"Hello,This is my first SDI Application"字符串,成功绘制了圆,椭圆,方形,多边形以及曲线圆弧、椭圆弧,同时按指定属性改绘了圆、方形和直线。成功地完成了实验。

结果截图:

5、实验体会

通过实验一,了解了如用使用基本的SDI编程函数绘制简单的图

形,如:在指定的位置输出字符串以及基本图形线,圆,方形的绘制。同时,初步认识了,MFC编程,了解了一些MFC的结构,和如何进行窗口编程的知识。

实验二、基本图形生成算法(GDI/MFC)

1、实验目的

1)学习理解Win32 应用程序设计的基本知识(SDK 编程);

2)掌握Win32 应用程序的基本结构(消息循环与消息处理等); 3)学习使用VC++编写Win32 Application 的方法。

4)学习MFC 类库的概念与结构;

5)学习使用VC++编写Win32 应用的方法(单文档、多文档、对话框);

6)学习使用MFC 的图形编程。

2、实验内容

1) 使用MFC AppWizard 建立一个SDI程序,从CClientDC中

派生一个类,添加图绘制算法处理函数:DDA画线、Bresenham

画线,要求能绘制任意斜率的直线段;添加中点画圆函数,

要求能绘制圆心在任意位置的圆;添加边界表示区域和内点

表示区域的种子填充算法。

2) 自定义定义图形数据结构Point\Line\Circle\Polygon等

保存一些简单图形数据(在文档类中),验证以上基本图形

算法:画若干条线段;若干个圆,并以圆作为区域验证种

子填充算法;绘制多边形并填充。

3) 学习数据序列化(串行化),实现将自定义类中的数据保存

到自定义文件中:Point等类从CObject派生(参考 VC

经典教程第7 章),重载Serialize函数。

3、实验过程

1)用MFC(exe)建立一个单文档工程;

2)在类视图中的DrawDC类中根据教材上的代码添加相应的DDA 画线算法函数,Bresenham画线算法函数,中点画圆函数,边界表示区域和内点表示区域的种子填充算法函数,以供DView 类中的OnDraw()函数来调用;

3)自定义circle_2,line_2,point_2类来保存基本的图形数据4)在OnDraw()函数里调用不同的画线、画圆算法来绘制直线、圆、多边形、曲线等基本图形,调用填充算法函数,用来填充多边形和圆。

5)修改Point为point_resister类,从CObject 派生,并且重载Serialize 函数,Serialize 函数函数体根据不同的成员变量实现数据的保存。

6)在OnDraw()函数里调用直线的Serialize 函数,实现直线数据的串行化,保存数据到指定文件里

4、实验结果

通过输入教材上的代码,能成功地实现相应的算法功能。通过

在OnDraw()中调用不同的函数,实现了相应的线,圆,多边形的绘制,并成功地实现图形的填充。

结果截图:

5、实验体会

通过实验二,更透彻的理解了课本上的DDA画线算法和Bresenham 画线算法,中点画圆函数,边界表示区域和内点表示区域的种子填充等算法学习了如何自定义类来存贮简单的图形数据,类的派生和函数的重载,数据的串行化及保存数据到指定的文件,初步认识了MFC中的文档类,学习了一些相关的内容。进一步的了解的MFC的结构与编程方法。

实验三、 OpenGL图形程序设计基础

1.实验目的

1)了解OpenGL 图形库的功能和结构;

2)学习使用Visual C++ 开发基于控制台的图形程序;

3)学习使用Visual C++ 开发基于单文档(GUI 界面)的图形程序。

4)学习使用OpenGL 生成基本图形;

5)学习使用OpenGL 实现图形变换;

2.实验内容

1)使用Visual C++建立一个Win32 Console Application(控制台应用程序),定义若干点坐标,绘制点、线段、不闭合折线、闭合折线、多边形、三角形、四边形、三角扇、三角条带、四边形条带。尝试不同尺寸的点、不同线宽的线、设置颜色等操作。

2 )使用MFC AppWizard 建立一个SDI 程序,根据参考资料2 和3中的步骤设置OpenGL 图形绘制环境。增加绘制4种基本图形(选择其中之一)。

3.实验过程:

1)建立一个控制台应用程序,在RenderScene()函数中调用不同的系统函数分别绘制不同属性的点、线、折线、多边形、扇形等;

2)建立一个SDI程序,按照所给资料设置OpenGL图形绘制环境,并照敲老师所给实列,观看结果,查看关键代码区;

3)仿照所给列子,改写代码,绘制彩色的正方体;

4.实验结果

基本图形显示正确

基本图形截图:

三棱柱截图:

5.实验体会

在实验过程中,在工程的设置里面一定要把相关的库文件导入,设置正方体坐标时,要根据画布的坐标来,设置好图形的坐标比较重要,这将影响这图形显示的效果。通过这个实验,掌握了许多新图形的画法,同时,通过仿照所给列子,改写代码,绘制彩色的正方体,我也初步认识了绘制立体图形的一些内容,希望在今后的试验中可以

了解更多。

实验四、二维图形变换程序设计

1.实验目的:

1)掌握图形变换实现原理,基本几何变换,复合变换等;

2)学习使用Visual C++开发菜单,对话框等交互界面的设计;

3)学习使用MFC单文档程序,实现二维图形的基本几何变换。2.实验内容:

使用Visual C++建立一个单文档程序,采用实验二中定义的基本图形类。在程序中增加图形变换菜单(各基本变换对应菜单项),各图形变换的参数通过对话框提供(设计提供变换参数的对话框,如平移,旋转,比例等),实现二维图形的变换。(提示:在各个图形类中增加相应的成员函数实现平移;菜单选择变换弹出对应变换的参数对话框,对话框中提供参数后取出参数传递给图形对象,通过调用图形变换成员函数实现图形对象的变换)。要求实现直线段、圆、多边形等基本图形的几何变换。

3.实验过程:

(1).根据实验要求,新建菜单,增加二维图形变换子菜单,然后在菜

单上添加平移,比例,对称,旋转以及错切选项。

(2).对菜单中的每一项方法构造响应函数,并给几个需要弹出对话框的选项添加对话框响应函数。

(3).在弹出的对话框输入参数,获取输入的参数,调用相应的变换函数,实现图形的变换。

4.实验结果:

结果正确。

平移xy(100, 0)

5.实验体会:

在这次实验中,涉及到了,菜单和对话框的操作,在vc++6.0中,是非常方便的,VC++6.0都提供了向导型的操作过程和可视化的控件添加,这样节省了代码编写量。通过实验四,进一步加深了对MFC编

程的认识,也学习了如何对二维图形进行各种变换操作。

实验五、三维图形变换程序设计

1.实验目的:

1)掌握三维图形变换实现原理,基本几何变换,复合变换,投影变换等;

2)学习使用Visual C++ 开发菜单,对话框等交互界面的设计;

3)学习使用OpenGL实现图形模型变换,视图变换,投影变换。

4)学习使用OpenGL 生成基本图形;

2.实验内容:

1)使用MFC AppWizard建立一个SDI 程序,根据参考资料2和3中的步骤设置OpenGL图形绘制环境。增加绘制如下图形(选择其中任意两个),注意模型坐标系的选择和顶点坐标的计算。(可直接使用实验三的设计)。

2)在程序中增加图形变换菜单(各个基本变换对应菜单项),各图形变换的参数通过对话框提供(设计提供变换参数的对话框,如平移,旋转,比例等),实现三维图形的基本几何变换(提示:菜单选择变换弹出对应变换的参数对话框,对话框中提供参数)。尝试改变投影参数与观察参数,实现图形的投影变换。

3.实验过程:

(1).根据实验要求,首先建立变换菜单,在菜单上提供平移,比例,

旋转等变换方法。

(2).对菜单中的每一项方法构造响应函数,弹出对话框

(3).通过弹出的对话框进行参数输入,并获取输入的参数,调用相应的变换函数,实现图形的变换。

4.实验结果:

如压缩文件中Debug文件夹的EXE程序所示:

按下平移,输入X,Y,Z轴的平移参数,得出新绘制的图形;

按下比例,输入比例系数,得到新绘制的图形;

按下旋转,首先输入想要绕某点旋转的,该点的坐标,再输入所要旋转的角度,得出新绘制的图形;

原始图形:

平移过后:

比例放大过后:

旋转后:

5.实验体会:

通过实验五,可以熟练的使用菜单完成各种相应的操作,同时,在上个实验,学习二维图形变换的基础上,学习了如何对三维图形进行变换操作,进一步完善了对于图形变换的学习。

实验六、OpenGL真实感图形程序设计

1.实验目的:

1)掌握真实感图形生成的基本原理,如消隐,光照,材质等知识;

2)学习使用OpenGL,GLUT等生成基本图形,如球体,正方体,

茶壶等;

3)学习使用OpenGL生成各种光源:点光源,平行光,聚光灯等;

4)学习使用OpenGL 设置绘制对象的颜色,材质;

5)进一步熟悉OpenGL图形变换技术:几何变换,视图变换,观察变换等:

(1).对模型实现各种几何变换,包括对glTranslate,glRotate,glScanglLoadMatrix,glMultMatrix,等使用;

(2).视口变换,测试不同大小的视口glViewport;

(3).投影变换,要对平行投影与透视投影分别测试,使用不同的观察体参数,观察

效果;

2.实验内容:

使用MFC AppWizard建立一个SDI程序,根据参考资料2和3中的步骤设置Opengl图形绘制环境。增加绘制如下图形,球体或茶壶等(使用glut函数)。环境中创建点光源,平行光,聚光灯。设置所绘制对象的材质,呈现出塑料,金属等材质特性,对官员的位置,方向,类别进行控制,改变材质参数,观察效果。

3.实验过程:

1).根据以前设置好的OpenGL图形绘制参数,在实验3的绘制正方

体的基础上修改程序,绘制1个全红的正方体;

2).建立一个设置光源的函数,进行光源的各种参数的设置;

3).设置好各个光源参数后,调用函数开启光源,此时的正方体轮郭清晰,显得很真实;

4.实验结果:

绘制了1个全红的正方体,设置的光源,并且向光部分亮,背光部分相对而言显得黯淡。

5.实验体会:

实验六通过使用openGL的相关函数,绘制出立体图形。并设置三维图形的材质、光源,调整一定的系数使图形更真的显示。此次学到了,如何使用openGL绘制一个比较真实的三维物体,进一步了解的图形学中三维图形的处理方式,结合课堂中内容,对三维图形有了更深入的理解。

实验七、二维交互式图形程序设计

1、实验目的:

1)综合使用VC++编写Win32 应用的方法(单文档、多文档、对话框);

2 )掌握交互式绘图程序设计及MFC 相关类的使用;

3)掌握使用MFC 的编写简单动画程序。

2、实验任务:

1)使用MFC AppWizard 建立一个SDI 程序。综合前几次二维绘图

实验的结果,实现基本功能:

建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier )曲线的相关类(对于封闭图形,应能多种方式填充)、字符串。使用实验二中自定义的CClientDC 的派生类,实现交互式(鼠标)绘制以上图形。实现颜色、线型、字体等的交互式选择,实现除曲线、圆弧外其他图形的鼠标拾取(框选、点选)。

实现新建文件、保存文件,打开文件(打开保存的自定义图形文件,并绘制图形)。

软件界面设计(工具栏、菜单、光标等)。

可选扩展功能:

(1)实现平移、旋转、缩放、对称、错切等图形几何变换

(2)图形的显示控制包括缩放(按比例、选取框)、平移(上、小、左、右)。

(3)实现图层功能(可见性、颜色、锁定等)、图块功能(及选中

多个图形形成一组,图块的生成、引用、编辑)。

(4 )图形的显示控制包括实时缩放、实时平移和定点平移等。(5)图形的编辑控制包括撤销、重复、剪切、复制、粘贴、删除、清除。

2 )本任务是在以上程序的基础上,增加动画功能(可单独增加相应菜单):

交互式绘制三个圆作为太阳、地球、月球(要求填充,注意位置。数据放入文档类,即文档类有变量太阳、地球、月球等),实现二维动画:月球绕地球转、地球自转(地球采用图案填充)、地球绕太阳公转(按时间比例,可设置参数:时间、颜色、调整大小)。3、实验过程:

1)建立绘制点、直线段、圆、椭圆、圆弧、多段线(折线)、多边形、贝塞尔(Bezier )曲线的相关类

2)在菜单栏上增加相应的菜单,用来选择不同的功能

3)对增加的菜单栏设置ID,并且在View类中添加相应的事件响应函数,在各自的响应函数中实现各自的功能

4、实验结果:

基本功能:

扩展功能(做一个简单的太阳系):

在附加功能中,点击“开始”图形开始变换,点击“停止”图形静止。

5、实验体会:

通过这次实验,学习了交互式绘图程序设计,更深入认识了MFC 相关类的使用,完善了自己对MFC编程的认识体系,也熟悉了如何进行图形学中的交互式设计,此次实验综合了以前的许多知识,更为深入的认识了交互式绘图程序设计。对自己的提高也是非常大的。计算机图形学做了七个实验,做了实验之后收获很多,结合课堂上老师的讲解,对计算机图形学从许多方面都有了一定的理解。对更加深入学

习计算机打下比较好的基础。

计算机图形学基础期末考试试题

一、填空题 1.将多边形外部一点A与某一点B用线段连接,若此线段与多边形边界相交的次数为??????????,则点B在多边形外部。若此线段与多边形边界相交的次数为??????????,则点B在多边形内部。 2.生成直线的四点要求是_______________________,____________________________,____________________________________,速度要快。 3.由5个控制顶点Pi(i=0,1,…4)所决定的3次B样条曲线,由??????????段3次B样条曲线段光滑连接而成。 4.用于减少或克服在“光栅图形显示器上绘制直线、多边形等连续图形时,由离散量表示连续量引起的失真”的技术叫??????????。 5.图形的数学表示法一般有??????????,??????????,??????????。 1.一个交互性的计算机图形系统应具有、、、、 输入等五方面的功能。 2.阴极射线管从结构上可以分为、和。 3.常用的图形绘制设备有和,其中支持矢量格式。 4.PHIGS和GKS将各种图形输入设备从逻辑上分为六种:定位设备、笔划设 备、、、和。 5.通常可以采用和处理线宽。 6.齐次坐标表示就是用维向量表示n维向量。 7.平行投影根据可以分为投影和投影。 8.一个交互式计算机图形处理系统包括图形软件和_____________,图形软件又分为 _____________、_____________和三部分。 9.构成图形的要素包括和,在计算机中通常用采用两种方法来表示 图形,他们是和。 10.荫罩式彩色显像管的结构包括、、和。 11.目前常用的PC图形显示子系统主要由3个部件组成:、和一 个ROM BIOS芯片。 12.在交互输入过程中,图形系统中有_____________、、和其组 合形式等几种输入(控制)模式。 13.填充一个特定区域,其属性选择包括、和。 14.计算机中表示带有颜色及形状信息的图和形常用和参数法,其中用参数法描 述的图形称为,用描述的图形称为。 15.在显示技术中,我们常常采用提高总的光强等级。 16.常用的交互式绘图技术有、、和。

计算机图形学总结

第一章绪论 计算机图形学的基本概念 计算机图形学:是研究怎样用数字计算机生成、处理和显示图形的一门学科。 图形:计算机图形学的研究对象。 构成图形的要素:几何要素——几何属性(点、线、面、体) 非几何要素——视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽) 表示图形的方法:点阵表示;参数表示 研究内容 计算机中表示图形、以及利用计算机进行图形的计算、处理和显示的相关原理与算法,构成了计算机图形学的主要研究内容。 图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。 计算机图形学的应用 图形用户界面;计算机辅助设计与制造(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 扫描仪

计算机图形学实验报告

《计算机图形学》实验报告姓名:郭子玉 学号: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; }

计算机图形学考试整理

第一章:1.什么是计算机图形学,它主要研究内容? 答:是一门研究用计算机将数据转换成图形,并在专用设备上显示和处理的学科,它着重研究图形生成和处理的原理、方法和技术,是一门多学科综合应用的新技术。 研究内容分为九个方向:1)基于设备的基本图形生成算法,如直线、圆弧等;2)图形元素的裁剪和几何变换技术;3)曲线和曲面的处理技术:插值、拟合、拼接和分解4)三维几何造型技术;5)三维形体的实时显示和图形的并行处理技术6)真实感图形生成技术和仿真模拟系统;7)随机形体或模糊景物的模拟生成技术;8)虚拟现实环境的生成和控制技术9)三维或高维数据场的可视化技术。 2.图形的构成要素和表示方法? 答:图形的构成要素:几何要素:刻画对象的轮廓、形状等;非几何要素:刻画对象的颜色、材质等。图形的表示方法:点阵表示:是用具有颜色信息的点阵来表示图形的一种方法,它强调图形由哪些点组成,并具有什么灰度或色彩把点阵法描述的图形叫做图象;参数表示:是以计算机中所记录图形的形状参数与属性参数来表示图形的一种方法。通常把参数法描述的图形叫做图形 第二章 1.计算机图形系统由哪几部分组成,各自实现什么功能? 答:作为一个图形系统,至少应具有计算、存储、输入、输出、对话等五个方面的基本功能。计算机硬件+图形输入输出设备+计算机系统软件+图形软件。图像硬件设备通常由图形处理器、图形输入设备和输出设备构成 图形硬件包括高性能的图形计算机系统和图形设备。图形设备由图形输入设备、图形显示设备和图形硬拷贝输出设备组成。图形软件由图形应用数据结构、图形应用软件和图形支撑软件组成。图形输入设备是指可以完成定位、描画、定值、选择、拾取、字符逻辑输入功能的一类物理设备。键盘、鼠标、数字化仪、触摸屏、图像扫描仪、光笔图形显示设备:光栅扫描显示器(CRT)、液晶显示器(LCD)、等离子显示器 2.常用的图形输入、输出设备有哪些?各有何特点? 图形输入设备 1 键盘和鼠标2 跟踪球和空间球3 光笔4 数字化仪5 触摸板6 扫描仪图形输出设备显示器 1 阴极射线管显示器2 液晶显示器(LCD)3 发光二极管显示器4 等离子显示器5 等离子显示器6发光聚合物技术 3.图形软件分为几层?各个层有什么特点? 计算机图形软件的分类:通用编程软件包和专业应用图形软件包几何造型平台:ACIS和Parasolid ; 4.熟悉光栅扫描显示系统的结构。 光栅扫描的图形显示器图形显示子系统主要由三个部件组成:帧缓冲存储器(帧缓存);显示控制器; ROM BIOS。 5.了解分辨率、帧缓存、像素、像距等常用词语的含义。 像素是用来计算数码影像的一种单位,一个像素通常被视为图像的最小的完整采样。 帧缓冲存储器(Frame Buffer):简称帧缓存或显存,它是屏幕所显示画面的一个直接映象,又称为位映射图(Bit Map)或光栅。帧缓存的每一存储单元对应屏幕上的一个像素,整个帧缓存对应一帧图像。 分辨率:在水平和垂直方向上每单位长度(如英寸)所包含的像素点的数目 第三章:1.直线的常用生成算法有几种? 2.写出DDA画线算法的原理。 最基本思想:从x的左端点x0开始,向x右端点步进,步长=1(个像素)。X步进后,用y=kx+b计算相应的y坐标。最后取像素点(x, 取整round(y))作为当前点的坐标。即当x每递增1,y递增k。PS:实际代码时用Y+0.5替代取整。PS2:当|k|>1时,必须把x,y

安徽中医学院 计算机图形学试卷

安徽中医学院2010~2011学年第二学期《计算机图形学》课程 期末考试试卷 命题教师: 沈同平 试卷编号:H0602 审核人: 王世好 适用专业 计算机科学与技术 考试班级 08医软 考生姓名 学号 班级 一、选择题(每小题1分,共20分) 1.计算机图形学与计算机图像处理的关系是( ) A 、计算机图形学是基础,计算机图像处理是其发展 B 、不同的学科,研究对象和数学基础不同,但它们之间也有可转换部分 C 、同一学科在不同场合的不同称呼而已 D 、完全不同的学科,两者毫不相干 2.下列不属于计算机图形学的应用的是( ) A 、计算机辅助绘图及设计 B 、事务管理中的交互式绘图 C 、科学计算可视化 D 、人工智能 3.下列不属于计算机图形软件国际标准的是( ) A 、GKS B 、PHIGS C 、国标码 D 、 IGES 4.计算机图形显示器一般使用什么颜色模型 ( ) A 、 RG B B 、 CMY C 、 HSV D 、 HLS 5.分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存 ( ) A 、512K B B 、1MB C 、2MB D 、3MB ; 6.触摸屏是( )设备. A 、输入 B 、输出 C 、输入输出 D 、既不是输入也不是输出 7.下述用数值微分法(DDA)画斜率的绝对值小于1的直线的C 语言子程序中哪一 行有错 ( ) Void drawLineWithDDA (int x1, int y1, int x2, int y2, int color) { A 、int x, y; B 、float k = (float)(y2-y1)/(x2-x1); C 、for(x=x1,y=y1;x<=x2;x++) { drawPixel(x,y,color);

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

反走样:在光栅显示器上显示图形时,直线段或图形边界或多或少会呈锯齿状。原因是图形信号是连续的,而在光栅显示系统中,用来表示图形的却是一个个离散的象素。这种用离散量表示连续量引起的失真现象称之为走样;用于减少或消除这种效果的技术称为反走样 反走样方法主要有:提高分辨率、区域采样和加权区域采样 提高分辨率:把显示器分辨率提高一倍,锯齿宽度也减小了一倍,所以显示出的直线段看起来就平直光滑了一些。这种反走样方法是以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中点生成算法:

计算机图形学期末考试试卷(d卷)

计算机图形学期末考试试卷(D 卷) 一、 填空题(每空1分,共10分) 1. 图形的表示方法有两种: 点阵法 和 参数法 。 2. 目前常用的两个事实图形软件标准是OpenGL 和 DirectX 。 3. 多边形有两种表示方法: 顶点表示法 和点阵表示法。 4. 二维图形基本几何变换包括平移、 比例 、 旋转 等变换。 5. 投影可以分为 平移 投影和 透视 投影。 6. 描述一个物体需要描述其几何信息和 拓扑信息 。 7. 在Z 缓冲器消隐算法中Z 缓冲器每个单元存储的信息是每一个像素点的 深度值 。 二、 判断题(每小题1分,共10分,对的画√,错的画×) 1. 由三个顶点可以决定一段二次B 样条曲线,若三顶点共线时则所得到的曲线褪化为一条直线段。 (v ) 2. DDA (微分方程法)是Bresenham 算法的改进。( x ) 3. 插值得到的函数严格经过所给定的数据点,逼近是在某种意义上的最佳近似。( v ) 4. 齐次坐标提供了坐标系变换的有效方法,但仍然无法表示无穷远的点。( x ) 5. 若相对于某点进行比例、旋转变换,首先需要将坐标原点平移至该点,在新的坐标系下做比例或 者旋转变换,然后将原点平移回去。( v ) 6. Phong 算法的计算量要比Gouraud 算法小得多。 ( x ) 7. 将某二维图形整体放大2倍,其变换矩阵可写为???? ??????200010001。( x ) 8. 在种子填充算法中所提到的八连通区域算法同时可填充四连通区域。( v ) 9. 边缘填充算法中是将扫描线与多边形交点左方的所有像素取补。( x ) 10. 计算机图形技术是随着图形硬件设备的发展而发展起来的。( v ) 三、 选择题(每小题1分,共10分) 1.在图形变换中引入齐次坐标的目的是 B 。 A )便于实现缩放变换 B) 统一表示几种基本变换,便于计算 C )便于实现错切变换 D )无特殊目的,一直沿用而已 2. 透视投影中主灭点最多可以有几个? D A ) 0 B )1 C )2 D )3 3. 在简单光照模型中,由物体表面上的点反射到视点的光强是下述哪几项之和? C

计算机图形学期末考试题库

一、单项选择题 1. 计算机图形显示器一般使用什么颜色模型?(B) A)RGB;B) CMY;C) H SV ;D) HLS 2. 哪一个不是国际标准化组织( ISO)批准的图形标准?(D) A)GKS;B) PHIGS;C) C GM ;D) DXF 3.下述用数值微分法(DDA画斜率的绝对值小于1的直线的C语言子程序中哪一行有错? (A) Void drawLineWithDDA(int x1, int y1, int x2, int y2, int color) { A) int x, y; B ) float k = (float)(y2-y1)(x2-x1); C ) for(x=x1,y=y1;x<=x2;x++) { drawPixel(x,y,color); } D ) y+=k; } } 4. 下述绕坐标原点旋转a 角的坐标变换矩阵中哪一项是错误的?(B) | A B | | C D | A) cos a; B)sin a; C)sin a; D)cos a 5. 下述哪一条边不是非均匀有理B样条(NURBS的优点?(D) B)对于间距不等的数据点,用NURBS以合的曲线比用均匀B样条拟合的曲线更光滑 C)NURB醍供的权控制方法比用控制点更能有效的控制曲线的形状 D)使用NURB呦以提高对曲面的显示效率 A) NURBSL均匀B样条能表示更多的曲面

6. 透视投影中主灭点最多可以有几个?(D) A)0; B)1; C)2; D)3 7. 在用扫描线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确?(D) A)当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次 B)当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次 C)当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次 D)当射线与多边形的某边重合时,计数1次 &在简单光反射模型中,由物体表面上点反射到视点的光强下述哪几项之和?(C)(1)环境光的反射光强;(2)理想漫反射光强;(3)镜面反射光强;(4)物体间的反射光强。 A(1)和(2) B)(1)和(3) C)(1)(2)和(3) D)(1)(2 )(3 )和(4 ) 9. 下面关于NURBS的论述,哪个是错误的? ( B) A. 可通过控制顶点和权因子来改变形状; B. 仅具有仿射不变性,但不具有透射不变性; C. 非有理B样条、有理及非有理Bezier曲线、曲面是NURBS的特例; D. 可表示标准解析形状和自由曲线、曲面; 10. 下述关于Bezier 曲线P1(t), P2(t)t [0,1]的论述,哪个是错误的?() A. P1(1)= P2(0) = P,在P处P1(1), P2(0)的切矢量方向相同,大小相等, 则 P1(t), P2(t)在P处具有G1连续;

计算机图形学心得体会

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

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

计算机图形学实验报告 (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))

计算机图形学考试简答题复习

计算机图形学考试简答题复习 、简述计算机动画地概念,它经历了哪几个阶段地发展?(分) 计算机动画是指采用图形与图像地处理技术,借助于编程或动画制作软件生成一系列地景物画面,其中当前帧是前一帧地部分修改. 计算机动画是采用连续播放静止图像地方法产生物体运 动地效果.资料个人收集整理,勿做商业用途 年代: 二维计算机辅助动画系统 年代: 三维图形与动画地基本技术地开发; 年代: 优化年代出现地模型和阴影技术; 年代: 动力学仿真技术、三维仿真演员系统 、计算机图形学、图象处理、计算机视觉这三者之间有什么联系和区别?(分) . 数字图像处理主要研究地内容 数字图像处理()是用计算机对图像信息进行处理地一门技术,使利用计算机对图像进行各 种处理地技术和方法.资料个人收集整理,勿做商业用途 数字图像处理主要研究地内容有以下几个方面:) 图像变换由于图像阵列很大,直接在空间 域中进行处理,涉及计算量很大.因此,往往采用各种图像变换地方法,如傅立叶变换、沃尔什变换、离散余弦变换等间接处理技术,将空间域地处理转换为变换域处理,不仅可减少计算 量,而且可获得更有效地处理(如傅立叶变换可在频域中进行数字滤波处理).目前新兴研究地小波变换在时域和频域中都具有良好地局部化特性,它在图像处理中也有着广泛而有效地应用. ) 图像编码压缩图像编码压缩技术可减少描述图像地数据量(即比特数),以便节省图像传输、 处理时间和减少所占用地存储器容量.压缩可以在不失真地前提下获得,也可以在允许地失真条件下进行.编码是压缩技术中最重要地方法,它在图像处理技术中是发展最早且比较成熟地技术. ) 图像增强和复原图像增强和复原地目地是为了提高图像地质量,如去除噪声,提高图像地清晰度等.图像增强不考虑图像降质地原因,突出图像中所感兴趣地部分.如强化图像高频分量,可使图像中物体轮廓清晰,细节明显;如强化低频分量可减少图像中噪声影响.图像复原要求对图像降质地原因有一定地了解,一般讲应根据降质过程建立"降质模型",再采用某种滤波方 法,恢复或重建原来地图像. ) 图像分割图像分割是数字图像处理中地关键技术之一.图像分割 是将图像中有意义地特征部分提取出来,其有意义地特征有图像中地边缘、区域等,这是进一 步进行图像识别、分析和理解地基础.虽然目前已研究出不少边缘提取、区域分割地方法,但还没有一种普遍适用于各种图像地有效方法.因此,对图像分割地研究还在不断深入之中,是目前图像处理中研究地热点之一. ) 图像描述图像描述是图像识别和理解地必要前提.作为最简单地 二值图像可采用其几何特性描述物体地特性,一般图像地描述方法采用二维形状描述,它有边 界描述和区域描述两类方法.对于特殊地纹理图像可采用二维纹理特征描述.随着图像处理研究地深入发展,已经开始进行三维物体描述地研究,提出了体积描述、表面描述、广义圆柱体描述 等方法. ) 图像分类(识别)图像分类(识别)属于模式识别地范畴,其主要内容是图像经过某些预处理(增强、复原、压缩)后,进行图像分割和特征提取,从而进行判决分类.图像分类常采用经典地模式识别方法,有统计模式分类和句法(结构)模式分类,近年来新发展起来地模 糊模式识别和人工神经网络模式分类在图像识别中也越来越受到重视.资料个人收集整理,勿做商业用途 . 计算机图形学( ,简称)是一种使用数学算法将二维或三维图形转化为计算机显示器地栅格形 式地科学.资料个人收集整理,勿做商业用途 计算机图形学地研究内容非常广泛,如图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法、非真实感绘制,以及科学计算可 视化、计算机动画、自然景物仿真、虚拟现实等. 资料个人收集整理,勿做商业用途 . 计算机视觉既是工程领域,也是科学领域中地一个富有挑战性重要研究领域.计算机视觉是一 门综合性地学科,它已经吸引了来自各个学科地研究者参加到对它地研究之中.其中包括计算机科学和工程、信号处理、物理学、应用数学和统计学,神经生理学和认知科学等. 资料个人收 集整理,勿做商业用途 计算机视觉地挑战是要为计算机和机器人开发具有与人类水平相当地视觉能力.机器视觉需要 图象信号,纹理和颜色建模,几何处理和推理,以及物体建模.一个有能力地视觉系统应该把所有这些处理都紧密地集成在一起.[]作为一门学科,计算机视觉开始于年代初,但在计算机视觉 地基本研究中地许多重要进展是在年代取得地.现在计算机视觉已成为一门不同于人工智能、图象处理、模式识别等相关领域地成熟学科.计算机视觉与人类视觉密切相关,对人类视觉有一个

计算机图形学期末考试试卷

计算机图形学期末考试试卷(C卷) 一、判断题(本大题共 10 小题,每小题 1 分,共 10 分) 1.计算机图形生成的基本单位是线段。 ( F ) 2.构成图形的要素除了点、线、面、体等几何要素外,还应该包括 灰度、色彩、线型、线宽等非几何要素。 ( N ) 3.在齐次坐标系中,若用矩阵来表示各种运算,则比例和旋转变换 是矩阵F乘法运算,而平移变换是矩阵加法运算。 ( F ) 4.Z-Buffer消隐算法有利于硬件实现,并且不需要排序。 ( N ) 5.二次Bezier曲线和二次B样条曲线都通过控制多边形的首末端 点。 ( F ) 6.一个向量的齐次坐标的表示形式是唯一的。 ( F ) 7.计算机图形技术是随着图形硬件设备的发展而发展起来的。 ( N ) 8.Phong算法的计算量要比Gouraud算法小得多。

( F ) 9. 将某二维图形整体放大2倍,其变换矩阵可写为。 ( F ) 10. 图形软件标准是为提高图形软件的易用性而提出的。 ( F ) 二、填空题(本大题共 10 空,每空 1 分, 共 10 分) 1. 在多边形填充过程中,常采用、 左闭右开 和 下闭上开 的原则对边界像素进行处理。 2. 基本几何变换指 平移 、 比例 和 旋转 三种变换。 3. 屏幕上最小的发光单元叫作 像素 ,它的多少叫做 分辨率 。 ??????????200010001

4.ISO批准的第一个图形软件标准是GKS ,进入20 世纪90年代后,存在的事实上的图形软件标准主要是 OpenGL 和Direct x。 5.图形的表示方法有两种:参数法和点阵 法。 6.多边形的表示方法有顶点表示法和点阵表 示法两种。 7.计算机三维模型的描述有线框模型、表面模 型和实体模型。 8.颜色包含3个要素:色调、饱和度和 亮度。 三、简答题(本大题共 5 小题,每小题 5 分,共 25 分) 1.计算机图形学研究的主要内容是什么 2.什么是齐次坐标齐次空间点 P(X、Y、W) 对应的笛卡尔坐标

计算机图形学必考知识点

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连续性。

计算机图形学实验报告

目录

实验一直线的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(); }

相关文档
最新文档