2018年自考《电脑动画》复习试题及答案
编程
1、OpenGL设置材质要求:RGBA值为(0.8,0.0,0.8,1.0)是一种紫色,将材质的环境反射光和漫反射光色设置为紫色。写出实现代码。
答:
GLfloat mat_ambient[]={0.8,0.0,0.8,1.0};
GLfloat mat_diffuse[]={0.8,0.0,0.8,1.0};
glMaterialfv(GL_FRONT,GL_AMBIENT,mat_ambient);
glMaterialfv(GL_FRONT,GL_DIFFUSE,mat_diffuse);
2、OpenGL中,如果程序要设置光源的漫反射光为蓝色,则实现代码应为。
答:GLfloat light_diffuse[]={0.0,0.0,1.0,1.0};
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse);
3、编程实现旋转的茶壶效果,要求写出详细的操作步骤,写出OnDraw和OnTimer函数中的关键代码。
答:1、操作步骤:
①定义全局变量m_angle:float m_angle=0.0f;
②在Ondraw函数中画茶壶语句auxWireTeaport(2.0)之前添加旋转变化语句;
③在Oncreate函数体内最后“return 0”之前添加SetTimer(1.33,NULL);
④在OnDestory函数体内最后添加KillTimer(1);
⑤添加OnTimer函数。
OnDraw函数:
glRotated(m_angle,0.0,0.0,1.0);
auxWireTeapot(2.0);
OnTimer函数:
m_angle=m_angle+10.0;
Invalidate();
5、写出基于颜色的图像插值算法。P116
输入:原始图像A和目标图像B,以及参数t∈[0,1],要求图像A和B具有相同的宽度和高度。
输出:参数t所对应的中间帧图像。
步骤1:对于初始图像A的每一个像素位置,依次执行下面的各个步骤:
步骤1.1:获取初始图像在该位置的颜色值(R0,G0,B0);
步骤1.2:获取在目标图像相同对应位置上的颜色值(R1,G1,B1)。
步骤1.3:将(R0,G0,B0)、(R1,G1,B1)和参数t代入公式 R(t)=(1-t)R0+tR1
G(t)=(1-t)G0+tG1
B(t)=(1-t)B0+tB1
得到颜色值(R(t),G(t),B(t));
步骤1.4:将中间帧图像在相同对应位置上的颜色值设为(R(t),G(t),B(t))。
步骤2:返回中间帧图像。