当前位置:文档之家› 计算机图形学复习课总结

计算机图形学复习课总结

绪论1点阵法和参数法的概念。

图形、图像的概念。

点阵法是用具有颜色信息的点阵来表示图形的一种方法,它强调图形由哪些点组成,并具有什么灰度或色彩。

参数法是以计算机中所记录图形的形状参数与属性参数来表示图形的一种方法。

通常把参数法描述的图形叫做图形(Graphics)把点阵法描述的图形叫做图象(Image)2 计算机图形学的概念?计算机图形学是研究怎样用计算机表示、生成、处理和显示图形的一门学科。

3图形包括哪两方面的要素,试举例说明。

图形包括两方面的要素,其中有几何要素和非几何要素1. 几何要素:点,线,面,体等;2. 非几何要素:明暗,灰度,色彩等4一个交互性的图形系统具有哪些功能?5个功能:输入功能、存储功能、计算功能、输出功能和交互功能5图形输出设备包括什么?常用的图形绘制设备有哪两种?图形输出设备包括图形显示设备和图形绘制设备,常用的图形绘制设备有打印机和绘图仪。

6与计算机图形学相关的学科有哪些?各自研究的内容是什么?计算机视觉:研究用计算机来模拟生物外显或宏观视觉功能的科学和技术图像处理:对图象进行各种加工以改善图象的视觉效果C语言程序基础(课件中p17, p55-59,常用画图函数)1已知画“王”的C语言程序(如下),要求改编一个画“田”字的程序,该字的字高和字宽均为50,字的左上角点坐标为(60, 80)。

#include "graphics.h"#include "conio.h"main(){int gdriver=DETECT,gmode; int x,y;initgraph(&gdriver,&gmode,“”); /*初始化图形系统*/cleardevice(); /*清除图形屏幕*/moveto(100,40); /*绝对移动光标*/linerel(40,0); /*从当前位置按增量方式画线*/x=getx(); y=gety();moveto(x,y+20); linerel(-40,0);moverel(0,20); /* 以增量方式移动当前光标*/linerel(40,0);moverel(-20,0); linerel(0,-40);getch();closegraph(); /*关闭图形系统,返回文本模式*/}2画一个填充颜色的圆(画一个填充颜色的矩形,已知矩形的左下角(0,20),右上角坐标为(100,120)),圆心坐标(60,60),半径100,要求背景色为1号色(blue),圆的边界色为红色,填充色为Green,(函数:circle floodfill)#include "graphics.h"#include "conio.h"main(){int gdriver=DETECT,gmode;initgraph(&gdriver,&gmode,“c:\tc\bgi");setbkcolor(1); /*设置背景色,蓝色*/setcolor(4); /*设置前景色,红色*/circle(100,100,80); /*圆心100,100,半径为80*/setfillstyle(SLASH_FILL,2); /*用粗斜杠填充和填充绿色*/floodfill(100,100,4); /*填充一个封闭圆*,从圆心开始,边界用4号颜色红色进行填充/ getch(); closegraph();}setfillstyle(SOLID_FILL,GREEN); /*实填充,颜色为绿色* /bar(100,100,150,200);setfillstyle(4,RED); /*用粗斜杠填充, 颜色为红色*/bar3d(200,100,250,200,10,1); /*三维条形的深度为10,放置顶盖*/getch(); closegraph();3 画五颜六色的圆。

其图形如图所示:程序如下:#include "graphics.h"#include "conio.h"main(){int i,start,end;int gd,gm;detectgraph(&gd,&gm);initgraph(&gd,&gm,"");start=0;end=20;for(i=0;i<18;i++){setfillstyle(SOLID_FILL,i); /*填充类型和颜色*/pieslice(300,200,start,end,100); /*扇形填充*/start+=20;end+=20;}getch();restorecrtmode(); /*恢复屏幕在初始化前的模式*/}圆心(300,200),半径100,start为起始角,end为终止角几何表示1、图形信息包括:几何信息和拓扑信息2、计算机中表示三维形体的模型,如果按照几何特点进行分类,大体上可以分为三种哪三种?线框模型、表面模型和实体模型。

线框模型:只用顶点和邻边表示三维形体;缺点:具有二义性,容易构造出无效的实体。

表面模型:边界表示(Boundary representation, B-reps);构造表示(扫描表示、构造实体几何表示和特征表示);分解表示图形变换1、 什么是齐次坐标,规范化的齐次坐标?为什么要进行规范化? 2、图形变换的标准形式:平移矩阵:旋转矩阵: 逆时针比例变换矩阵:例题1. 已知三角形各顶点坐标为(10,10),(10,30),(30,15),试对其进行下列变换,写出变换矩阵,画出变换后的图形。

