计算机图形学考试复习

tech2022-08-26  129

计算机图形学考试复习

1、计算机图形学的概念,应用

计算机图形学:是研究如何在计算机中绘制图形、以及如何利用计算机进行图形的计算、处理和显示的图像一门学科。计算机游戏、计算机辅助设计、计算机艺术、虚拟现实、计算机辅助教学

2、黑白,灰度,彩色显示器的帧缓冲容量的计算

帧缓冲存储器是用来存储屏幕上像素的颜色值的,显示颜色的种类与帧缓存中每个单元的位数有关:

如果屏幕上每个像素的颜色只用一位(Bit)表示,其值非0即1,屏幕只能显示黑白二色图像,称为黑白显示器,此时帧缓冲器只有一个位面。 如果屏幕分辨率为1024×768,则黑白显示器的帧缓冲容量是: 1024×768×1=786,432位;如果每个像素的颜色可以用一个字节(Byte)表示,帧缓冲器需要用八个位面,可表示256种灰度,称为灰度显示器。如屏幕分辨率为1024×768,则灰度显示器的帧缓冲的容量是1024×768×8=6,291,456位;如果每个像素用R、G、B三原色混合表示,其中每种原色分别用一个字节表示,各对应一把电子枪,每种颜色可有256种亮度,三种颜色的组合是224颜色,共有24个位面。 如屏幕分辨率为1024×768,则彩色显示器的帧缓冲的容量是1024×768×24位.计算机里的每个颜色都是有红色、绿色、蓝色三种颜色混合组成的,通常用(R,G,B)来表示,其中R,G , B的取值都为0~255,0表示没有,255表示颜色最浓。例如:红色 = (255,0,0) 绿=(0,255,0) ,蓝用(0,0,255)表示。如白色(255,255,255),黑色(0,0,0);灰度变化是三个值一样如(125,125,125)

3、DDA画线算法原理,计算题,程序

数值微分(DDA)法原理:当0<K<=1时,坐标点的更新规则: yi+1= yi+k,xi+1 = xi+1 ,int (y+0.5)对坐标四舍五入取整。即:当x每递增1,y递增k(即直线斜率);

float x,y,xa,xb,ya,yb; xa=20,ya=20; xb=400;yb=100; float d,k; CDC *p=GetDC(); k=(yb-ya)/(xb-xa); y=ya; for(x=xa;x<=xb;x++){ p->SetPixel(x,int(y+0.5),RGB(255,0,0));  y=y+k; }

4、中点画线法原理,计算题,程序

中点画线法原理:画线从(x0, y0)开始,d的初值 d0=-k+0.5;根据若d<0,此时再下一个象素的判别式为di+1=di-k+1;y++;否则 di+1=di-k;y=y;x坐标是一步一步增加的。

float x,y,xa,xb,ya,yb; xa=20,ya=20; xb=400;yb=100; float d,k; CDC *p=GetDC(); k=(yb-ya)/(xb-xa); y=ya,x=xa; d=0.5-k; for(x=xa;x<=xb;x++) { if(d<0) {y=y+1;d=d+1-k;} else {y=y;d=d-k;} p->SetPixel(x,y,RGB(255,0,0)); }

实现颜色渐变

float k,x1,x2,y1,y2,x,y,d,r1,r2; x1=20,y1=20; x2=400;y2=100; k=(y2-y1)/(x2-x1); y=y1; for(x=x1;x<=x2;x++){ r1=(x-x1)/(x2-x1); r2=1-r1; for(int i=0;i<=100;i++) p->SetPixelV(x,int(y+0.5)+i,RGB(r2*255,0,r1*255)); y=y+k; }

5、中点画圆法原理,计算题,程序

中点画圆基本原理:1/8画圆法完成算法的设计,计算初始值d=1-R、x=0、y=R。先绘制点(x,y)及其在八分圆中的另外七个对称点;判断d的符号,若d≤0,则先将d更新为d+2x+3,再将(x,y)更新为(x+1,y);否则先将d更新为d+2(x-y)+5,再将(x,y)更新为(x+1,y-1)。反复至x>y

float r,d,x,y; r=100; x=0,y=r; d=1-r; int tx; tx=100; CDC *p=GetDC(); for(x=0;x<=y;x++){ p->SetPixel(x+tx,y+tx,RGB(255,0,0)); p->SetPixel(-x+tx,y+tx,RGB(0,255,0)); p->SetPixel(x+tx,-y+tx,RGB(0,0,255)); p->SetPixel(-x+tx,-y+tx,RGB(255,0,255)); p->SetPixel(y+tx,x+tx,RGB(255,255,0)); p->SetPixel(-y+tx,x+tx,RGB(0,255,255)); p->SetPixel(y+tx,-x+tx,RGB(0,0,0)); p->SetPixel(-y+tx,-x+tx,RGB(255,255,255)); if(d>0){d=d+2*(x-y)+5;y--;} else{d=d+2*x+3;y=y;} }

