1、西北工业大学计算机图形学重点第一章 绪论计算机图形学是研究怎样用计算机生成、处理和显示图形的一门学科。生成:在计算机内表示客观世界物体的模型,即图形建模;显示:模型对象在计算机显示设备或其他输出设备上的显示;处理:利用计算机实现客观世界、对象模型和输出图形这三者之间映射的一系列操作和处理过程。1.点阵法:枚举出图形中所有的点来表示,强调图形由点及其点的属性(颜色)构成:像素图、位图或图像。一般地,一个图像就是一个矩阵,该矩阵的每一个元素都表示图像某行某列一个点的颜色值,矩阵的维数就是图像的宽度和高度 缺点:点阵图形需要大量的存储空间;对点阵图形进行编辑、修改较困难; 点阵图的放大操作会使图形失
2、真;JPEG, BMP, Tif, GIF, PNG2.参数法:由图形的形状参数和属性参数来表示图形(矢量图、图形) 形状参数(必须有):几何,方程或分析表达式的系数,线段的端点坐标等 属性参数(可选):非几何,颜色、线形等 DXF, OBJ, 3DS几何要素:刻画对象的轮廓、形状、几何元素组成等。 非几何要素:刻画对象的颜色、材质、纹理等。图像:图像一定是二维的。基本单位是像素:组成图像的颜色点(或亮度点), 是数字图像的最小信 息单位,通常是一个整数,其大小称为像素值。 基本参数图幅参数:也称图像空间分辨率,通常用“行数 列数”表示 灰度级分辨率、颜色分辨率 图像分为两色图(黑白)、灰度图
3、、彩色图、真彩色图图形: 图形可以是二维的、或者三维的,图形的基本信息包括它的基本几何元 素(必须),拓扑关系,以及颜色、 材质、纹理等可选要素第二章 图形系统与图像生成计算机图形系统是进行图形处理的计算机系统,是计算机图形硬件和图形软件的集合。图形硬件包括具有图形处理能力的计算机主机、图形显示器以及鼠标和键盘等基本交互工具,还有图形输入板、绘图仪、图形打印机等输入输出设备,以及磁盘、光盘等图形存储设备。图形软件分为图形数据模型、图形应用软件和图形支撑软件三部分。涵盖了计算机系统软件、高级语言和专业应用软件等方面。一个计算机图形系统至少应当具有计算、存储、对话、输入、输出五个方面的基本功能图形
4、系统的硬件就是指执行以上不同功能的各种设备,如计算机、鼠标、扫描仪、显示器、硬盘、绘图仪等。根据具体的业务需求,组成系统的设备是可选的。在系统中,计算机处于核心地位,其他设备与其直接相连。星型设备,其他可选图形输入设备从逻辑上分为六种,但实际的往往是某些逻辑输入功能的组合名称相应典型设备基本功能定位叉丝、鼠标输入一个点的坐标笔划图形输入板输入一系列点的坐标数值键盘输入一个整数或实数选择功能键、光笔、鼠标由一个整数得到某种选择拾取光笔、鼠标、叉丝通过一种拾取状态来判断一个显示的图形字符串键盘输入字符串图形处理器:在图形系统硬件中,为了减轻主机负担,加快图形处理速度,一般都有两个以上的处理器部件,
5、采用流水线、并行处理等技术。除了中央处理器(CPU)之外,还有一个专用的显示处理机(DPU),它与CPU协同工作,并控制显示设备的操作。图形处理器是图形系统结构的重要元件,是连接计算机和显示终端的纽带;早期的图形处理器只包含简单的存储器和帧缓冲区,它们实际上只起了一个图形的存储和传递作用,一切操作都必须有CPU来控制;现在的图形处理器不单单存储图形,而且能完成大部分图形函数,专业的图形卡已经具有很强的3D处理能力,大大减轻了CPU的负担,提高了显示质量和显示速度。图形卡将用于图形显示的处理器(DPU)、视频处理控制器、显示处理存储器以及接口电路等集成在一起,单独做成一块板卡,称为图形显示适配器
6、(简称显卡)。工作站的特点:具有高速的科学计算、丰富的图形功能处理、灵活的窗口界面及网络管理功能的交互式计算机系统。比微机高一个等级的计算机。1.具有32位或64位字长的CPU,广泛采用精简指令系统(RISC);2.配备大容量的内存和外存,运算速度很高,可达20MIPS和5MFLOPS以上;3.一般采用UNIX及类似的操作系统,配有高性能的窗口管理系统,如Motif或OpenLook等;4.具有很强的图形图像处理功能,配有专用的图形图像处理器,大尺寸高分辨率的显示器,如19英寸或21英寸,1280X1024以上的分辨率,颜色深度可达100个位面以上;5.具有网络功能,支持TCP/IP协议;6.
7、基本用户是工程和产品的设计师,主要用于工程和产品的设计与绘图、工业模拟和艺术设计等。从用户角度来看,除工作站比大、中、小型计算机价格便宜外,更主要的是工作站将多种功能集于一身,体积小,通常配有高分辨率的大屏幕显示器及容量很大的内存储器和外部存储器,并且具有较强的信息处理功能和高性能的图形、图像处理功能以及联网功能,为程序设计人员提供一个功能强大、使用方便的工作环境。根据工作站本身的特点,从使用的方便性来讲,它更类似于PC机,有人说:工作站是高档的PC机;从功能和性能方面,它越来越多地覆盖了大、中、小型计算机的应用领域。CRT工作原理:由电子枪发射电子束(阴极射线),通过聚焦系统(电子透镜)和偏
8、转系统,射向涂覆荧光层的屏幕上的指定位置。在电子束冲击的每个位置,荧光层发出一个小亮点,从而产生可见图形。CRT结构功能CRT主要由电子枪、聚焦系统、偏转系统、和荧光屏四部分组成。彩色CRT和单色显示器的不同是由于荧光粉的缘故。目前大多使用的是荫罩式彩色CRT,荫罩是安装在荧光屏的内侧的上面刻有40多万个孔的薄钢板。荫罩孔的作用在于保证三束电子共同穿过同一个荫罩孔,准确的激发荧光粉,使之发出红、绿、蓝三色光。CRT产生彩色显示有两种技术:电子束穿透法,荫罩法。光栅扫描原理:光栅扫描方式中,电子束总是不断地从左至右、从上到下反复扫描整个屏幕,在扫描过程中,只要在对应时刻在对应位置控制电子束的强度
9、就能显示所要的图形。电子束横向从左到右扫描一次称为一条扫描线,在每条扫描线末端,电子束返回到屏幕的左边,又开始显示下一条扫描线。一帧图像是光栅显示系统执行一次全屏幕循环扫描(一次屏幕刷新)所产生的图像。光栅扫描式显示器的特点:光栅扫描显示器是画点设备,可以看作是一个点阵单元发生器,并可控制每个点阵单元的亮度。它不能直接从单元阵列中的一个可编址的像素画一条直线到另一个编址的像素,只能用尽可能靠近这条直线路径的像素点集来近似地表示这条直线。为了得到稳定的画面,光栅扫描显示器每秒要刷新。通常刷新频率至少应为30帧/每秒。随着刷新频率的降低,会出现闪烁。屏幕上每个光点维持发光的时间一般在毫秒或微秒数量
10、级之间,荧光屏的亮度随着时间按指数衰减,整个画面必须在一秒钟内重复显示,才能得到稳定而不闪烁的图形,所以必须重复使荧光物质发光,即使电子束迅速地回到同一点。这称为屏幕刷新。屏幕坐标:光栅扫描显示器的屏幕可分为m行扫描线,每行扫描线有n个像素。这样整个屏幕就分为m*n个像素,m*n 就是显示器的分辨率。为了得到稳定的画面,光栅扫描显示器每秒要刷新。通常刷新频率至少应为30帧/每秒。随着刷新频率的降低,会出现闪烁。要显示世界坐标系中指定对象的几何形状,就需要调整数学输入点到有限像素区域的映射;映射方法有两种: 一是按对象边界与像素区域的覆盖量来调整显示物体的尺寸,即对象与像素中心对准; 二是对象映
11、射到像素间的屏幕位置,以使物体边界与像素边界对准。光栅扫描生成的图像所有像素的强度值都要存放在一块连续的存储器中,这个存储器称为帧缓冲器或刷新存储器,俗称显示存储器。 光栅扫描系统的帧缓冲器对屏幕上每一点都有存储强度/颜色信息的能力。帧缓冲器的单元个数至少与显示器能显示的像素总数相同,且存储单元一一对应于可寻址的屏幕像素位置。对于黑白单灰度显示器每一象素需要一位存储器,对一个10241024象素组成的黑白单灰度显示器所需要的最小缓存为220,并在一个位面上。一个位面的缓存只能存储黑白图象。3个位面、分辨率1024*1024像素阵列的显示器,需3*1024*1024 bit的存储器每种原色电子枪
12、有8个位面的帧缓存和8位的数模转换器,每种原色可有256种灰度,三种原色的组合将是(28)3=224,分辨率是1024*1024个像素阵列的显示器,帧缓存1024*1024*24彩色查找表或颜色索引技术是不断增加缓冲器存储容量而得到更多颜色的一种技术,它在帧缓冲器与显示屏的数/模转换器之间加一个查色表。彩色查找表可看成是一维线性表,每一项(元素)对应于一种颜色。 帧缓冲器中每个单元存储的是对应于某一像素颜色在彩色查找表中的地址,而不是颜色值。 彩色表的地址长度由帧缓冲器每个存储单元的位数决定,这确定了一幅画面能同时显示的颜色种类数。 彩色表的元素位长由帧缓冲器每个存储单元的基色数决定,这决定了
13、显示器可选择的显示的颜色种类总数。光栅扫描系统:交互式光栅图形系统通常使用几个处理部件。除了中央处理器(cpu)以外还使用一个视频控制器或显示控制器来控制显示设备的操作。帧缓冲器可在系统存储器的任意位置,视频控制器访问帧缓冲器,以刷新屏幕。除了视频控制器,更复杂的光栅系统运用其它处理器作协处理器和加速器,并执行各种图形操作。最简单的光栅扫描系统:帧缓冲器使用系统存储器的固定区域,视频控制器主要用于屏幕的基本刷新操作计算机将要显示的图形、图像转化为位图,经过接口电路送入帧缓存,视频控制器控制电子束依照固定的扫描顺序,自上而下,从左到右扫描整个屏幕,同时,把一帧画面中的每个像素的值从帧缓存中读出。
14、读出的值控制电子束能量的大小,决定像素的亮度。具有显示处理器的光栅扫描系统:除了系统存储器外,还提供独立的显示处理器存储区域。上图表示了建立包含独立显示处理器的光栅扫描系统的结构。显示处理器的主要任务是将应用程序给出的图形定义数字化为一组像素强度值,存放在帧缓冲器,这个过程称扫描转换。显示处理器的用途是使cpu从图形杂务中解脱出来。除了系统存储器外,还提供独立的显示处理器存储区域。上图表示了建立包含独立显示处理器的光栅扫描系统的结构。显示处理器的主要任务是将应用程序给出的图形定义数字化为一组像素强度值,存放在帧缓冲器,这个过程称扫描转换。例如,直线段的扫描转换意味着必须确定最接近于直线路径的像
15、素位置,并把每个位置的强度值存入帧缓冲器。显示配置是指显示器和显示卡这两方面的内容。显示器又叫监视器。最简单显示卡将显示器控制适配器,它将显示处理器、存储器、显示控制器制作在一块板卡或者芯片上,它与显示器一起构成一个显示系统。 从显示标准的角度说,每一种标准都包含有一种或多种显示模式,每一种显示模式都规定了模式的类型、字符尺寸、字符格式、屏幕分辨率、色彩等指标。PAL, NTSC显示卡又名显示适配器,当前显示卡主要由显示芯片、显示内存、RAMDAC芯片、输入输出系统接口、显示器插座、连接主板总线的接口等组成显示主芯片图形处理器,显卡的核心,俗称GPU(类似DPU),它的主要任务是对系统输入的视
16、频信息进行构建和渲染视频控制器,建立帧缓存与屏幕像素之间的一一对应,负责刷新屏幕显示缓存用来存储将要显示的图形信息以及保存图形运算的中间数据显存的大小和速度直接影响着主芯片性能的发挥数字模拟转换器(RAMDAC)它的作用就是把二进制的数字转换成为和显示器相适应的模拟信号显示卡的作用:将CPU送来的图像信号经过处理后输送至显示器,这个过程通常由四个步骤1) CPU将数据通过总线传送到显示芯片。2) 显示卡上的芯片对数据进行处理,并将处理结果存放在显示卡的内存中。3) 显示卡从内存中将数据传送到数/模转换器进行数/模转换。4) 数/模转换器将模拟信号通过VGA接口输送到显示器。扫描转换大多数图形学
17、应用中采用点、线、面表示来建立图形对象模型,然而,对于光栅图形显示而言,点、线、面表示又不能直接用于显示,因为在光栅显示器上的任何一种图形,实际上都是一些具有一种或多种颜色的图象(像素的集合)。将图形对象表示转换成点阵表示,即确定一个像素集合及其颜色,用于显示一个图形的过程,称为图形的扫描转换或光栅化。也就是说,从图形对象的几何信息出发,求出构成图形对象的各个像素,并将其颜色值写入帧缓冲器中相应的单元。一般基本几何元素由显示卡的显示处理器完成图形到图像的转化。第三章 图形编程基础OpenGL特点 OpenGL是由SGI公司设计的一套底层三维图形API。它不是一种编程语言,而是提供了一些预封装的
18、函数,c语言可以调用这些函数。 OpenGL是一个开放图形库,目前在Windows、MacOS、OS/2、Unix/X-Windows等系统下均可使用,因此具有良好的可移植性,同时调用方法简洁明了,深受好评,应用广泛。 OpenGL(Open Graphics Library)是独立于操作系统和硬件环境的三维图形软件库。由于其开放性和高度的可重用性,目前已成为业界标准. 很多优秀的软件都是以它为基础开发出来的,象著名的产品有动画制作软件3DMAX,Soft Image,VR软件和GIS软件等等 工业标准OpenGL功能:1.几何建模,2.坐标变换,3.颜色模式设置,4.光照和材质设置,5.图像
19、功能,6.纹理映射,7.实时动画OpenGL主要包括三个函数库: OpenGL核心库GL:其中包含了OpenGL最基本的命令函数。这些函数都以gl为前缀。(115个) OpenGL实用库GLU:它是比OpenGL核心库更高一层的函数库,实用程序库中的所有函数都是由OpenGL的核心库函数编写。函数都以glu为前缀。(43个) OpenGL辅助库AUX:提供了一些基本的窗口管理函数、事件处理函数和简单的事件函数。函数都以aux为前缀。(31个)处理窗口和输入:void glutDisplayFunc(void(*func)(void);该函数用于绘制当前窗口。参数void(*func)为绘制当前
20、窗口时所调用的函数名。任何时候当窗口的内容需要被重新绘制,则调用该函数。void glutReshapeFunc(void(*func)(int width,int height); 表示在窗口尺寸改变时,指定了所调用的函数。width, height指定了窗口新的宽度和高度。运行程序void glutMainLoop(void);这个函数开始启动主GLUT处理循环。事件循环包括所有的键盘、鼠标、绘制及窗口的事件等。glColor3f(1.0,1.0,1.0) 命令, gl前缀代表该函数来自gl库(说明该函数来自哪个库); 根命令Color代表对颜色的设定; 后缀3f表示该函数需要3个浮点型的
21、参数;(后缀中的 数字表示该函数需要的参数个数,字母表示该函数的需要的参数类型) Glfloat color=1.0,1.0,1.0glColor3fv(color);若函数的后缀中带有一个字母v,表示该命令带有一个指向矢量或数组值的指针作为参数。 编译OpenGL程序需要头文件gl.h,glu.h,GLAUX.h,库opengl32.lib,glu32.lib, GLAUX.lib, 若使用GLUT还需要glut.h 和glut32.lib。 运行OpenGL程序,需要在windowssystem目录下有动态连接库opengl32.dll和glu32.dll, GLAUX.dll,若使用GL
22、UT还需要glut32.dll。函数glViewport()定义窗口内的作图区域(即视区)。函数如下:void glViewport(GLint x,Glint y,Glsizei width,Glsizei height);功能:设置窗口中的作图区域,用于OpenGL绘图。参数说明:(x,y)为绘图区域左下角的坐标,参数width和height为绘图区宽度和高度的像素数,即视区的尺寸。所有的几何图最终都是通过一组有序顶点来描述的。OpenGL中有十种基本图元,从空间中绘制的简单的点到任意边数的封闭多边形。用glBegin命令可告诉OpenGL开始把一组顶点解释为特定图元。然后用glEnd命令
23、结束该图元的顶点列表。 void glBegin(Glenum mode);此函数标志描述一个几何图元的顶点列表的开始。图元的类型由mode来决定。共有GL_POINTS,GL_LINES,GL_LINE_STRIP等十种图元 void glEnd(void);此函数标志着顶点列表的结束。第四章 图形观察与变换平移:将物体沿直线路径从当前坐标位置移到另一个坐标位置的重定位过程。平移是不产生变形而移动物体的刚体变换,即物体上的每一点移动相同量的坐标二维物体旋转是指将物体沿某个定点转动某个角度的重定位过程旋转变换是不产生变形地移动物体的刚体变换。物体上所有的点旋转相同的角度 void glRota
24、ted(GLdouble angle,GLdouble x,GLdouble y,GLdouble z); void glRotatef(GLdouble angle, GLfloat x, GLfloat y,GLfloat z);angle指定逆时针方向旋转的角度,范围0360,xyz与原点相连,产生旋转轴。对于二维图形,由于只能在xy平面内旋转。因此只能绕z轴旋转,即相当于在二维平面内绕原点旋转。这时参数可取为:x=0,y=0,z=1。angle角度:,旋转轴:xyz,eg:(30,1,0,0)绕x轴逆时针旋转30比例x= sx *x,y= sy*y void glScaled(GLdo
25、uble x,GLdouble y,GLdouble z); void glScalef(GLfloat x,GLfloat y,GLfloat z);x,y,z分别表示对象沿三个坐标轴缩放的比例因子。对于二维图形z坐标值等于0。glScale(x,y,0)所生成的二维变换矩阵为:glScale(1,-1,0) glScale(-1,-1,0)对称:对称变换也称为反射变换,相对于反射轴的对称变换是通过将物体绕反射轴旋转180而生成的。它的基本变换包括对坐标轴、原点和45线的变换。X轴Y轴Z轴Y=X Y=-X 错切变换也称为错位或错移变换,变换结果将使目标图形失真。沿x方向的错切:变换的结果是使
26、图形的y坐标不变,而x坐标有一个增量,图形沿x轴产生错切变形。x=x+cy y=y 其中,c=tg 沿x方向的错切:当c0时,如y0,沿+x方向错切;y0,沿-x方向错切。 当c0,沿-x方向错切; y0时,如x0,沿+y方向错切;x0,沿-y方向错切。当b0,沿-y方向错切; x0,沿+y方向错切。 复合变换:复合变换矩阵T也可由一系列基本几何变换矩阵Ti的乘积来表示,即:T= T1 T2 Tn例1:平面图形绕任意点P(xp,yp)旋转 角,可以经过以下几个步骤实现:1.将旋转中心移到原点,变换矩阵为:2.将图形绕原点旋转角,变换矩阵为:3.将旋转中心平移回原来的位置,变换矩阵为:例2:平面
27、图形相对于任意点P(xp,yp)作比例变换可通过以下几个步骤来完成:1.将p点平移到坐标原点,变换矩阵为:2.关于原点作比例变换,变换矩阵为:3.将旋转中心平移回原来的位置,变换矩阵为:图形的二维观察是通过指定一个在图形中要显示的部分以及在显示器显示位置,并执行从世界坐标系到设备坐标系的图形变换及删除位于显示区域范围以外的图形部分而实现的。 世界坐标系:用户用来定义图形的坐标系称为世界坐标系,也称为用户坐标系;它的定义域是实数域,二维的世界坐标系通常用表示。 设备坐标系:在显示器和绘图仪等图形的输出设备上也有一个自身的坐标系,该坐标系称为设备坐标系或物理坐标系,简称为DC。设备坐标系是一个二维
28、坐标系,对于显示器而言它的度量单位是像素。 规格化设备坐标系:它独立于设备坐标系和世界坐标系,又可容易地转变成设备坐标系的一个坐标系,是一个中间坐标系。在该坐标系中,x和y轴的坐标被规格化为01间的量。在世界坐标系中要显示的区域称为窗口;窗口映射到显示设备上的坐标区域称为视区。标准窗口与视区一般都采用矩形,其各边分别与坐标平行。 窗口定义了我们要显示的内容。 视区决定在显示设备上的显示位置,我们可以在输出设备的不同位置观察物体;也可以通过改变视区的尺寸来改变显示对象的尺寸和位置。 窗口和视区分别处在不同的坐标系内,它们所用的长度单位及大小位置等不同。因此要将窗口内的内容在视区中显示出来,必须经
29、过从窗口到视区的变换处理,这种变换即称为观察变换二维观察变换流程:在世界坐标系中生成图形裁剪,得到要显示的内容窗口到视区的变换:窗口规格化设备坐标系中的视区设备坐标系中的视区显示图形识别图形在指定区域内或指定区域外的过程称为裁剪。 gluOrtho2D(0.0, 0.0, (GLdouble)w,(GLdouble)h) 该函数定义窗口的大小。 左上角x,y; 窗口w,h 世界坐标系 glViewport(0,0,(GLsizei)w,(GLsizei)h) 该函数定义视口的大小 屏幕三维几何变换1.平移 2.比例 3.旋转绕z轴旋转: 绕x轴旋转 绕y轴旋转 4.对称:关于坐标平面对称:空间
30、中一点关于xoy坐标平面的对称变换:点的x和y向的坐标保持不变,只改变z坐标的正负号关于坐标轴对称:空间中一点关于x轴作对称变换时,则点的x坐标保持不变,只改变y和z方向的坐标的正负号5.错切:沿x轴错切:例三维物体绕平行于x轴的直线旋转角将旋转轴平移至x轴,将物体绕旋转轴旋转角,将旋转轴平移至最初位置三维投影变换:把三维物体变为二维图形表示。投影:平行投影、透视投影在平行投影中,物体的坐标位置沿平行线变换到投影平面上。在透视投影中,定义投影平面后的一点为投影中心,将投影中心和三维物体上的各点的连线称为投影线。投影线与投影面的交点即称为各点的投影。平行投影保持物体的大小比例不变,物体各个面的精确视图可有平行投影得到,但无法给出三维物体的真实性表示。根据平行投影与投影平面的间的夹角也可分为正平行投影与斜平行投影两类,当投影线垂直于投影平面时,得到的投影称为正平行投影;否则为斜平行投影。平行投影中,物体投影大小与物体距投影面的距离无关,与人的视觉成像不符。而在透视投影中,离投影面近的物体较远的物体生成的图像大,生成真实感图形。投影中心又称为视点,相当于观察者的眼睛。投影面置于视点与物体之间,将物体上的各点与视点相连所得的投影线与投影面的交点就是三维物体上相应点的透视变换结果。观察空间:定义了观
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1