当前位置:文档之家› 图形学整合

图形学整合

图形学整合
图形学整合

1、立方体放缩

头文件:

#if !defined _1fangsuo_H_

#define _1fangsuo_H_

#include

int Angle = 0;

void OnDisplay(void);

void OnReshape(int,int);

void SetupLights();

void OnTimer( int value);

#endif

正文:

#include "1fangsuo.H"

#include

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

{

glutInit(&argc,argv);//初始化OpenGL

glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB);//将显示方式设置成RGB模式,添加双缓冲区

glutInitWindowSize(640,480);//窗口大小设置

glutInitWindowPosition(10,10);//设置窗口位置

glutCreateWindow("三维几何变换");//创建并显示窗口

glutReshapeFunc(OnReshape);//设置窗口尺寸变化时的回调函数

glutDisplayFunc(OnDisplay);//设置显示回调函数

//glutSpecialFunc(OnKeyboard);//设置处理特殊击键的回调函数

OnTimer(10);//时钟处理函数,参数自动设置

SetupLights();

glutMainLoop();//进入OpenGL主循环

}

void OnDisplay(void)

{

int a=10;

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除颜色和深度缓冲区

glEnable(GL_DEPTH_TEST);//启用深度检测

glMatrixMode(GL_MODELVIEW);

glColor3f(1.0f,0.0f,0.0f);

glLoadIdentity();

glRotatef(15.0f,1.0f,0.0f,0.0f);

glRotatef(35.0f,0.0f,1.0f,0.0f);

glScalef(Angle,Angle,Angle);

glPushMatrix();

glBegin(GL_QUADS);//

glColor3f (1.0f,0.0f,0.0f);//将绘图色设置为红色left

glVertex3f(0,0,0);

glVertex3f(0,a,0);

glVertex3f(0,a,a);

glVertex3f(0,0,a);

glColor3f (1.0f,1.0f,0.0f);//将绘图色设置为黄色前面

glVertex3f(0,a,a);

glVertex3f(0,0,a);

glVertex3f(a,0,a);

glVertex3f(a,a,a);

glColor3f (0.0f,1.0f,0.0f);//将绘图色设置为绿色back

glVertex3f(0,0,0);

glVertex3f(0,a,0);

glVertex3f(a,a,0);

glVertex3f(a,0,0);

glColor3f (0.0f,0.0f,1.0f);//将绘图色设置为兰色up

glVertex3f(a,a,0);

glVertex3f(0,a,0);

glVertex3f(0,a,a);

glVertex3f(a,a,a);

glColor3f (0.0f,1.0f,1.0f);//将绘图色设置为青色down

glVertex3f(0,0,0);

glVertex3f(a,0,0);

glVertex3f(a,0,a);

glVertex3f(0,0,a);

glColor3f (1.0f,0.0f,1.0f);//将绘图色设置为紫色右

glVertex3f(a,0,a);

glVertex3f(a,0,0);

glVertex3f(a,a,0);

glVertex3f(a,a,a);

glEnd();

glutSwapBuffers();//交换前后缓冲区(相当于刷新显示)glPopMatrix();

glutSwapBuffers();

}

void OnReshape(int w,int h)//重绘回调函数

{

GLfloat aspect = (GLfloat) w / (GLfloat) h;//计算窗口的纵横比

GLfloat nRange = 100.0f;

glViewport(0,0,w,h);//设置视区大小为整个窗口

glMatrixMode(GL_PROJECTION);//将当前矩阵设置为投影模式

glLoadIdentity();

//设置三维投影区

if(w<=h)

glOrtho(-nRange,nRange,-nRange/aspect,nRange/aspect,-nRange,nRange);

else

glOrtho(-nRange,nRange,-nRange*aspect,nRange*aspect,-nRange,nRange);

glMatrixMode(GL_MODELVIEW);//将当前矩阵恢复为模型视图模式以便于图形的绘制glLoadIdentity();//初始化当前矩阵

}

void OnTimer(int value)

{if(Angle>5)Angle=-0;

Angle +=1;

//旋转角度增量

glutPostRedisplay();//刷新显示

glutTimerFunc(100,OnTimer,1);//重置时钟回调函数

}

void SetupLights()//设置光照

{

GLfloat ambientLight[]={1.0f,1.0f,1.0f,1.0f};//环境光变量

GLfloat diffuseLight[]={0.9f,0.9f,0.9f,1.0f};//漫反射光变量

//GLfloat specularLight[]={1.0f,1.0f,1.0f,1.0f};//镜面光

GLfloat lightPos[]={50.0f,50.0f,50.0f,1.0f};//光源位置变量

glEnable(GL_LIGHTING);//启用光照

glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight);//设置环境光

glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);//设置漫反射光

//glLightfv(GL_LIGHT0,GL_SPECULAR,specularLight);//设置镜面光源

glLightfv(GL_LIGHT0,GL_POSITION,lightPos);//设置灯光位置

glEnable(GL_LIGHT0); //打开第一个灯光

glEnable(GL_COLOR_MA TERIAL); //启用材质的颜色跟踪

glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);//指定材料着色的面

//glMaterialfv(GL_FRONT,GL_SPECULAR,specularLight);//指定材料对镜面的反应specularLight

//end

2、圆台嘴放大

正文:

glRotatef(60.0f,1.0f,0.0f,0.0f);

glRotatef(0.0f,0.0f,0.0f,1.0f);

glPushMatrix();

//圆柱台

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(30*cosf(j*3.1416/180),0, 30*sinf(j*3.1416/180) );

glColor3f(1.0f,0.0f,0.8f);

glV ertex3f(Angle*cosf(j*3.1416/180),Angle, Angle*sinf(j*3.1416/180) );//将50改30变圆台

}

glEnd();

void OnTimer(int value)

{

if(Angle>50)Angle=0;//旋转角度增量

else

Angle +=10;

3、圆台大到小

头文件:int Angle = 50;

正文:

glRotatef(60.0f,1.0f,0.0f,0.0f);

glRotatef(0.0f,0.0f,0.0f,1.0f);

glPushMatrix();

//圆柱台

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(50*cosf(j*3.1416/180),-50, 50*sinf(j*3.1416/180) );//将50改30变圆台

glColor3f(0.0f,1.0f,0.0f);

glV ertex3f(Angle*cosf(j*3.1416/180),Angle, Angle*sinf(j*3.1416/180) );

}

glEnd();

void OnTimer(int value)

{

if(Angle>0)

Angle-=10;//旋转角度增量

else

Angle=50 ;

4、圆台前后旋转

正文:

glRotatef(90.0f,0.0f,1.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//圆柱台

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(30*cosf(j*3.1416/180),50, 30*sinf(j*3.1416/180) );

glColor3f(1.0f,0.0f,0.8f);

glV ertex3f(50*cosf(j*3.1416/180),-50, 50*sinf(j*3.1416/180) );//将50改30变圆台}

glEnd();

void OnTimer(int value)

{

Angle +=15;

if(Angle>360)Angle=0;//旋转角度增量

5、圆柱左右旋转

正文:

glRotatef(90.0f,1.0f,1.0f,1.0f);

glRotatef(0.0f,0.0f,0.0f,1.0f);

glRotatef(Angle,1.0f,0.0f,0.0f);

glPushMatrix();

//圆柱台

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(50*cosf(j*3.1416/180),50, 50*sinf(j*3.1416/180) );

glColor3f(0.3f,0.0f,0.8f);

glV ertex3f(50*cosf(j*3.1416/180),-50, 50*sinf(j*3.1416/180) );//将50改30变圆台}

glEnd();

void OnTimer(int value)

{

Angle -=15;

if(Angle<-360)Angle=0;//旋转角度增量

6、球前后旋转

正文:

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,1.0f,0.0f,0.0f);

glPushMatrix();

//球前后旋转

glScalef(50,50,50);

float rx,ange1=0;

for(float i=0;i<20;i++){//上下20份

float k,j;

k=i/20;

glBegin(GL_QUAD_STRIP);

for( j=0;j<363;j++){//旋转360度

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i)));

glColor3f(1.0f,0.0,1.0f);

glVertex3f(rx*cosf(ange1),//设置顶点1

sinf(3.1416f/2.0f-3.1416f/20*i),

-rx*sinf(ange1));

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i+1)));

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(rx*cosf(ange1),//设置顶点2

sinf(3.1416f/2.0f-3.1416f/20*(i+1)),

-rx*sinf(ange1));

ange1=3.1416f/180.0f*j;//旋转360度

};

glEnd();

}

void OnTimer(int value)

{

Angle +=25;

if(Angle>360)Angle=0;//旋转角度增量

7、球左右旋转

正文:

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//球左右旋转

glScalef(40,50,50);

float rx,ange1=0;

for(float i=0;i<20;i++){//上下20份

float k,j;

k=i/20;

glBegin(GL_QUAD_STRIP);

for( j=0;j<363;j++){//旋转360度

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i)));

glColor3f(0.0f,1.0,0.0f);

glVertex3f(rx*cosf(ange1),//设置顶点1

sinf(3.1416f/2.0f-3.1416f/20*i),

-rx*sinf(ange1));

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i+1)));

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(rx*cosf(ange1),//设置顶点2

sinf(3.1416f/2.0f-3.1416f/20*(i+1)),

-rx*sinf(ange1));

ange1=3.1416f/180.0f*j;//旋转360度};

glEnd();

}

void OnTimer(int value)

