山东大学计算机图形学2010试卷A(含答案)
山东大学 计算机图形学 课程试卷 A
学院 专业 级 学号 姓名
void main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(500, 500);
glutCreateWindow("robot");
glEnable(GL_DEPTH_TEST);
glClearColor(1.0, 1.0, 1.0, 1.0);
glutDisplayFunc(display);
glutMainLoop();
}
What is the screen output of this program? Please illustrate with a picture.
If we can vary the values in the theta array freely, what spatial region can be reached by the tip of the upper arm?
一个中心点在 (0.0, 0.2, 0.0),半径为1的球体
Write out the affine transformation matrix applied to each of Cube-A, Cube-B, and Cube-C.
对于Cube-A:Ry(0)*T(0,0.1,0)*S(0.2,0.2,0.2)
计算得为
0.2 0 0 0
0 0.2 0 0.1
0 0 0 2
0 0 0 1.0
void lower_arm()
{
glPushMatrix();
glTranslatef(0.0, 0.5*LOWER_ARM_HEIGHT, 0.0);
glScalef(LOWER_ARM_WIDTH,LOWER_ARM_HEIGHT,LOWER_ARM_WIDTH);
glutSolidCube(1.0);// Cube-C
glPopMatrix();
}
void display(void)
{
GLfloat theta[] = {0.0, 45.0, 45.0};
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glColor3f(1.0, 0.0, 0.0);
glRotatef(theta[0], 0.0, 1.0, 0.0);
base();
glColor3f(0.0, 1.0, 0.0);
glTranslatef(0.0, BASE_HEIGHT, 0.0);
glRotatef(theta[1], 0.0, 0.0, 1.0);
lower_arm();
glColor3f(0.0, 0.0, 1.0);
glTranslatef(0.0, LOWER_ARM_HEIGHT, 0.0);
glRotatef(theta[2], 0.0, 0.0, 1.0);
upper_arm();
glFlush();
glutSwapBuffers();
}
第 页 共 页
09-10 学年 2 学期
glBegin (GL_TRIANGLE_STRIP)
glVertex3fv(a);
glVertex3fv(b);
glVertex3fv(c);
glVertex3fv(d);
glVertex3fv(e);
glVertex3fv(b);
glVertex3fv(f);
glEnd ( );
第 2 页 共 4 页
山东大学 计算机图形学 课程试卷