(1) 沿X 向平移20,沿Y 向平移15,再绕原点逆时针方向旋转90度 (2) 绕原点旋转,再沿X 向平移20,沿Y 轴平移15[][][]⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡⋅=⋅=s m l q d c p ba y xT y xy x D 111''2⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡1010001yxT T ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡100000y x S S ⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-100cos sin 0sin cos θθθθ解:(1)由二维图形变换相关知识,可得变换矩阵为1 0 0 cos90 sin 90 0 0 1 0 0 1 0 -sin90 cos90 0 = -1 0 0 25 15 1 0 0 1 -152 1 根据得出的新坐标可画出图形(图形略)(2)变换矩阵为:0 1 0 1 0 0 T= -1 0 0 0 1 0 0 0 1 25 15 1由得出的新坐标画图3、 相对固定点的变换步骤:相对某个参考点(xF,yF)作二维几何变换,其变换过程为: (1) 将固定点平移至坐标原点,进行平移变换 (2) 针对原点进行二维几何变换。

(3) 进行反平移,将固定点移回至原来的位置4、 窗视变换:窗视变换矩阵推导的步骤:1、将窗口左下角点(wxl, wyb )移至用户坐标系的坐标原点:2、针对原点进行比例变换,计算比例变换系数3、进行反平移:将视区左下角点移至设备坐标系原来的位置(vxl, vyb)。

()()wyb wyt vyb vyt S y --=)()(wxl wxr vxl vxr S x --=写出实现下述映射的规范化变换,将左下角在(1,1),右上角在(3,5)的窗口映射到(a )规范化设备的全屏幕视区;(b )左下角在(0,0),右上角在⎪⎭⎫⎝⎛21,21的视区。

(a ) 窗口参数是 5,1,3,1max min max min ====wy wy wx wx 。

视区参数是 1,0,1,0max min max min ====vy vy vx vx 。

那么41,21==y x s s 且窗视变换矩阵为?(b ) 窗口参数同(a )。

视区参数是21,0,21,0min max max min ====wy vy vx vx 。

那么81,41==y x s s 且窗视变换矩阵为?图形生成直线生成算法: DDA 算法, 中点算法, Bresenham 算法 ,重点掌握第一种和第三种, K<1的情况(课件中P16, P24,p36 )DDA 算法的步骤:1) 计算x 的增量,y 的增量;2)计算斜率k :3)xi+1=xi+1, yi+1=yi+k⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡+⋅-+⋅-=10000vyb S wyb vxl S wxl S S T y x y x改进的中点算法步骤:1) 计算x的增量,y的增量;2)计算斜率k;3)计算d0,d1,d2,d0=2a+b, d1=2a,d2=2a+2b, 4)如果d<0, x方向前进一步,y方向也前进一步,增量为d2;如果d>=0, y方向不前进,增量为d1。

改进的Bresenham算法算法步骤为:1.输入直线的两端点P0(x0,y0)和P1(x1,y1)。

2.计算初始值△x、△y、e=-0.5、x=x0、y=y0。

3.绘制点(x,y)。

4.e更新为e+k,判断e的符号。

若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为(x+1,y)。

5.当直线没有画完时,重复步骤3和4。

否则结束。

计算步骤:1)计算x的增量,y的增量;2)计算斜率k;3)e0=-0.5,e=e0+k,4)若e>0,则(x,y)更新为(x+1,y+1),同时将e更新为e-1;否则(x,y)更新为(x+1,y)。

例题:1.一条直线的两个端点是(0,0)和(10,6),计算x从0变到6时y所对应的值,并画出结果。

(DDA算法)2.请指出用Bresenham算法扫描转换从像素点(0,0)到(8,5)的线段时的像素位置,并画图表示。

圆的生成算法改进的Bresenham画圆算法1.输入圆的半径R。

2.计算初始值d=1-R、x=0、y=R。

3.绘制点(x,y)及其在八分圆中的另外七个对称点。

4.判断d的符号。

若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。

5.当x<y时,重复步骤3和4。

否则结束。

图形裁剪1、图形裁剪的概念,为什么要进行图形裁剪?图形裁剪的主要工作?(a.图形元素在窗口内外的判别;b.图形元素与窗口的交点。

)2、已知窗口和点的坐标,要求写出点的区域编码例题:左下角L(-3,1),右上角为R(2,6)的矩形窗口。

请写出图中的线段端点的区域编码。

解答:A(-4,2)→0001 B(-1,7)→1000C(-1,5)→0000 D(3,8)→1010E(-2,3)→0000 F(1,2)→0000G(1,2)→0100 H(3,3)→0010I(-4,7)→1001 J(-2,0)→1000X3、掌握Cohen-Sutherland直线裁剪算法裁剪一条线段时,先求出端点p1和p2的编码code1和code2,然后:(1)若code1|code2=0,对直线段应简取之。

相关主题