{

Angle -=30;

if(Angle<-360)Angle=0;//旋转角度增量

8、半球旋转

正文:

glRotatef(45.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//半球左右旋转

glScalef(50,50,50);

float rx,ange1=0;

for(float i=0;i<10;i++){//上下20份

float k,j;

k=i/10;

glBegin(GL_QUAD_STRIP);

for( j=0;j<363;j++){//旋转360度

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i)));

glColor3f(1.0f,0.0,1.0f);

glVertex3f(rx*cosf(ange1),//设置顶点1

sinf(3.1416f/2.0f-3.1416f/20*i),

-rx*sinf(ange1));

rx=(cosf(3.1416f/2.0f-3.1416f/20*(i+1)));

glColor3f(0.0f,1.0f,1.0f);

glVertex3f(rx*cosf(ange1),//设置顶点2

sinf(3.1416f/2.0f-3.1416f/20*(i+1)),

-rx*sinf(ange1));

ange1=3.1416f/180.0f*j;//旋转360度

};

glEnd();

}

void OnTimer(int value)

{

Angle +=15;

if(Angle>360)Angle=0;//旋转角度增量

9、两个圆锥点对点左右旋转

正文:

glRotatef(90.0f,0.0f,0.0f,1.0f);

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//圆锥

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,0.4f,0.3f);

glVertex3f(0*cosf(j*3.1416/180),0, 0*sinf(j*3.1416/180) );

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(50*cosf(j*3.1416/180),80, 50*sinf(j*3.1416/180) );//将50改30变圆台glColor3f(1.0f,0.4f,0.3f);

}

glBegin(GL_QUAD_STRIP);

for(float i=0;i<363;i++)

{ float k;

//k=2/(i+2);

glColor3f(1.0f,0.4f,0.3f);

glVertex3f(0*cosf(i*3.1416/180),0, 0*sinf(i*3.1416/180) );

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(50*cosf(i*3.1416/180),-80, 50*sinf(i*3.1416/180) );//将50改30变圆台}

glEnd();

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量

10、两圆锥倒扣旋转

正文:

glRotatef(90.0f,0.0f,0.0f,1.0f);

glRotatef(15.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//圆锥

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,0.4f,0.3f);

glVertex3f(0*cosf(j*3.1416/180),-70, 0*sinf(j*3.1416/180) );

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(50*cosf(j*3.1416/180),0, 50*sinf(j*3.1416/180) );//将50改30变圆台glColor3f(1.0f,0.4f,0.3f);

}

glEnd();

glBegin(GL_QUAD_STRIP);

for(float i=0;i<363;i++)

{ float k;

//k=2/(i+2);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(0*cosf(i*3.1416/180),70, 0*sinf(i*3.1416/180) );

glColor3f(1.0f,0.4f,0.3f);

glV ertex3f(50*cosf(i*3.1416/180),0, 50*sinf(i*3.1416/180) );//将50改30变圆台

}

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量

11、圆锥加圆柱旋转

正文:

glRotatef(-90.0f,0.0f,0.0f,1.0f);

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

//圆锥

glBegin(GL_QUAD_STRIP);

for(float j=0;j<363;j++)

{ float k;

//k=2/(j+2);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(50*cosf(j*3.1416/180),0, 50*sinf(j*3.1416/180) );

glColor3f(1.0f,0.4f,0.3f);

glV ertex3f(0*cosf(j*3.1416/180),-50, 0*sinf(j*3.1416/180) );//将50改30变圆台glColor3f(1.0f,0.4f,0.3f);

}

glEnd();

//圆柱

glBegin(GL_QUAD_STRIP);

for(float i=0;i<363;i++)

{ float k;

//k=2/(i+2);

glColor3f(1.0f,0.4f,0.3f);

glVertex3f(50*cosf(i*3.1416/180),0, 50*sinf(i*3.1416/180) );

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(50*cosf(i*3.1416/180),60, 50*sinf(i*3.1416/180) );//将50改30变圆台}

glEnd();

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量

12、正六边形前后旋转

正文:

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,1.0f,0.0f,0.0f);

glScalef(30.0f,30.0f,30.0f);

glPushMatrix();