填充可以通过不断扩大半径画圆得到实心圆

6、走样与反走样算法的原理

走样:直线扫描转换算法在处理非水平、非垂直、非45°的直线段时会出现锯齿,这是因为直线段在光栅扫描显示器上显示的图像是由一系列亮度相同而面积不为零的离散像素点构成的,这种由离散量表示连续量而引起的失真称为走样(抗锯齿)。

反走样:

硬件技术-增加显示器分辨率 软件技术:加权区域采样:利用人眼视觉特性,通过加权平均的方法,调节像素的亮度或灰度的等级以产生模糊的边界,从面达到较好的视觉效果。

7、点函数、画线及画圆函数的使用

SetPixel(int x,int y, RGB(bRed, bGreen, bBlue)):用指定的颜色在指定的坐标画一个点;

MoveTo(int x, int y):设置直线起点,移动当前位置到指定的坐标,返回值为以前位置 的坐标; LineTo(int x, int y):设置直线终点从当前位置到指定位置画一条直线,成功返回非0 (Boolean);

Ellipse(int x1,int y1,int x2,int y2):绘制椭圆函数(参数x1,y1是限定椭圆范围的外 接矩形左上角点的坐标;参数x2,y2是限定椭圆范围的外 接矩形右下角点的坐标);

8、多边形填充算法原理,多边形的表示方法:点阵法与顶点法

有效边表填充算法(扫描线填充算法)原理与编程实现

扫描线算法:扫描线时屏幕上平行于x坐标轴且相距离为一个像素的一系列直线 (了解)

求交:计算扫描线与多边形各边的交点;排序:把扫描线上所有交点按x递增顺序进行排序;配对:将第一个交点与第二个交点,第三个交点与第四个交点等等进行配对,每对交点代表扫描线与多边形的一个相交区间。着色:把区间内的像素置为充色。 float x,y,x1,y1,x2,y2,k,e1,e2,d,x3,y3; x1=100,y1=300; x2=200,y2=200; x3=400,y3=300; CDC *p=GetDC(); p->MoveTo(x1,y1); p->LineTo(x2,y2); p->LineTo(x3,y3); p->LineTo(x1,y1); float k1,k2; k1=(y2-y1)/(x2-x1); k2=(y3-y2)/(x3-x2); float xs,xe,xt; xs=x2,xe=x2; for(y=y2;y<y3;y++) { for(x=xs;x<xe;x++) { p->SetPixel(x,y,RGB(255,0,0)); } xs=xs+1/k1; xe=xe+1/k2; Sleep(50); }

顶点表示法:多边形的顶点表示法是用多边形的顶点序列来描述。特点是直观、占内存少,易于进行几何变换,但由于没有明确指出哪些像素在多边形内,所以不能直接进行填充,需要对多边形进行扫描转换。

点阵表示法:多边形的点阵表示法是用多边形覆盖的像素点集来描述。特点是便于直接确定实面积图形覆盖的像素点,是多边形填充所需要的表示形式,但是缺少了多边形顶点的几何信息。

9、齐次坐标技术概念与作用

二维变换平移、比例、旋转、反射变换,会计算,特别是相对于原点与相对于任意点的变换的计算;

齐次坐标:用n+1维矢量表示n维矢量;其目的主要是合并矩阵运算中的乘法和加法,用矩阵运算把二维、三维甚至高维空间中的一个点集从一个坐标系变换到另一个坐标系的有效方法。 例:P(x,y)→(wx,wy,w);w=1就是规范化的齐次坐标。二维点P(x,y)的规范化齐次坐标为〔x,y,1〕,三维点P(x,y,z)的规范化齐次坐标为(x,y,z,1)。

二维变换:

平移变换:

Tx,Ty为平移参数

比例变换:

Sx,Sy为比例系数

旋转变换(逆时针):

反射变换:

三维变换平移、比例、绕Z轴旋转变换,会计算,PPT上有相关例子

绕z轴旋转变换:

10、三维的投影变换概念与投影变换的分类

投影变换:把三维物体显示在二维的光栅扫描显示器上,要通过投影来降低维数

分类:

平行投影:正投影、斜投影透视投影:一点透视、二点透视、三点透视

Bezier函数P192

Betnstein基函数性质:非负性、端点性质、权性、对称性、递推性、可导性;

Bezier曲线性质:端点性质、凸包性、几何不变性、对称性、仿射不变性

Bezier曲线计算

最新回复(0)