计算机图形学 总结

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

计算机图形学总结

科学计算的可视化:CT;真实感图形实时绘制与自然景物仿真;地理信息系统(GIS);Virtual Reality(虚拟现实、灵境);事务和商务数据的图形显示;地形地貌和自然资源的图形显示过程控制及系统环境模拟;电子出版及办公自动化;计算机动画及广告计算机艺术;科学计算的可视化;工业模拟;计算机辅助教学当前研究热点:

1、真实感图形实时绘制

2、野外自然景物的模拟3 与计算机网络技术的紧密结合4 计算机动画5 用户接口6 计算机艺术7 并行图形处理所熟悉的图形软件包图形软件的标准K GKS (Graphics Kernel System) (第一个官方标准,1977)K PHIGS(Programmer’s 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 液晶显示器(LCD)3 发光二极管显示器4 等离

子显示器5 等离子显示器6发光聚合物技术图形绘制设备针式打印机喷墨打印机激光打印机静电绘图仪笔式绘图仪143章多

边形

3、4 多边形的扫描转换与区域填充o 多边形扫描转换与区域填充可以统称区域填充,就是如何用颜色或图案来填充一个二维

区域。填充主要做两件工作:一是确定需要填充的范围,二是确

定填充的内容。一般区域填充指的是已知区域内一个种子,然后

由种子向周围蔓延填充规定区域。o 方法:n 扫描线法:x-扫描

线法-〉有序边表法,边填充算法n 种子填充算法(区域填充)多边形扫描转换与区域填充方法比较:联系:都是光栅图形面着

色,用于真实感图形显示。可相互转换。多边形的扫描转换转化

为区域填充问题:当给定多边形内一点为种子点,并用Bresenham 或DDA算法将多边形的边界表示成八连通区域后,则多边形的扫

描转换转化为区域填充。区域填充转化为多边形的扫描转换;若

已知给定多边形的顶点,则区域填充转化为多边形的扫描转换。

不同点:

1、基本思想不同;前者是顶点表示转换成点阵表示,后者只改变区域内填充颜色,没有改变表示方法。

2、对边界的要求不同前者只要求扫描线与多边形边界交点个数为偶数。后者:区域封闭,防止递归填充跨界。

3、基本的条件不同前者:从边界顶点信息出发。

后者:区域内种子点。

3、7 反走样o 用于减少或消除这种效果的技术,称为反走样(antialiasing)。方法:o 提高分辨率:提高分辨率、简单取样、加权取样(过取样(supersampling),或后滤波)o 区域取样(area sampling),或前滤波5章:裁剪

5、3 二维图形裁剪

5、4 投影变换

5、1 坐标系统及其变换-坐标系造型坐标系用户坐标系直角坐标系、仿射坐标系、圆柱坐标系、球坐标系、极坐标系观察坐标系规格化的设备坐标系设备坐标系

5、4 投影变换投影分类o 平面几何投影对平面几何投影,按照投影线角度的不同,有两种基本投影方法:1平行投影(parallel projection)。它使用一组平行投影将三维对象投影到投影平面上去。2透视投影(perspective projection)。它使用一组由投影中心产生的放射投影线,将三维对象投影到投影平面上去。

(一)三视图三视图:正视图、侧视图和俯视图

5、4、2 透视投影灭点o 不平行于投影面的平行线的投影会汇聚到一个点,这个点称为灭点(Vanishing Point)。o 坐标轴方

向的平行线在投影面上形成的灭点称作主灭点。o 一点透视有一

个主灭点,即投影面与一个坐标轴正交,与另外两个坐标轴平

行。o 两点透视有两个主灭点,即投影面与两个坐标轴相交,与

另一个坐标轴平行。o 三点透视有三个主灭点,即投影面与三个

坐标轴都相交。o 观察投影7 章图形的几何变换从应用角度讲,图形变换可分为两种:o 几何变换(geometrical

transformation ):几何变换是指坐标系不动,形体相对于坐标

系在移动,如图形的缩放、平移、变形等。o 视像变换(viewing transformation):也称观察变换或者取景变换,是指形体不

动,而所处的坐标系在变换。图形变换是计算机图形学基础内容

之一,其作用为:o 把用户坐标系与设备坐标系联系起来;o 可

由简单图形生成复杂图形;o 可用二维图形表示三维形体;o 动

态显示综合题4道一:2章:基本图形生成技术

3、1直线段的扫描转换算法o DDA算法o 中点画线法o Bresenham画线算法数值微分(DDA)法:void DDALine(int x0,int y0,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;x<=x1;x++){ pDC-

>SetPixel(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); x=x0; y=y0;pDC->SetPixe(x, y, color); while (x

{x++; y++; d+=d2; } else {x++; d+=d1;} pDC->SetPixe(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的符号。若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-2dx;否则(x,y)更新为(x+1,y)。o

5、当直线没有画完时,重复步骤3和4。否则结束。o Bresenhamline(int x0,int 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 (x<=x1)o { pDC->SetPixe(x, y, color);o X++;o e=e+2*dy;o If (e>0)o { y++;o e=e-

2*dx;o }o }o }4章:圆的扫描转换算法圆的扫描转换n 角度DDA 法n 中点画圆法n Bresenham画圆算法n 生成圆弧的正负法n 圆的内接正多边形逼近法

3、2、2中点画圆法:MidpointCircle(int r, int color)

{ CDC*pDC=GetDC(); int x,y; float d; x=0; y=r; d=1-r; pDC->SetPixe(x, y, color); while(x

+5; x++;y--; } pDC->SetPixe(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(x

{ pDC->SetPixel(x, y, c); if (p<0)

p=p+4*x+6; else{ p=p+4*(x-y)+10; y-=1;} x+=1; }

if(x==y)

pDC->SetPixel(x, y, c);ReleaseDC(pDC);}二:扫描线填充

算法:(综合题)(1)初始化:堆栈置空。将种子点(x,y)入

栈。(2)出栈:若栈空则结束。否则取栈顶元素(x, y),以y

作为当前扫描线。(3)填充并确定种子点所在区段:从种子点

(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边

界。分别标记区段的左、右端点坐标为xl和xr。(4)并确定新的

种子点:在区间[xl,xr]中检查与当前扫描线y上、下相邻的两

条扫描线上的象素。若存在非边界、未填充的象素,则把每一区

间的最右象素作为种子点压入堆栈,返回第(2)步。上述算法对

于每一个待填充区段,只需压栈一次;因此,扫描线填充算法提

高了区域填充的效率。三:四:Cohen-Sutherland算法如图所

示,叙述对线段p1p2进行Cohen-Sutherland(编码法)法裁剪的过程 n1)如图:求直线段所在区号:code1=0001,code2=0 100、 n (2)

短线段p1,p2做简单测试,code1∪code2 ≠0,

code1∩code2 =0,属于第三种情况,即不能简单接受,也不能简单裁剪掉n (3)由code1=0001可知p1在窗口左边,计算p1p2与窗口左边界的交点p3,并求p3所在区号,code3=0000,说明p3在窗口内,而p1p3必在窗口外,应舍弃。对线段p3p2重复上述处理n (4)对线段p3p2,code2∪code3≠0,且code2∩code3 =0,仍属于情况三n (5)由code2=0100知,p2在窗口下方,计算p3p2与窗口下边界的交点p4,并求p4所在区号,

code4=0000,即线段p4p2必在窗口外,对p3p4重复上述操。n (6)对于p3p4,因为code3∪code4=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。

相关主题
相关文档
最新文档