glBegin(GL_POLYGON);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(-1.0f,1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(-2.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(-1.0f,-1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,-1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(2.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glEnd();

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量13、正六边形左右旋转正文:

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glScalef(30.0f,50.0f,30.0f);

glPushMatrix();

glBegin(GL_POLYGON);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(-1.0f,1.7f,0.0f);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(-2.0f,0.0f,0.0f);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(-1.0f,-1.7f,0.0f);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(1.0f,-1.7f,0.0f);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(2.0f,0.0f,0.0f);

glColor3f(0.0f,1.0f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glEnd();

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量

14、正六边形沿点旋转

正文:

glRotatef(30.0f,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glScalef(30.0f,50.0f,30.0f);

glPushMatrix();

glBegin(GL_POLYGON);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(0.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,-1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(3.0f,-1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(4.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(3.0f,1.7f,0.0f);

glColor3f(1.0f,1.0f,0.0f);

glVertex3f(1.0f,1.7f,0.0f);

glEnd();

void OnTimer(int value)

{

Angle +=10;

if(Angle>360)Angle=0;//旋转角度增量

15、正六边形对半上下旋转正文:

glScalef(30.0f,40.0f,30.0f);

glPushMatrix();

glBegin(GL_QUADS);

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(-1.0f,1.7f,0.0f);

glV ertex3f(-2.0f,0.0f,0.0f);

glV ertex3f(1.0f,1.7f,0.0f);

glEnd();

glPopMatrix();

glRotatef(Angle,1.0f,0.0f,0.0f);

glPushMatrix();

glBegin(GL_QUADS);

glColor3f(1.0f,0.0f,1.0f);

glVertex3f(-1.0f,1.7f,0.0f);

glV ertex3f(-2.0f,0.0f,0.0f);

glV ertex3f(2.0f,0.0f,0.0f);

glV ertex3f(1.0f,1.7f,0.0f);

glEnd();

void OnTimer(int value)

{

Angle -=10;

if(Angle<-360)Angle=0;//旋转角度增量16、正六边形对半左右旋转正文:

glScalef(60.0f,30.0f,30.0f);

glPushMatrix();

glBegin(GL_QUADS);

glColor3f(1.0f,1.0f,0.0f);

glV ertex3f(-1.0f,-0.3f,0.0f);

glV ertex3f(0.0f,0.0f,0.0f);

glV ertex3f(0.0f,-4.0f,0.0f);

glV ertex3f(-1.0f,-3.7f,0.0f);

glEnd();

glPopMatrix();

glRotatef(Angle,0.0f,1.0f,0.0f);

glPushMatrix();

glBegin(GL_QUADS);

glColor3f(1.0f,0.0f,1.0f);

glVertex3f(0.0f,0.0f,0.0f);

glV ertex3f(1.0f,-0.3f,0.0f);

glV ertex3f(1.0f,-3.7f,0.0f);

glV ertex3f(0.0f,-4.0f,0.0f);

glEnd();

void OnTimer(int value)

{

Angle -=10;

if(Angle<-360)Angle=0;//旋转角度增量

17、正六边形对半上下旋转(有光效果)

//_exam8_H_

头文件:

#if !defined _exam8_H_

#define _exam8_H_

#include

int Angle = 0;

void OnTimer( int value);

typedef struct EyePoint//视点结构

{

GLfloat x;

GLfloat y;

GLfloat z;

}EYEPOINT;

EYEPOINT Eye;

GLint WinWidth;//窗口宽度,没有初值

GLint WinHeight;//窗口高度,没有初值

void OnDisplay(void);

void OnReshape(int,int);

void OnKeyboard(int,int,int);//击键处理函数

void SetupLights();

#endif

正文:

//end of _exam8_H_

#include "head.H"

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

{

glutInit(&argc,argv);//初始化OpenGL

glutInitDisplayMode (GLUT_DOUBLE|GLUT_RGB);//将显示方式设置成RGB模式,添加双缓冲区

glutInitWindowSize(640,480);//窗口大小设置

glutInitWindowPosition(10,10);//设置窗口位置

glutCreateWindow("三维几何变换");//创建并显示窗口

glutReshapeFunc(OnReshape);//设置窗口尺寸变化时的回调函数

glutDisplayFunc(OnDisplay);//设置显示回调函数

glutSpecialFunc(OnKeyboard);//设置处理特殊击键的回调函数

Eye.x = 0.0f;//初始化眼睛坐标

Eye.y = 0.0f;

Eye.z = 4.0f;

SetupLights();

OnTimer(0);

glutMainLoop();//进入OpenGL主循环

}

void OnDisplay(void)

{

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);//清除颜色和深度缓冲区glEnable(GL_DEPTH_TEST);//启用深度检测

glMatrixMode(GL_MODELVIEW);

glShadeModel(GL_SMOOTH);//启用平滑明暗渲染

glPolygonMode(GL_FRONT_AND_BACK,GL_FILL);//面填充绘制glPushMatrix();

glScalef(2.0, 2.0, 2.0);

glBegin(GL_QUADS);//后面

glColor3f(1.0f,1.0f,0.0f); //兰色左下

glVertex3f(0.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);//橙色右下

glVertex3f(60.0f,0.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f);//橙色右上

glVertex3f(43.0f,20.0f,0.0f);

glColor3f(1.0f,1.0f,0.0f); //兰色左上

glVertex3f(17.0f,20.0f,0.0f);

glEnd();

glPopMatrix();

glPushMatrix();

glScalef(2.0, 2.0, 2.0);

glRotatef(-Angle, 1.0, 0.0, 0.0);

glBegin(GL_QUADS);//后面

glColor3f(1.0f,0.0f,1.0f); //兰色左下

glVertex3f(0.0f,0.0f,0.0f);

glColor3f(1.0f,0.0f,1.0f);//橙色右下

glVertex3f(17.0f,-20.0f,0.0f);

glColor3f(1.0f,0.0f,1.0f);//橙色右上

glVertex3f(43.0f,-20.0f,0.0f);

glColor3f(1.0f,0.0f,1.0f); //兰色左上

glVertex3f(60.0f,0.0f,0.0f);

glEnd();

glPopMatrix();

glFlush();

glutSwapBuffers();//交换前后缓冲区(相当于刷新显示)

}

void OnTimer(int value)

{

if(Angle>360)

Angle=0;

Angle +=10;//旋转角度增量

glutPostRedisplay();//刷新显示

glutTimerFunc(100,OnTimer,1);//重置时钟回调函数

}

void OnReshape(int w,int h)//重绘回调函数

{

GLfloat SIZE = 100.0f;

glViewport(0,0,w,h);//设置视区大小为整个窗口

glMatrixMode(GL_PROJECTION);//将当前矩阵设置为投影模式

glLoadIdentity();

GLfloat aspect = (GLfloat) h / (GLfloat) w;//计算窗口的纵横比

//设置三维投影区

if(w<=h)

glOrtho(-SIZE,SIZE,-SIZE*aspect,SIZE*aspect,-SIZE,SIZE);

else

glOrtho(-SIZE/aspect,SIZE/aspect,-SIZE,SIZE,-SIZE,SIZE);

//gluLookAt(10.0f+Eye.x,20.0f+Eye.y,25.0f+Eye.z,0.0f,0.0f,0.0f,0.0f,1.0f,0.0f);//设置视点位置

gluLookAt(Eye.x,Eye.y,Eye.z,0.0f,0.0f,0.0f,0.0f,1.0f,0.0f);//设置视点位置

}

void OnKeyboard( int key,int x,int y)

{

switch(key)

{

case GLUT_KEY_LEFT: Eye.x -= 2.0f; break;//用左右方向的键调整视点的x坐标

case GLUT_KEY_RIGHT: Eye.x += 2.0f; break;

case GLUT_KEY_DOWN: Eye.y -= 2.0f; break;//用上下方向的键调整视点的y坐标

case GLUT_KEY_UP: Eye.y += 2.0f; break;

case GLUT_KEY_PAGE_DOWN: Eye.z -= 2.0f; break;//用翻页键调整视点的z坐标

case GLUT_KEY_PAGE_UP: Eye.z += 2.0f; break;

}

gluLookAt(Eye.x,Eye.y,Eye.z,0.0f,0.0f,0.0f,0.0f,1.0f,0.0f);//设置视点位置glutPostRedisplay();//强行调用显示回调函数

}

void SetupLights()//设置光照

{

GLfloat ambientLight[]={0.2f,0.2f,0.2f,1.0f};//环境光变量

GLfloat diffuseLight[]={0.9f,0.9f,0.9f,1.0f};//漫反射光变量

GLfloat lightPos[]={50.0f,80.0f,60.0f,1.0f};//光源位置变量

glLightfv(GL_LIGHT0,GL_AMBIENT,ambientLight);//设置环境光

glLightfv(GL_LIGHT0,GL_DIFFUSE,diffuseLight);//设置漫反射光

glLightfv(GL_LIGHT0,GL_POSITION,lightPos);//设置灯光位置

glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);//指定材料着色的面

}

18、正六边形正弦线由左到右

正文:

glRotatef(10.0f,0.0f,1.0f,0.0f);

glT ranslatef(Angle,30.0f*sinf(10.0f*Angle),0.0f);

glPushMatrix();

glBegin(GL_POLYGON);

float ang=60*3.142/180;

glColor3f (1.0f,1.0f,0.0f);//将绘图色设置为红色left

glVertex3f(10*cosf(ang),10*sin(ang),0.0f);

glVertex3f(10*cosf(ang*2),10*sinf(ang*2),0.0f);

glV ertex3f(10*cosf(ang*3),10*sinf(ang*3),0.0f);

glV ertex3f(10*cosf(ang*4),10*sinf(ang*4),0.0f);

glV ertex3f(10*cosf(ang*5),10*sinf(ang*5),0.0f);

glV ertex3f(10*cosf(0),10*sinf(0),0.0f);

glEnd();

void OnTimer(int value)

{if(Angle>100)Angle=-100;

Angle +=5;

GLfloat ambientLight[]={90.0f,90.0f,90.0f,1.0f};//环境光变量

GLfloat diffuseLight[]={90.0f,90.0f,90.0f,1.0f};//漫反射光变量

GLfloat lightPos[]={90.0f,90.0f,90.0f,1.0f};//光源位置变量

19、正六边形余弦线由左到右

正文:

glRotatef(10.0f,0.0f,1.0f,0.0f);

glT ranslatef(Angle,30.0f*cosf(10.0f*Angle),0.0f);

glPushMatrix();

glBegin(GL_POLYGON);

float ang=60*3.142/180;

glColor3f (1.0f,0.0f,1.0f);//将绘图色设置为红色left

glVertex3f(10*cosf(ang),10*sin(ang),0.0f);

glVertex3f(10*cosf(ang*2),10*sinf(ang*2),0.0f);

glV ertex3f(10*cosf(ang*3),10*sinf(ang*3),0.0f);

glV ertex3f(10*cosf(ang*4),10*sinf(ang*4),0.0f);

glV ertex3f(10*cosf(ang*5),10*sinf(ang*5),0.0f);

glV ertex3f(10*cosf(0),10*sinf(0),0.0f);

glEnd();

void OnTimer(int value)

{if(Angle>100)Angle=-100;

Angle +=5;

void SetupLights()//设置光照

{

GLfloat ambientLight[]={90.0f,90.0f,90.0f,1.0f};//环境光变量

GLfloat diffuseLight[]={90.0f,90.0f,90.0f,1.0f};//漫反射光变量

GLfloat lightPos[]={90.0f,90.0f,90.0f,1.0f};//光源位置变量

20、正六边形顺时针绕圆运动

正文:

glT ranslatef(50*sinf(10*Angle),50*cosf(10*Angle),0.0f);

glPushMatrix();

glBegin(GL_POLYGON);

float ang=60*3.142/180;

glColor3f (1.0f,0.0f,1.0f);//将绘图色设置为红色left

glVertex3f(10*cosf(ang),10*sin(ang),0.0f);

glVertex3f(10*cosf(ang*2),10*sinf(ang*2),0.0f);

glV ertex3f(10*cosf(ang*3),10*sinf(ang*3),0.0f);

glV ertex3f(10*cosf(ang*4),10*sinf(ang*4),0.0f);

glV ertex3f(10*cosf(ang*5),10*sinf(ang*5),0.0f);

glV ertex3f(10*cosf(0),10*sinf(0),0.0f);

glEnd();

void OnTimer(int value)

{if(Angle>360)Angle=0;

Angle +=5;

void SetupLights()//设置光照

{

GLfloat ambientLight[]={90.0f,90.0f,90.0f,1.0f};//环境光变量

GLfloat diffuseLight[]={90.0f,90.0f,90.0f,1.0f};//漫反射光变量

//GLfloat specularLight[]={1.0f,1.0f,1.0f,1.0f};//镜面光

GLfloat lightPos[]={90.0f,90.0f,90.0f,1.0f};//光源位置变量

21、正五边形线框顺时针(绕Z轴)旋转正文:

glScalef(5.0f,5.0f,5.0f);

glRotatef(Angle,0.0f,0.0f,1.0f);

glPushMatrix();

glBegin(GL_LINE_STRIP);

float ang=72*3.142/180;

glColor3f (1.0f,0.0f,1.0f);//将绘图色设置为红色left

glVertex2f(10*cosf(ang),10*sinf(ang));

glVertex2f(10*cosf(ang*2),10*sinf(ang*2));

glV ertex2f(10*cosf(ang*3),10*sinf(ang*3));

glV ertex2f(10*cosf(ang*4),10*sinf(ang*4));

glV ertex2f(10*cosf(ang*5),10*sinf(ang*5));

glV ertex2f(10*cosf(ang),10*sinf(ang));

glEnd();

void OnTimer(int value)

{if(Angle>360)Angle=0;

Angle +=10;

void SetupLights()//设置光照

{

GLfloat ambientLight[]={1.0f,1.0f,1.0f,1.0f};//环境光变量GLfloat diffuseLight[]={0.9f,0.9f,0.9f,1.0f};//漫反射光变量//GLfloat specularLight[]={1.0f,1.0f,1.0f,1.0f};//镜面光

GLfloat lightPos[]={1.0f,1.0f,1.0f,1.0f};//光源位置变量22、正五边形线框由小到大

正文:

glScalef(Angle,Angle,Angle);

glPushMatrix();

glBegin(GL_LINE_STRIP);

float ang=72*3.142/180;

glColor3f (1.0f,0.0f,1.0f);//将绘图色设置为红色left

glVertex2f(10*cosf(ang),10*sinf(ang));

glVertex2f(10*cosf(ang*2),10*sinf(ang*2));

glV ertex2f(10*cosf(ang*3),10*sinf(ang*3));

glV ertex2f(10*cosf(ang*4),10*sinf(ang*4));

glV ertex2f(10*cosf(ang*5),10*sinf(ang*5));

glV ertex2f(10*cosf(ang),10*sinf(ang));

glEnd();

void OnTimer(int value)

{if(Angle>20)Angle=-1;

Angle +=1;

void SetupLights()//设置光照

{

GLfloat ambientLight[]={1.0f,1.0f,1.0f,1.0f};//环境光变量GLfloat diffuseLight[]={0.9f,0.9f,0.9f,1.0f};//漫反射光变量//GLfloat specularLight[]={1.0f,1.0f,1.0f,1.0f};//镜面光

GLfloat lightPos[]={1.0f,1.0f,1.0f,1.0f};//光源位置变量23、正五面体斜线绕Y轴转

正文:

void OnDisplay(void)

{

int a=40;

glRotatef(Angle,0.0f,1.0f,0.0f);

glPushMatrix();

glBegin(GL_TRIANGLES);

glColor3f (1.0f,0.0f,0.0f);

glV ertex3f(a,0,0);

glVertex3f(0,a,0);

glVertex3f(0,0,a);

glColor3f (1.0f,1.0f,0.0f);

glV ertex3f(a,0,0);

glVertex3f(0,a,0);

glVertex3f(0,0,-a);

glColor3f (0.0f,1.0f,0.0f);

glV ertex3f(0,a,0);

glVertex3f(0,0,-a);

glVertex3f(-a,0,0);

glColor3f (0.0f,1.0f,1.0f);

glV ertex3f(0,a,0);

glVertex3f(-a,0,0);

glVertex3f(0,0,a);

glEnd();

void OnTimer(int value)

{if(Angle>360)Angle=0;

Angle +=10;

void SetupLights()//设置光照

{

GLfloat ambientLight[]={90.0f,90.0f,90.0f,1.0f};//环境光变量GLfloat diffuseLight[]={90.0f,90.0f,90.0f,1.0f};//漫反射光变量//GLfloat specularLight[]={1.0f,1.0f,1.0f,1.0f};//镜面光

GLfloat lightPos[]={90.0f,90.0f,90.0f,1.0f};//光源位置变量24、正四面体斜线绕Y轴转

正文:

void OnDisplay(void)

{

int a=40;

glRotatef(-10,1.0f,0.0f,0.0f);

glRotatef(Angle,0.0f,1.0f,0.0f);

glPushMatrix();

(完整版)计算机图形学题库及答案

注意:答案仅供参考 第一章 一、名词解释 图形;图像;点阵表示法;参数表示法; 二、选择题: 1. 下面哪个不是国际标准化组织(ISO)批准的图形标准。(D ) A.GKS B.PHIGS C.CGM D.DXF 2. 下面哪一项不属于计算机图形学的应用范围?(B) A. 计算机动画; B. 从遥感图像中识别道路等线划数据; C. QuickTime技术; D. 影视三维动画制作 3. 关于计算机图形标准化的论述,哪个是正确的(B ); A. CGM和CGI是面向图形设备的接口标准; B. GKS、IGES、STEP均是ISO标准; C. IGES和STEP是数据模型和文件格式的标准; D. PHIGS具有模块化的功能结构; 4. 与计算机图形学相关的学科有_ A、C、D___。 A. 图像处理 B. 测量技术 C. 模式识别 D. 计算几何 E. 生命科学 F. 分子生物学 三、判断题: 计算机图形学和图像处理是两个近似互逆的学科。(F) 计算机图形学处理的最基本的图元是线段。(F) 四、简答题: 图形包括哪两方面的要素,在计算机中如何表示它们? 阐述计算机图形学、数字图像处理和计算机视觉学科间的关系。图形学作为一个学科得以确立的标志性事件是什么? 试列举出几种图形学的软件标准?工业界事实上的标准有那些?举例说明计算机图形学有哪些应用范围,解决的问题是什么? 第二章 一、选择题:

1. 触摸屏是一种(C ) A. 输入设备; B. 输出设备; C. 既是输入设备,又是输出设备; D. 两者都不是; 2. 空间球最多能提供(D )个自由度; A. 一个; B. 三个; C. 五个; D. 六个; 3. 等离子显示器属于(C) A. 随机显示器; B. 光栅扫描显示器; C. 平板显示器; D. 液晶显示器; 4. 对于一个1024×1024存储分辨率的设备来说,当有8个位平面时,显示一帧图像所需要的内存为(A、D) A. 1M字节; B. 8M字节; C. 1M比特; D. 8M比特; 5. 分辨率为1024*1024的显示器,其位平面数为24,则帧缓存的字节数应为(A) A. 3MB; B. 2MB; C. 1MB; D. 512KB; 6. 下面对光栅扫描图形显示器描述正确的是:(A) A. 荧光粉涂层均匀离散分布; B. 是一种点画设备; C. 电子束从顶到底扫描; D. 通过控制电子束的强弱实现色彩的强弱; 7. 一个逻辑输入设备可以对应(C)物理输入设备。 A. 仅一个 B. 仅二个 C. 多个 D. 以上都不是 8. 彩色阴极射线管的三基色指得是:(A、C、D) A. 绿色; B. 黄色; C. 蓝色; D. 红色; 9. 计算机显示设备一般使用的颜色模型是(A) A. RGB B. HSV

计算机图形学试题附答案完整版

名词解释 将图形描述转换成用像素矩阵表示的过程称为扫描转换。 1.图形 2.像素图 3.参数图 4.扫描线 5.构造实体几何表示法 6.投影 7.参数向量方程 8.自由曲线 9.曲线拟合 10.曲线插值 11.区域填充 12.扫描转换 三、填空 1.图形软件的建立方法包括提供图形程序包、和采用专用高级语言。 2.直线的属性包括线型、和颜色。 3.颜色通常用红、绿和蓝三原色的含量来表示。对于不具有彩色功能的显示系统,颜色显示为。 4.平面图形在内存中有两种表示方法,即和矢量表示法。 5.字符作为图形有和矢量字符之分。 6.区域的表示有和边界表示两种形式。 7.区域的内点表示法枚举区域内的所有像素,通过来实现内点表示。 8.区域的边界表示法枚举区域边界上的所有像素,通过给赋予同一属性值来实现边界表示。 9.区域填充有和扫描转换填充。 10.区域填充属性包括填充式样、和填充图案。 11.对于图形,通常是以点变换为基础,把图形的一系列顶点作几何变换后,

连接新的顶点序列即可产生新的变换后的图形。 12.裁剪的基本目的是判断图形元素是否部分或全部落在之内。 13.字符裁剪方法包括、单个字符裁剪和字符串裁剪。 14.图形变换是指将图形的几何信息经过产生新的图形。 15.从平面上点的齐次坐标,经齐次坐标变换,最后转换为平面上点的坐标,这一变换过程称为。 16.实体的表面具有、有界性、非自交性和闭合性。 17.集合的内点是集合中的点,在该点的内的所有点都是集合中的元素。 18.空间一点的任意邻域内既有集合中的点,又有集合外的点,则称该点为集合的。 19.内点组成的集合称为集合的。 20.边界点组成的集合称为集合的。 21.任意一个实体可以表示为的并集。 22.集合与它的边界的并集称集合的。 23.取集合的内部,再取内部的闭包,所得的集合称为原集合的。 24.如果曲面上任意一点都存在一个充分小的邻域,该邻域与平面上的(开)圆盘同构,即邻域与圆盘之间存在连续的1-1映射,则称该曲面为。 25.对于一个占据有限空间的正则(点)集,如果其表面是,则该正则集为一个实体(有效物体)。 26.通过实体的边界来表示一个实体的方法称为。 27.表面由平面多边形构成的空间三维体称为。 28.扫描表示法的两个关键要素是和扫描轨迹。 29.标量:一个标量表示。 30.向量:一个向量是由若干个标量组成的,其中每个标量称为向量的一个分量。 四、简答题 1. 什么是图像的分辨率?

计算机图形学计算题

题目中所有的坐标系,均以OpenGL 坐标系为准 1. 使用OpenGL 图形库渲染如下四棱截锥体图形,根据给定点的A 、C 、G 的坐标推算 出其余五个点B 、D 、E 、F 、H 的坐标 答: B( 1.0f , -1.0f , 0.0f) (2分) D(-1.0f , -1.0f , -2.0f) (2分) E(-0.5f , 1.0f , -0.5f) (2分) F(-0.5f , 1.0f , -1.5f) (2分) H(0.5f , 1.0f , -0.5f) (2分) 2. 已知在平面P 上有两条向量v1和v2 他们的值分别(2.0f,0.0f,0.0f ),(0.0f, 3.0f,0.0f) 求出垂直与平面P 的法向量v3的值为多少,求出v1与v2之间的夹角θ的度数或cos 值为多少?要求写出计算过程。 向量的模 222||z y x V ++= 向量的倍乘 ),,(az ay ax aV = 向量之和 ),,(21212121z z y y x x V V +++=+ 向量的点积 21212121z z y y x x V V ++=? 向量的叉积 ),,(21122112211221y x y x x z x z z y z y V V ---=?

答: v3= v1与v2 叉积 或 v1×v2 (3分) v3 = (y1z2 – y2z1 , z1x2 –z2x1 , x1y2 – x2y1) v3 = ( 0.0f , 0.0f , 6.0f) (2分) 转换单位向量 v3 = (0.0f , 0.0f , 1.0f) cos θ = v1 与 v2单位向量的点积 或 v1·v2 (2分) v1的单位向量 = (1.0f , 0.0f , 0.0f) (1分) v2的单位向量= (0.0f , 1.0f , 0.0f) (1分) cos θ = x1x2 +y1y2+z1z2; cos θ = 1.0f*0.0f + 0.0f*1.0f + 0.0f*0.0f; cos θ = 0 (1分) θ = 90° 3. 已知空间中一条线段的两个顶点为d1(5.0f,3.0f,-2.0f) d2(6.0f, 4.0f,-2.0f)计算出其绕 (y=3,z=0)的轴旋转90°后再缩小0.5倍后的新的线段的两个顶点坐标,要求写出每一个计算后得到的新矩阵。 平移矩阵 = ?? ??????? ???1000100010 001z y x t t t 缩放矩阵 = ????? ? ? ?????10 000000000z y x s s s

计算机图形学简答题.和名词解释

1、简述图像处理、模式识别与计算机图形学的关系。 图像处理、模式识别与计算机图形学是计算机应用领域发展的三个分支学科,它们之 间有一定的关系和区别,它们的共同之处就是计算机所处理的信息都是与图有关的信息。它们本质上是不同的:图像处理是利用计算机对原存在物体的映象进行分析处理,然后再现图像;模式识别是指计算机对图形信息进行识别和分析描述,是从图形到描 述的表达过程;计算机图形学是研究根据给定的描述用计算机生成相应的图形、图像。 计算机图形系统主要具有哪些功能? 答案:1. 计算功能 2. 存储功能 3. 输入功能 4. 输出功能 5. 交互功能 多边形的顶点和点阵表示各有什么优缺点? 答案:顶点表示是用多边形的顶点序列来描述多边形。该表示几何意义强、占内存少、几何变换方便;但它不能直观地说明哪些像素在多边形内,故不能直接用于面着 色。 点阵表示用位于多边形内的像素的集合来描述多边形。该方法虽然没有多边形的几何 信息,但便于用帧缓存表示图形,可直接用于面着色。 为什么需要隐藏面消隐算法? 答: 因为我们在用计算机生成三维物体的真实感图形,必须要做的是确 定物体的可见部分,只有 确定了物体的可见部分,我们才能在计算机中真实地再现三维物体。因此,我们就需 要一个隐藏面消隐算法来去掉物体的不可见部分,从而避免错误地将不可见部分显示 出来,这样就可以在计算机中生成一个三维物体的真实感图形了。 z缓冲器算法是怎么判断哪个面应消隐的? 答: z缓冲器算法设置了一个二维数组,类似于帧缓冲器。但是z缓冲器存放的是每个象素点的深 度值,而不是帧缓冲器中的颜色值。z缓冲器的初始值为某个大的数值,通常是后裁剪平面的距离。 在判断像素),(yx上的哪个平面更靠近观察者时,就可以简单地比较z缓冲器中的深度值和当前平面的深度值。如果当前平面的值比z缓冲器中的值小(即距视点更近), 则用新值替换原z缓冲器中的值,像素的颜色值也变成新平面的颜色值。 颜色的基本特征是什么? 答:颜色的基本特征是:波长、亮度和饱和度。 波长是依赖于物质的,可见光的波长范围大约是350nm~780nm。

《计算机图形学》复习试题

计算机图形学模拟试卷 计算机图形学课程试卷(卷) 注意:1、本课程为必修(表明必修或选修),学时为 51 ,学分为 3 2、本试卷共 3 页;考试时间 120 分钟;出卷时间:年 12 月 3、姓名、学号等必须写在指定地方;考试时间:年 1 月 11 日 4、本考卷适用专业年级:任课教师: (以上内容为教师填写) 专业年级班级 学号姓名 一、名词解释(15分) 1.国际标准化组织(ISO)对计算机图形学的定义

2. 象素图 3. 正投影 4. 纹理 5. 位图 二.单项选择题(1.5×10=15分) ( )1、在TC 环境下编译绘图程序进行图形初始化时,要寻找文件的格式是?______。 A ).DOC B ).CPP C ).C D ).BGI ( )2、图形系统是由四部分组成,分别为 A).应用系统结构;图形应用软件;图形支撑软件;图形设备。 B).计算机;显示器;打印机;图形应用软件。 C).计算机;图形设备;图形支撑软件;图形应用软件。 D).计算机;图形软件;图形设备;应用数据结构。 ( )3、使用下列二维图形变换矩阵: T=???? ??????111020002 将产生变换的结果为______ 。 A )图形放大2倍; B )图形放大2倍,同时沿X 、Y 坐标轴方向各移动1个绘图单位; C )沿X 坐标轴方向各移动2个绘图单位; D )上述答案都不对。 ( )4、图形显示器的工作方式为 A ).文本方式 B ).图形方式 C ).点阵方式 D ).文本与图形方式 ( )5、透视投影中主灭点最多可以有几个? A) 3 B)2 C)1 D)0 ( )6、在用射线法进行点与多边形之间的包含性检测时,下述哪一个操作不正确? A) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数0次 B) 当射线与多边形交于某顶点时且该点的两个邻边在射线的一侧时,计数2次 C) 当射线与多边形交于某顶点时且该点的两个邻边在射线的两侧时,计数1次 D) 当射线与多边形的某边重合时,计数1次 ( )7、下列有关平面几何投影的叙述语句中,正确的论述为

