图形学期末考试

一、简答题 (每小题4分,共20分)

1、考虑两个不同的光栅系统,分辨率依次为A:640*480, B:1920*1080,每个像素的位平面数为8位,这些系统各需要多大的帧缓冲器(需列出计算式)?

2、如何判断点与多边形的内外关系?试分析其过程。

3、什么是走样与反走样?常用的反走样的方法有哪些?(至少列举二项)

4、什么叫齐次坐标?引入齐次坐标的优越性是什么?

5、请简述直线段裁剪算法:Cohan-Sutherland算法的原理。

二、选择题(每小题2分,共20分)

1、.电子束轰击荧光屏产生的亮点只能持续极短的时间,为了产生静态的不闪烁的图像,电子束必须周期性地反复扫描所要绘制的图形,这个过程称为( )。

A.启动         B.驱动         C.刷新         D.更新

2、计算机显示器一般使用( )颜色模型。

A.  RGB                B. CMY          C. HSV      D. HLS   

3、点阵表示法枚举出图形中所有的点,简称为( );参数表示法包括了形状参数和属性参数等,简称为( )。

A.图像、图形     B.图形、图像      C.像素、图形      D.图像、图元  

4、使用下列二维图形几何变换矩阵:  T= 1  0  1       将产生变换的结果为( )

                                                                   0  4  4

                                                                   0  0  1

A. 图形整体放大4倍;

 B. 图形沿X、Y轴方向各移动4个单位;

  C. 图形沿Y轴正向平移4个单位,然后沿Y轴放大4倍。

D. 图形沿Y轴正向平移1个单位,然后沿Y轴放大4倍。

5、在图形系统中,数据手套、数据衣是( )设备。

A.输入   B.输出  C.输入输出  D.既不是输入也不是输出

6、()是构成屏幕的最小元素。

A.图像           B.图形              C.像素         D.片段(Fragment)

7、屏幕设备二维坐标系的原点,通常默认是在屏幕的( )。

A.左上角     B.左下角      C.右上角      D.右下角

8、为系统提供一张系统的当前属性值表,通过维护属性和其他参数的当前值表的来修改图形属性,这种系统称为(),例如:OpenGL

A.函数系统      B.参数系统          C.线性系统      D.状态系统

9、在三维图形处理流水线中,投影变换是在()阶段中被处理的。

A.建模   B.几何处理      C.光栅化      D.片段(Fragment)处理

10、下列有关投影的叙述语句中,正确的论述为( )

A:透视投影能真实的反映物体的精确的尺寸和形状;

B:平行投影可分为正投影与斜投影;

C:透视投影变换中,一组平行于投影面的线的投影产生一个灭点;

 D:平行投影与透视投影都能产生近大远小的真实效果。

三、填空题 (每空2分,共16分)

1、随着计算机图形学的发展,图形软件的标准也在发展,目前经过ISO批准的图形软件标准主要有GKS和PHIGS,此外,还有一些非官方的标准,它们在工业界被广泛应用,成为事实上的标准,如SGI公司的_(1)_和微软公司的_(2)_

2、将三维物体变为二维图形的变换称为投影变换,其有两种基本方式:平行投影与透视投影,其中_(3)_的可见裁剪区域为一个四棱台

3、用叉积法判断多边形凹凸性时,当沿着逆时针方向所有相邻边向量叉积结果符号相同时,为4多边形,反之为5多边形。

4、彩色打印机一般使用6颜色模型。

5、分辨率为1024*1024的显示器,若采用12位的颜色查找表,最多可同时显示7种不同颜色。

6、形体的定义和图形的输入输出都是在一定的坐标系下进行的,通常这些坐标系分为:建模坐标系,8,观察坐标系,投影坐标系,规格化坐标,及设备坐标系等等。

四、计算与问答(每题12分,共24分)

1、用Bresenham画线算法进行线段扫描转换,请推导Bresenham算法在第一象限的递推公式,并写出从(5,5)到(17,10)所经过的所有像素点。

2、三维右手坐标系空间下,已知点A(2,2,1),先绕Z轴旋转45度,然后沿Z轴正向平移2个单位后得到的点A’ ,求点A’的坐标,并给出齐次坐标下的4×4变换矩阵。

五 、编程题(20分)

按照以下框架,完成一个绿色实心圆动画,实心圆由屏幕最左移动到最右,并按正弦曲线运动。假设画实心圆的函数已给出。

/*附:可能用到的OpengGL函数

glutPostRedisplay() ;glBegin();glEnd();glViewport( , , , ) ;glColor3f( , , );glMatrixMode(GL_PROJECTION) ; glMatrixMode(GL_MODELVIEW); glLoadIdentity() ;glClearColor( , , , ) ;gluOrtho2D( , , , );glClear(GL_COLOR_BUFFER_BIT );glPushMatrix();glPopMatrix();glFlush();glutSwapBuffers();glTranslatef( , , );glVertex2f( , );glRotatef( , , , ); */

#include <GL/glut.h>

#include <math.h>

         1            

void drawCircle(GLfloat x, GLfloat y ,GLfloat r) {……}//已实现

//以当前颜色,画一个圆心为xy,半径为r的圆

void init()

{

         2             

}

static void idle(void)

{

         3               

}

static void display(void)

{

         4                

}

int main(int argc, char *argv[])

{

        glutInit(&argc, argv);

        glutInitWindowSize(800,600);

        glutInitWindowPosition(0,0);

        glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);

        glutCreateWindow("animation");

        init();

        glutDisplayFunc(display);

        glutIdleFunc(idle);

        glutMainLoop();

        return 0;

}

猜你喜欢

转载自blog.csdn.net/lxy20011125/article/details/128441994