《计算机图形学 总结.doc》由会员分享,可在线阅读,更多相关《计算机图形学 总结.doc(11页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章 绪论计算机图形学的基本概念计算机图形学:是研究怎样用数字计算机生成、处理与显示图形的一门学科。图形:计算机图形学的研究对象。构成图形的要素:几何要素几何属性(点、线、面、体)非几何要素视觉属性(明暗、灰度、色彩、纹理、透明性、线型、线宽)表示图形的方法:点阵表示;参数表示研究内容计算机中表示图形、以及利用计算机进行图形的计算、处理与显示的相关原理与算法,构成了计算机图形学的主要研究内容。图形硬件、图形标准、图形交互技术、光栅图形生成算法、曲线曲面造型、实体造型、真实感图形计算与显示算法,以及科学计算可视化、计算机动画、自然景物仿真、虚拟现实等。计算机图形学的应用图形用户界面;计算机辅助
2、设计与制造(CAD/CAM);4 科学计算的可视化:CT;真实感图形实时绘制与自然景物仿真 ;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务与商务数据的图形显示;地形地貌与自然资源的图形显示过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广告计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学当前研究热点:1.真实感图形实时绘制 2.野外自然景物的模拟 3 与计算机网络技术的紧密结合4 计算机动画 5 用户接口 6 计算机艺术 7 并行图形处理所熟悉的图形软件包图形软件的标准K GKS (Graphics Kernel System) (第一个官方标
3、准,1977)K PHIGS(Programmers Herarchical Iuteractive Graphics system)K 一些非官方图形软件,广泛应用于工业界,成为事实上的标准K DirectX (MS)K Xlib(X-Window系统)K OpenGL(SGI)K Adobe公司PostscriptCAGD(Computer Aided Geometric Design)图形系统的功能1计算功能2存储功能3对话功能4输入功能5输出功能图形输入设备1 键盘与鼠标2 跟踪球与空间球3 光笔4 数字化仪5 触摸板6 扫描仪图形输出设备显示器1 阴极射线管显示器2 液晶显示器(LC
4、D)3 发光二极管显示器4 等离子显示器5 等离子显示器6发光聚合物技术图形绘制设备针式打印机 喷墨打印机 激光打印机 静电绘图仪 笔式绘图仪第 11 页3章多边形3.4 多边形的扫描转换与区域填充o 多边形扫描转换与区域填充可以统称区域填充,就是如何用颜色或图案来填充一个二维区域。填充主要做两件工作:一是确定需要填充的范围,二是确定填充的内容。一般区域填充指的是已知区域内一个种子,然后由种子向周围蔓延填充规定区域。o 方法:n 扫描线法:x-扫描线法-有序边表法,边填充算法n 种子填充算法(区域填充)多边形扫描转换与区域填充方法比较:联系:都是光栅图形面着色,用于真实感图形显示。可相互转换。
5、多边形的扫描转换转化为区域填充问题:当给定多边形内一点为种子点,并用Bresenham或DDA算法将多边形的边界表示成八连通区域后,则多边形的扫描转换转化为区域填充。区域填充转化为多边形的扫描转换;若已知给定多边形的顶点,则区域填充转化为多边形的扫描转换。 不同点:1.基本思想不同;前者是顶点表示转换成点阵表示,后者只改变区域内填充颜色,没有改变表示方法。2.对边界的要求不同前者只要求扫描线与多边形边界交点个数为偶数。后者:区域封闭,防止递归填充跨界。3.基本的条件不同 前者:从边界顶点信息出发。 后者:区域内种子点。3.7 反走样o 用于减少或消除这种效果的技术,称为反走样(antialia
6、sing)。方法:o 提高分辨率:提高分辨率、简单取样、加权取样(过取样(supersampling),或后滤波)o 区域取样(area sampling),或前滤波5章:裁剪5.3 二维图形裁剪5.4 投影变换5.1 坐标系统及其变换-坐标系造型坐标系用户坐标系 直角坐标系、仿射坐标系、圆柱坐标系、球坐标系、极坐标系观察坐标系规格化的设备坐标系设备坐标系5.4 投影变换投影分类o 平面几何投影对平面几何投影,按照投影线角度的不同,有两种基本投影方法:1平行投影(parallel projection)。它使用一组平行投影将三维对象投影到投影平面上去。2透视投影(perspective pro
7、jection)。它使用一组由投影中心产生的放射投影线,将三维对象投影到投影平面上去。 (一) 三视图三视图:正视图、侧视图与俯视图 5.4.2 透视投影灭点o 不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点(Vanishing Point)。o 坐标轴方向的平行线在投影面上形成的灭点称作主灭点。o 一点透视有一个主灭点,即投影面与一个坐标轴正交,与另外两个坐标轴平行。o 两点透视有两个主灭点,即投影面与两个坐标轴相交,与另一个坐标轴平行。o 三点透视有三个主灭点,即投影面与三个坐标轴都相交。o 观察投影7 章 图形的几何变换从应用角度讲,图形变换可分为两种:o 几何变换(geom
8、etrical transformation ):几何变换是指坐标系不动,形体相对于坐标系在移动,如图形的缩放、平移、变形等。o 视像变换(viewing transformation):也称观察变换或者取景变换,是指形体不动,而所处的坐标系在变换。图形变换是计算机图形学基础内容之一,其作用为:o 把用户坐标系与设备坐标系联系起来;o 可由简单图形生成复杂图形;o 可用二维图形表示三维形体;o 动态显示综合题 4道一:2章:基本图形生成技术3.1直线段的扫描转换算法o DDA算法o 中点画线法o Bresenham画线算法数值微分(DDA)法:void DDALine(int x0,int y
9、0,int x1,int y1,int color) CDC*pDC=GetDC();int x;float dx,dy,y,k;dy=y1-y0; dx=x1-x0;k=dy/dx;y=y0;for(x=x0;xSetPixel(x,int(y+0.5),color); y=y+k;二、中点画线法void Midpoint Line (int x0,int y0,int x1, int y1,int color) CDC*pDC=GetDC();int a, b, d1, d2, d, x, y; a=y0-y1; b=x1-x0; d=2*a+b; d1=2*a ; d2=2* (a+b)
10、; x=x0; y=y0;pDC-SetPixe(x, y, color); while (xx1) if (dSetPixe(x, y, color);三、Bresenham画线算法算法步骤o 1.输入直线的两端点P0(x0,y0)与P1(x1,y1)。o 2.计算初始值dx、dy、e=-dx、x=x0、y=y0。o 3.绘制点(x,y)。o 4.e更新为e+2dy,判断e的符号。若e0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2dx;否则(x,y)更新为(x+1,y)。o 5.当直线没有画完时,重复步骤3与4。否则结束。o Bresenhamline(int x0,int
11、y0,int x1,int y1,int color)o CDC*pDC=GetDC();o int x,y,dx,dy,e;o Dx=x1-x0;o Dy=y1-y0;o e=-dx;x=x0;y=y0;o While (xSetPixe(x, y, color);o X+;o e=e+2*dy;o If (e0)o y+;o e=e-2*dx;4章:圆的扫描转换算法圆的扫描转换n 角度DDA法n 中点画圆法n Bresenham画圆算法n 生成圆弧的正负法n 圆的内接正多边形逼近法3.2.2中点画圆法:MidpointCircle(int r, int color) CDC*pDC=Get
12、DC(); int x,y; float d; x=0; y=r; d=1-r; pDC-SetPixe(x, y, color); while(xy) if(dSetPixe(x, y, color);3.2.3 Bresenham画圆算法OnBresenhamcircle(int r ,int c) CDC* pDC=GetDC(); int x,y,p,k; x=0,y=r,p=3-2*r; while(xSetPixel(x, y, c); if (pSetPixel(x, y, c);ReleaseDC(pDC);二:扫描线填充算法:(综合题)(1)初始化:堆栈置空。将种子点(x,y
13、)入栈。(2)出栈:若栈空则结束。否则取栈顶元素(x, y),以y作为当前扫描线。(3)填充并确定种子点所在区段:从种子点(x,y) 出发,沿当前扫描线向左、右两个方向填充,直到边界。分别标记区段的左、右端点坐标为xl与xr。(4)并确定新的种子点:在区间xl,xr中检查与当前扫描线y上、下相邻的两条扫描线上的象素。若存在非边界、未填充的象素,则把每一区间的最右象素作为种子点压入堆栈,返回第(2)步。上述算法对于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提高了区域填充的效率。三:四:Cohen-Sutherland算法如图所示,叙述对线段p1p2进行Cohen-Sutherland(
14、编码法)法裁剪的过程 n 1)如图:求直线段所在区号:code1=0001,code2=0100. n (2) 短线段p1,p2做简单测试,code1code2 0,code1code2 =0,属于第三种情况,即不能简单接受,也不能简单裁剪掉n (3)由code1=0001可知p1在窗口左边,计算p1p2与窗口左边界的交点p3,并求p3所在区号,code3=0000,说明p3在窗口内,而p1p3必在窗口外,应舍弃。对线段p3p2重复上述处理n (4)对线段p3p2,code2code30,且code2code3 =0,仍属于情况三n (5)由code2=0100知,p2在窗口下方,计算p3p2
15、与窗口下边界的交点p4,并求p4所在区号,code4=0000,即线段p4p2必在窗口外,对p3p4重复上述操。n (6)对于p3p4,因为code3code4=0,故p3p4直接接受,保留。n (7)结束。中点分割裁剪算法如图所示,叙述对线段p1p2进行中点分割法裁剪的过程,要求步骤清晰,其中,p3为p1p2的中点,p4为p1p3的中点,p5为p1p4的中点,p6为p4p3的中点,p7为p3p6的中点 n (1)首先对p1p2进行编码,p1=0001,p2=0110。n (2)由于code1|code2 0,code1&code2 =0,故对线段既不能舍弃,也不能保留,对其进行中点法分割处理。n (3)p3为p1p2的中点,p3p2可弃之,处理p1p3n (4)p1p3的中点为p4,处理p1p4与p4p3,n (5)p1p4中点为p5,p1p5可弃之,p5p4可取之n (6)p4p3中点为p6,p4p6可取之,处理p3p6,p3p6中点为p7,p6p7可取之,p7p3可弃之。n (7)处理完毕,合并p5p4,p4p6,p6p7。
限制150内