计算机图形学基础教学大纲

《计算机图形学基础》课程教学大纲 一、课程概述 (一)基本说明 中文名称:计算机图形学基础课程代码:16JS062 总学时/学分:48/3 考核方式:考试 适用专业:计算机科学与技术 (二)课程属性 1.课程性质 本课程是计算机科学与技术专业选修课,主要介计算机图形学的经典核心体系:图形系统、二维图形生成、几何变换、二维与三维观察、三维对象(实体造型与曲线曲面)、真实感图形技术、交互技术及动画等。通过本课程的学习,有助于学生对计算机图形学原理的理解和图形编程技术的掌握。 2.课程与课程群的联系 本课程与《Java程序设计基础》、《C语言程序设计》、《线性代数》等基础课程有着密切的关系,通过本课程的学习,使学生掌握图形方面的基本知识。为了使学生能够顺利完成本课程的学习,在学习本课程之前,需对相关课程(群)有一定的了解和掌握。 前修课程:《Java程序设计基础》、《C语言程序设计》、《数据库原理及应用》等,这些课程对本课程学习起着基础铺垫作用。 二、教学设计 (一)课程设置的主要依据 本课程是一门理实融合、教学做一体的理论课程,着眼于满足计算机科学与技术专业对应用型人才需求,遵循“基础/应用”的导向原则,教学内容与教学组织紧紧围绕应用型的计算机科学与技术专业人才培养目标进行设计、选择和实施,以“必需、够用、适度超前”为度,突出打牢理论基础和实践能力培养。在教学过程中,注重创新精神、实践能力和职业道德的培养,倡导探究性学习(或研讨式、案例式、专题式、项目式等),引导学生主动参与教学过程,主动思考、勤于实践、知行合一,逐步培养学生分析解决计算机类项目开发过程中实际问题、沟通交流与团队协作能力。 (二)课程设计思路 以《Java程序设计基础》、《C语言程序设计》、《线性代数》等课程为基础,紧紧围绕计算机科学与技术专业应用型人才培养目标,准确把握本课程在计算机科学与技术课程群中的定位和作用,以能力为本位,强调打牢基本知识和基本理论基础,强化基本技能训练,充分利用信息化教学平台,打破以知识

计算机图形学试卷与答案

一、填空题(每空0.5分,共 1 0 分) 1、 计算机图形学中的图形是指由点、线、面、体等 和明暗、灰度(亮度)、色 彩等 构成的,从现实世界中抽象出来的带有灰度、色彩及形状的图或形。 2、 一个计算机图形系统至少应具有 、 、输入、输出、 等 基本功能。 3、 常用的字符描述方法有:点阵式、 和 。 4、 字符串剪裁的策略包括 、 和笔划/像素精确 度 。 5、 所谓齐次坐标就是用 维向量表示一个n 维向量。 6、 投影变换的要素有:投影对象、 、 、投影线和投影。 7、 输入设备在逻辑上分成定位设备、描画设备、定值设备、 、拾取设备 和 。 8、 人机交互是指用户与计算机系统之间的通信,它是人与计算机之间各种符号和动作 的 。 9、 按照光的方向不同,光源分类为: , , 。 10、从视觉的角度看,颜色包含3个要素:即 、 和亮度。 二、单项选择题(每题 2分,共 30 分。请将正确答案的序号填在题后的括号内) 1、在CRT 显示器系统中,( )是控制电子束在屏幕上的运动轨迹。 A. 阴极 B. 加速系统 C. 聚焦系统 D. 偏转系统 2、分辨率为1024×1024的显示器需要多少字节位平面数为16的帧缓存?( ) A. 512KB B. 1MB C. 2MB D. 3MB 3、计算机图形显示器一般使用什么颜色模型?( ) A. RGB B. CMY C. HSV D. HLS 4、下面哪个不属于图形输入设备?( ) A. 键盘 B. 绘图仪 C. 光笔 D. 数据手套 5、多边形填充算法中,错误的描述是( )。

A. 扫描线算法对每个象素只访问一次,主要缺点是对各种表的维持和排序的耗费较大 B. 边填充算法基本思想是对于每一条扫描线与多边形的交点,将其右方象素取补 C. 边填充算法较适合于帧缓冲存储器的图形系统 D. 边标志算法也不能解决象素被重复访问的缺点 6、 在扫描线填色算法中,扫描线与顶点相交时,对于交点的取舍问题,下述说法正确的是( )。 A. 当共享顶点的两条边分别落在扫描线的两边时,交点只算2个 B. 当共享交点的两条边在扫描线的同一边时,若该点是局部最高点取1个 C. 当共享交点的两条边在扫描线的同一边时,若该点是局部最低点取2个 D. 当共享顶点的两条边分别落在扫描线的两边时,交点只算0个 7、在多边形的逐边裁剪法中,对于某条多边形的边(当前处理的顶点为P ,先前已处理的多边形顶点为S)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点。请问哪种情况下输出的顶点是错误的? ( ) A. S 和P 均在可见的一侧,则输出点P B. S 和P 均在不可见的一侧,则输出0个顶点 C. S 在可见一侧,P 在不可见一侧,则输出线段SP 与裁剪线的交点和点S D. S 在不可见的一侧,P 在可见的一侧,则输出线段SP 与裁剪线的交点和P 8、使用下列二维图形变换矩阵:,将产生变换的结果为( )。 A. 图形放大2倍 B. 图形放大2倍,同时沿X 、Y 坐标轴方向各移动1个绘图单位 C. 沿X 坐标轴方向各移动2个绘图单位 D. 沿X 坐标轴方向放大2倍,同时沿X 、Y 坐标轴方向各平移1个绘图单位 9、透视投影中主灭点最多可以有几个? ( ) A. 0 B. 1 C. 2 D. 3 10、图形软件系统提供给用户三种基本的输入控制方式,不包含的选项是( ) A. 请求方式 B. 采样方式 C. 事件方式 D. 随机方式 11、下面哪个不是拾取技术中拾取一个基本对象的方法?( ) A. 指定名称法 B. 拖曳法 C. 特征点法 D. 外接矩形法 12、在明暗的光滑处理方法中,下列论述哪个是错误的?( ) A. Gouraud 明暗模型计算中,多边形与扫描平面相交区段上每一采样点的光亮度值是由扫描平面与多边形边界交点的光亮度插值得到的 B. Phong 通过对多边形顶点的法矢量进行插值,获得其内部各点的法矢量 C. Gouraud 计算工作量比Phong 方法计算工作量大 D. Gouraud 明暗模型处理的缺点是它使高光部位变得模糊 13、光线跟踪算法中包含了哪些光照效果?( ) A. 仅有光反射 B. 仅有光透射 C. 有光反射和光透射 D. 都没有 ????? ?????=111010002T

计算机图形学计算题

题目中所有的坐标系,均以OpenGL坐标系为准 1. 使用OpenGL图形库渲染如下四棱截锥体图形,根据给定点的A、 C、G的坐标推算出其余五个点B、 D、 E、 F、H的坐标 答: B( 1.0f , -1.0f , 0.0f) (2分) D(-1.0f , -1.0f , -2.0f) (2分) E(-0.5f , 1.0f , -0.5f) (2分) F(-0.5f , 1.0f , -1.5f) (2分) H(0.5f , 1.0f , -0.5f) (2分) 2. 已知在平面P上有两条向量v1和v2 他们的值分别 (2.0f,0.0f,0.0f),(0.0f,3.0f,0.0f)求出垂直与平面P的法 向量v3的值为多少,求出v1与v2之间的夹角θ的度数或cos值为 多少?要求写出计算过程。 向量的模 向量的倍乘 向量之和 向量的点积 向量的叉积

答: v3= v1与v2 叉积 或 v1×v2 (3分) v3 = (y1z2 – y2z1 , z1x2 –z2x1 , x1y2 – x2y1) v3 = ( 0.0f , 0.0f , 6.0f) (2分) 转换单位向量 v3 = (0.0f , 0.0f , 1.0f) cosθ = v1 与 v2单位向量的点积 或 v1·v2 (2分) v1的单位向量 = (1.0f , 0.0f , 0.0f) (1分) v2的单位向量= (0.0f , 1.0f , 0.0f) (1分) cosθ = x1x2 +y1y2+z1z2; cosθ = 1.0f*0.0f + 0.0f*1.0f + 0.0f*0.0f; cosθ = 0 (1分) θ = 90° 3. 已知空间中一条线段的两个顶点为d1(5.0f,3.0f,-2.0f) d2(6.0f,4.0f,-2.0f)计算出其绕(y=3,z=0)的轴旋转90°后再缩 小0.5倍后的新的线段的两个顶点坐标,要求写出每一个计算后 得到的新矩阵。 平移矩阵 = 缩放矩阵 =

计算机图形学考核题库

第一章 一、名词解释 图形;图像;点阵表示法;参数表示法; 二、选择题: 1. 下面哪个不是国际标准化组织(ISO)批准的图形标准。() A.GKS B.PHIGS C.CGM D.DXF 2. 下面哪一项不属于计算机图形学的应用范围?(B) A. 计算机动画; B. 从遥感图像中识别道路等线划数据; C. QuickTime技术; D. 影视三维动画制作 3. 关于计算机图形标准化的论述,哪个是正确的(); A. CGM和CGI是面向图形设备的接口标准; B. GKS、IGES、STEP均是ISO标准; C. IGES和STEP是数据模型和文件格式的标准; D. PHIGS具有模块化的功能结构; 4. 与计算机图形学相关的学科有____。 A. 图象处理 B. 测量技术

C. 模式识别 D. 计算几何 E. 生命科学 F. 分子生物学 三、判断题: 计算机图形学和图像处理是两个近似互逆的学科。[]计算机图形学处理的最基本的图元是线段。[] 四、简答题: 图形包括哪两方面的要素,在计算机中如何表示它们? 阐述计算机图形学、数字图象处理和计算机视觉学科间的关系。 图形学作为一个学科得以确立的标志性事件是什么? 试列举出几种图形学的软件标准?工业界事实上的标准有那些? 举例说明计算机图形学有哪些应用范围,解决的问题是什么? 第二章 一、选择题: 1. 触摸屏是一种() A. 输入设备; B. 输出设备; C. 既是输入设备,又是输出设备; D. 两者都不是; 2. 空间球最多能提供()个自由度; A. 一个; B. 三个;

C. 五个; D. 六个; 3. 等离子显示器属于() A. 随机显示器; B. 光栅扫描显示器; C. 平板显示器; D. 液晶显示器; 4. 对于一个1024×1024存储分辩率的设备来说,当有8个位平面时,显示一帧图象所需要的内存为() A. 1M字节; B. 8M字节; C. 1M比特; D. 8M比特; 5. 分辨率为1024*1024的显示器,其位平面数为24,则帧缓存的字节数应为() A. 3MB; B. 2MB; C. 1MB; D. 512KB; 6. 下面对光栅扫描图形显示器描述正确的是:() A. 荧光粉涂层均匀离散分布; B. 是一种点画设备; C. 电子束从顶到底扫描;

图形学模拟试题含答案

计算机图形学课程模拟试卷(参考答案含评分标准) 2010—2011学年第二学期 年级专业学号姓名得分 一、简要回答题(每题7分,共7题,共49分) 1.被誉为“图形学之父”的伊万?萨瑟兰(Ivan Sutherland)对计算机图形学理论和 应用的主要贡献有哪些? 答:(1)(3分)萨瑟兰在MIT攻读博士学位时,在著名的林肯实验室完成基于光笔的交互式图形系统:Sketchpad。这一系统中许多交互式图形设计的创意是革命性的,它的影响一直延续到今天。 (2)(4分)用于显示立体和彩色图像的“Lorgnette”技术和一系列图形图像算法,如分区编码的直线段裁剪算法、多边形裁剪算法、曲面的表示和消除隐藏线算法等等。 2.有人认为图形学算法主要依赖于点和向量的数学运算,你是否认同这一观点?给出 同意或反对的理由,并举例说明。 答:这一观点是正确的(2分),主要理由和举例如下(5分): (1)图形学的很多算法属于几何算法,点(从三维、二维到一维)是最基本的几何要素,也是统一基本几何的计算机表示形式。例如,在观察流水线上的主要图形学算法,无 论是表示和生成(显示)、建模(造型)、变换(包括投影、观察、消隐)都可以统 一到建立基于点的几何模型;(可以以典型的光栅图形学的算法如基本图形的生成和 变换、三维观察、Z-Buffer算法为例说明) (2)向量几何是图形学的重要数学基础、建立了以“方向性”概念的基本理论、思想方法、几何结构、几何算法与复杂性分析的几何计算理论体系。例如,借助向量几何可以将 二维布尔运算降为一维向量计算、将三维布尔运算下降为二维布尔运算、将三维消隐 算法最终归结为一维交集算法等等,从而使几何计算的复杂性大为简化。(可以以比 较典型的Liang-Barsky裁剪算法、三维实体造型CSG树生成,隐藏线消除算法等为例 说明)。 『评分说明』若认为这一观点是错误的或持有含糊的态度,且给出的例子是片面的、主观的,则本题不得分。其他错误情况者,如未举例说明,酌情扣2分左右。 3.针对多面体模型,直接用简单光照模型绘制会有什么问题?简述两种增量式光照明 模型(多边形绘制)的基本思想,并指出两个算法的主要区别。 答: (1)(3分)针对多面体模型,使用简单光照模型绘制会在多边形与多边形之交界处产生明暗的不连续变化,影响了曲面的显示效果,即马赫带效应。如果增加多边形个数,减小每个多边形的

《计算机图形学》练习试题及参考答案(二)

《计算机图形学》练习试题及参考答案 二、选择题(每题2分) B 1、计算机图形学与计算几何之间的关系是( )。 A)学术上的同义词B)计算机图形学以计算几何为理论基础 C)计算几何是计算机图形学的前身D).两门毫不相干的学科 B 2、计算机图形学与计算机图象学的关系是( )。 A)计算机图形学是基础,计算机图象学是其发展 B)不同的学科,研究对象和数学基础都不同,但它们之间也有可转换部分 C)同一学科在不同场合的不同称呼而已 D)完全不同的学科,两者毫不相干 C 3、触摸屏是( )设备。 A)输入B)输出C)输入输出D)既不是输入也不是输出 B 4.计算机绘图设备一般使用什么颜色模型?( ) A)RGB;B)CMY;C)HSV ;D)HLS A 5. 计算机图形显示器一般使用什么颜色模型?( ) A)RGB;B)CMY;C)HSV ;D)HLS C 6.分辨率为1024×1024的显示器各需要多少字节位平面数为24的帧缓存?( ) A)512KB;B)1MB;C)2MB ;D)3MB

D 7.哪一个不是国际标准化组织(ISO)批准的图形标准?( ) A)GKS;B)PHIGS;C)CGM ;D)DXF C8.下述绕坐标原点逆时针方向旋转a角的坐标变换矩阵中哪一项是错误的? ( ) | A B | | C D | A) cos a; B) sin a; C) sin a; D) cos a A 9、在多边形的逐边裁剪法中,对于某条多边形的边(方向为从端点S 到端点P)与某条裁剪线(窗口的某一边)的比较结果共有以下四种情况,分别需输出一些顶点.请问哪种情况下输出的顶点是错误的? ( ) A)S和P均在可见的一侧,则输出S和P. B)S和P均在不可见的一侧,则输出0个顶点. C)S在可见一侧,P在不可见一侧,则输出线段SP与裁剪线的交点. D)S在不可见的一侧,P在可见的一侧,则输出线段SP与裁剪线的交点和P. C 10、在物体的定义中对边的哪条限制不存在? ( ) A) 边的长度可度量且是有限的 B) 一条边有且只有两个相邻的面

计算机图形学 复习题

计算机图形学复习题 一、名词解释 1、齐次坐标系 2、光顺性 3、种子填充算法 4、镜面反射光 5、投影变换 6、光线跟踪 7、复合变换 8、走样 9、几何造型技术 10、虚拟现实 二、简答题 1、前截面距离F和后截面距离B定义了什么 2、计算机动画的制作主要步骤 3、计算机图形显示器和绘图设备表示颜色的方法各是什么颜色系统它们之间的关系如何 4、图形软件主语言的选择应考虑哪些因素 5、制定CGI,CGM,IGES标准的目的分别是什么

6、自由曲面的表示通常有哪两种 7、什么叫做走样什么叫做反走样反走样技术包括那些 8、简述区域连贯性、扫描线的连贯性以及边的连贯性。 9、简述Bezier曲线的不足之处。 10、建立图形软件可采用哪三种方法 11、在观察空间中,如何确定投影的类型和方向 12、简述编码裁剪法(即Cohen-Sutherland线段裁剪法)的算法过程。 三、应用题 1、分析边标志算法的实现过程,并写出其算法的C语言描述。 2、简述深度缓存算法及其特点。 3、假设在观察坐标系下窗口区的左下角坐标为(wxl=10,wyb=10),右上角坐标为(wxr=50,wyt=50)。设备坐标系中视区的左下角坐标为(vxl=10,vyb=30), 右上角坐标为(vxr=50,vyt=90)。已知在窗口内有一点p(20,30),要将点p映射 到视区内的点p`,请问p`点在设备坐标系中的坐标是多少(本题10分) 4、如下表是采用DDA算法画出(0,0)到(5,2)的直线的数据,请填写空格处。

6522 5、已知三角形ABC各顶点的坐标A(1,2)、B(5,2)、C(3,5),相对直线Y=4做对称变换后到达A’、 B ’、C’。 试计算A’、B’、C ’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵) 6、试对下图中的多边形进行裁剪,用图表示裁剪过程。 7、计算机图形系统包含哪些外部设备 8、简述消隐算法的分类。 9、设窗口左下角点坐标为(XW1,YW1),宽为LW,高为HW,视区左下角点坐标为(XV1,YV1),宽为LV,高为HV,已知窗口中有一点A(XA,YA),在视区中对应的坐标为A’(X’A,Y’A)。试计算A’的坐标值。(要求用齐次坐标进行变换,列出变换矩阵,列出计算式子,不要求计算结果) 10、采用扫描线算法对多边形进行填充,请写出EL、AEL的结构,并分析扫描线算法的步骤和处理扫描线的步骤。 11、种子点填充算法如下: 初始化:种子像素入栈,当栈非空时,重复2~4的步骤 栈顶像素出栈 将出栈像素置为多边形颜色 按右、上、左、下顺序依次检查与 θo (X V1,Y V1) (X W1,Y W1) A

计算机图形学试题

计算机图形学试题 1.图像生成的流水线方法并不对应于物理系统的成像过程,这样一 种非物理的方法主要有哪些优点和缺点?(EX.1.1) 2.为了以足够高的速度刷新显示器以避免闪烁,帧缓存的速度必须 足够快。一个典型的工作站显示器的分辨率可以是1280*1024.如果每秒刷新72次,那么帧缓存的速度必须有多快?这指的是从帧缓存中读取一个像素可以用多长时间。如果是刷新频率为60HZ,分辨率为480*640的隔行扫描显示器呢?(EX.1.8) 3.制作电影的35mm胶片所具有的分辨率大约是2000*3000.这样的 分辨率对于制作与电影画质相当的电视动画意味着什么?(EX.1.9)4.考虑设计一个二维图形API,这个API针对的是某个特定应用,比 如VLSI设计。列举出在这个系统中应包含的所有图元和属性。 (EX.1.10) 5.换句话 6.有时需要判断一个区域内所有的点是否在一个多边形的内部。如 果逐个点进行测试,那么效率是非常低的。请描述可以避免进行逐个点测试的一般策略。(EX.2.11) 7.广告上说某种具有CRT显示器的图形系统可以显示64种颜色的任 何一种。请问由此可以得出关于帧缓存和显示器质量的哪些信息? (EX.2.18) 8.请设计一个算法来判断一个二维多边形是否是凸多边形。(EX.2.19) 9.解释在定义笔画字体时所遇到的问题。(EX.3.1

10.我们能够准确地定义这样一个映射关系,即把位于对象坐标系或 世界坐标系中的某个点映射到屏幕坐标系中的某个位置,但却不能按相反的方向定义一个逆向映射关系,这是因为正向映射关系反映的是从三维到二维的变换。然而,假定我们编写的是一个二维应用程序,那么这个二维映射关系可逆吗?如果利用二维映射关系把定位设备确定的屏幕位置映射到与之对应的位于对象坐标系或世界坐标系中的位置,会出现什么问题?(EX.3.11) 11.一些用于玩具和游戏的廉价游戏杆一般没有配置编码器,它们只 包含一对三位置转换开关。这样的设备是如何工作的?(EX.3.16)12.考虑如图3.25所示的一张桌子,桌面上有两个相互连接的手臂, 并在手臂的末端放置一个传感设备。假定两个手臂的长度固定不变,并通过一个简单的(一个自由度)转轴连接起来。试确定关节高度和传感设备位置之间的关系。(EX.3.18) 13.证明下列每组变换中的两个变换都是可交换的: a.旋转和均匀缩 放 b.绕同一个轴的两个旋转 c.两个平移(EX.4.1) 14.如果只对二维图形感兴趣,那么可以用三维其次坐标把点表示成 p=[xy1]T,把向量表示成V=[a b 0]T。求3*3旋转矩阵、平移矩阵、缩放矩阵和剪切矩阵。二维空间中的仿射变换有多少个自由度。 (EX.4.4) 15.如果使用左手系但旋转正方向的定义保持不变,应该如何修改旋 转矩阵?(EX.4.6) 16.证明由旋转和平移组成的任何变换序列都等价于先进行一个以原

计算机图形学名词解释

第一章: 计算机图形学:怎样用计算机生成、处理和显示图像的学科。 图形:能够在人们视觉系统中形成视觉印象的对象称为图形,包括自然景物和人工绘图。 数字图像处理:针对图像进行各种加工以改善图像的效果,为图像分析做准备。 位图:显示屏幕上的矩形阵列的0,1表示。 图形:计算机图形学的研究对象,能在人的视觉系统中产生视觉印象的客观对象,包括自然景物、拍摄到的图片、用数学方法描述的图形等等 像素:构成屏幕(图像)的最小元素。 分辨率:阴极射线管在水平或垂直方向单位长度上能识别的最大像素个数。 颜色查找表:是一维线性表、其每一项的内容对应一种颜色,其长度由帧缓存单元的位数决定。 作用:在帧缓存单元位数不增加的情况下,具有大范围内挑选颜色的能力;对颜色进行索引光栅扫描式图形显示器(画点设备): 帧缓存(数字设备)+寄存器+DAC(数模转换)+电子枪+光栅显示器(模拟设备) 具有N个位面的帧缓存,颜色查找表至少有N位字宽(实际为W,W>N),有2n项,可同时显示2n个颜色(灰度级),总共可以有2w个。 (全色光栅扫描图形显示器/全色帧缓存:三种原色电子枪,每种原色的电子枪有8个位面,组合成224种颜色,帧缓存至少为24位,每组原色配一个颜色查找表) 显卡作用:根据CPU提供的指令和有关数据将程序运行过程和结果进行相应处理、并转换成显示器能够接受的文字和图形显示信号,通过屏幕显示出来。 虚拟现实系统:由计算机生成的一个实时的三维空间。 虚拟现实系统的3I特性:沉浸(immersion)、交互(interaction)、想象(imagination)

第二章: 图形标准:图形系统及其相关应用系统中各界面之间进行数据传送和通信的接口标准,以及供图形应用程序调用的子程序功能及其格式标准。前者称为数据及文件格式标准,后者称为子程序界面标准。 (计算机图形接口(CGI)、计算机图元文件(CGM)、图形核心系统(GKS)、程序员层次交互式图形系统(PHIGS)、基本图形转换规范(IGES)、产品数据模型转换标准(STEP)、计算机图形参考模型(CGRM)) 图形系统标准的作用:方便不同系统间的数据交换;方便程序移植;硬件隔离,实现图形系统的硬件无关性。(提高图形软件、应用软件、相关开发人员在计算机系统和图形设备之间的可移植性) 计算机图形接口(CGI):使应用程序和图形库直接与各种不同的图形设备相作用,使其在各种图形设备上不经修改就可以运行。 计算机图元文件(CGM):提供了一个在虚拟设备接口上存贮与传输图形数据及控制信息的机制 第三章: 用户接口的常用形式: 子程序库:使用方便,但需要用户熟悉某种通用程序设计语言,如OpenGL 专用语言:一般为解释性语言,如VRML 交互命令:图形界面或命令行方式,进行人机交互 图段:具有相同属性的一组输出图元的集合。 交互设备与交互任务:定值、笔画、定位、选择、拾取、字符串 交互技术:集合约束、拖拽、三维输入。(选择、定位、定向、定路径、定量、文本、橡皮筋、徒手画、拖动) 拾取图形:点拾取、符号及集拾取、直线段拾取、折线集拾取、曲线拾取、字符串拾取、多边形拾取、重叠图形拾取、三维图形拾取。(加速图形拾取的措施:过滤器、区域粗判、硬件实现) 输入控制(画图说明):请求方式(程序初始化设备)、取样方式(程序和设备同时工作)、事件方式(设备初始化程序) 第四章: 区域填充的几种算法:活性边表法;边填充算法;栅栏填充算法;边标志算法;种子填充算法;扫描线种子填充算法。 图形的扫描转换/光栅化:确定一个像素集合及其颜色,用于显示一个图形的过程。 裁剪:确定一个图形的哪些部分在窗口内,必须显示;哪些部分在窗口外,不该显示的过程。多边形填充:把多边形的顶点表示转换为点阵表示。即从多边形的给定边界出发,求出位于其内部的各个像素,并将帧缓冲器内的各个对应元素设置相应的灰度或颜色。 4连通的区域:取区域内任意两点,在该区域内若从其中一点出发通过上、下、左、右四种运动可到达另一点。 8连通区域:取区域内任意两点,若从其中任一点出发,在该区域内通过沿水平方向、垂直方向和对角线方向的八种运动可到达另一点。

计算机图形学试题及答案(汇总)

一、 判断题(10x1=10分) 1、 构成图形的要素可分为两类:刻画形状的点、线、面、体的非几何要素(集合要素)与反映物体表面属性或材质 的明暗、色彩等的(非几何要素)几何要素。( 错误 ) 2、 参数法描述的图形叫图形;点阵法描述的图形叫图像。( 正确 ) 3、 EGA (增强图形适配器)/VGA (视频图形阵列)为增强图形显示效果的一种图形处理软件的名称。( 错误 ) 4、 对山、水等不规则对象进行造型时,大多采用过程式模拟方法。( 正确 ) 5、 若两个图形是拓扑等价的,则一个图形可通过做弹性运动与另一个图形相重合。( 正确 ) 6、 0阶参数连续性和0阶几何连续性的定义是相同的。( 正确 ) 7、 Bezier 曲线可做局部调整。( 错误 ) 8、 字符的图形表示分为点阵和矢量两种形式。( 正确 ) 9、 LCD 表示(液晶显示器)发光二极管显示器。( 错误 ) 10、 使用齐次坐标可以将n 维空间的一个点向量唯一的映射到n+1维空间中。( 错误 ) 二、 填空题(15x2=30分) 1、目前常用的PC 图形显示子系统主要由3个部件组成:(1)帧缓冲存储器、(2)显示控制器、(3)ROM BIOS 。 2、 图形的输入设备有(4)键盘、鼠标、光笔(至少写三种);图形的显示设备有(5)CRT 显示器、LCD 、投影仪(至少写三种)。 3、常用坐标系一般可以分为:建模坐标系、用户坐标系、(6观察坐标系、(7)规格化设备坐标系、(8)设备坐标系。 4、在多边形的扫描转换过程中,主要是通过确定穿越多边形区域的扫描线的覆盖区间来填充,而区域填充则是从(9)给定的位置开始涂描直到(10)指定的边界条件为止。 5、一个交互式计算机图形系统应具有(11)计算 、(12)存储、(13)对话、(14)输入和输出等五个方面的功能。 三、 简答题(5x6=30分) 1、 请列举常用的直线段裁减算法(四种)。 答:答:直接求交算法、编码算法、中点再分算法、Cyrus-Beck 算法。 2、 考虑三个不同的光栅系统,分辨率依次为480640?,10241280?,20482560?。欲存储每个像素12位, 这些系统各需要多大的帧缓冲器(字节数)? 答:480640?需要的帧缓存为KB 4508/12480640=?? 10241280?需要的帧缓存为KB 19208/1210241280=?? 20482560 ?需要的帧缓存为KB 76808/1220482560=?? 3、 什么叫做走样?什么叫做反走样?反走样技术包括那些? 答:走样指的是用离散量表示连续量引起的失真。 为了提高图形的显示质量。需要减少或消除因走样带来的阶梯形或闪烁效果,用于减少或消除这种效果的方法称为反走样。 其方法是①前滤波,以较高的分辨率显示对象;②后滤波,即加权区域取样,在高于显示分辨率的较高分辨率下用点取样方法计算,然后对几个像素的属性进行平均得到较低分辨率下的像素属性。 4、 试说明一致缩放(s x =s y )和旋转形成可交换的操作对。 答:????? ??? ??-=???????? ??-????????? ??=1000cos sin 0sin cos 1000cos sin 0sin cos 10 00 001θθθθ θθθθ y y x x y x s s s s s s T ???? ???? ? ?-=??????????????????? ??-=10 00cos sin 0sin cos 10 000010 00cos sin 0sin cos 2θθθθθθ θθ y x y x y x s s s s s s T

计算机图形学复习题目范文

第一章 1.1 名词解释:图形、图像、点阵法、参数法。 1.2 图形包括哪两方面的要素?在计算机中如何表示它们? 1.3 什么叫计算机图形学?分析计算机图形学、数字图像处理和计算机视觉学科间的关系。 1.4 有关计算机图形学的软件标准有哪些? 1.5 试从科学发展历史的角度分析计算机图形学以及硬设备的发展过程。 1.6 试发挥你的想象力,举例说明计算机图形学有哪些应用范围,解决的问题是什么? 1.7 一个交互性计算机图形系统必须具有哪几种功能? 第二章 2.1 名词解释:随机扫描、光栅扫描、图形显示子系统、像素点、光点、屏幕分辨率、显示分辨率、存储分辨率、组合像素法、颜色位面法、位平面、颜色查找表。 2.2 试列举出你所知道的图形输入与输出设备。 2.3 阴极射线管由哪几部分组成?它们的功能分别是什么? 2.4 简述什么叫桶形失真?如何校正? 2.5 简述荫罩式彩色阴极射线管的结构和工作原理。 2.6 比较荫罩式彩色阴极射线管和穿透式彩色阴极射线管的异同。 2.7 简述黑底荫罩式彩色阴极射线管的结构和特点。 2.8 简述光栅扫描图形显示器的工作逻辑。 2.9 基于光栅扫描的图形显示子系统由哪几个逻辑部件组成?它们的功能分别是什么? 2.10 什么是像素点?什么是显示器的分辨率? 2.11 某些显示卡为什么要采用颜色查找表?采用颜色查找表的系统的工作原理是什么?

2.12 确定用你的系统中的视频显示器x和y方向的分辨率,确定其纵横比,并说明你的系统怎样保持图形对象的相对比例。 2.13 如何根据显示器的指标计算显示存储器的容量。 2.14 图形的硬拷贝设备有哪些,简述其各自的特点。 第三章 3.1 名词解释(可用图示):回显、约束、网格、引力域、橡皮筋技术、草拟技术、拖动、旋转、形变。 3.2 什么是用户模型,设计一个好的用户接口要涉及到哪些因素? 3.3 gks的有哪六种逻辑输入设备,试评价这六种逻辑分类方法。 3.4 举例说明什么是请求方式、取样方式、事件方式及其组合形式。 第四章 4.1 名词解释:造型技术、规则对象、不规则对象、几何造型、几何模型、图元、图素、体素、段、图形信息、非图形信息、几何信息、拓扑信息、刚体运动、拓扑运动、拓扑等价、建模坐标系、用户坐标系、观察坐标系、规格化设备坐标系、设备坐标系。 4.2 欧氏空间中的几何元素包含那些内容,如何表示。 4.3 试比较线框模型和实体模型的优缺点。 4.4 简述三维形体的扫描表示方法。 4.5 简述如何利用csg树来表示三维形体。 4.6 举例说明如何用四叉树表示二维形体。 4.7 图形系统中为什么要建立图形对象的层次结构。 5.1 名词解释:扫描转换、八分法画圆、多边形的顶点表示、多边形的点阵表示、字库、矢量字符、点阵字符、区域填充、边界填充、4-邻接点、8-邻接点、4-连通区域、8-连通区域、方刷子、线刷子、走样、反走样。

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