虚拟现实与数据可视化课程作业董元 22011207
glColor3f(0.8f,0.8f, 0.8f); glBegin(GL_QUADS);
glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3f(-50.0f, 30.0f, -80.0f); glVertex3f(-50.0f, -30.0f, -80.0f); glVertex3f( 50.0f, -30.0f, -80.0f);
glVertex3f( 50.0f, 30.0f, -80.0f);
glEnd(); glBegin(GL_QUADS);
glNormal3f(0.0f, 0.0f, -1.0f);
glVertex3f( 50.0f, 30.0f, 20.0f); glVertex3f( 50.0f, -30.0f, 20.0f); glVertex3f(-50.0f, -30.0f, 20.0f); glVertex3f(-50.0f, 30.0f, 20.0f); glEnd();
glBegin(GL_QUADS);
glNormal3f( 1.0f, 0.0f, 0.0f);
glVertex3f(-50.0f, 30.0f, 20.0f); glVertex3f(-50.0f, -30.0f, 20.0f); glVertex3f(-50.0f, -30.0f, -80.0f); glVertex3f(-50.0f, 30.0f, -80.0f); glEnd();
glBegin(GL_QUADS);
glNormal3f(-1.0f, 0.0f, 0.0f);
glVertex3f( 50.0f, 30.0f, -80.0f); glVertex3f( 50.0f, -30.0f, -80.0f); glVertex3f( 50.0f, -30.0f, 20.0f);
glVertex3f( 50.0f, 30.0f, 20.0f);
glEnd();
//------------------------------绘制房间结束
------------------------------------------------//
//------------------------------开始绘制房间两侧石柱-----------------------------------------// int j=0; for(;j<2;j++) 石柱
{ glBegin(GL_QUADS);
glNormal3f(0.0f, 0.0f, -1.0f);
//绘制后墙面
//绘制前墙面
//绘制左墙面
//绘制右墙面
//绘制教室右侧的
//石柱后面
16 / 40
虚拟现实与数据可视化课程作业董元 22011207
glVertex3f( 50.0f, 30.0f, -40.0f+j*30); glVertex3f( 47.0f, 30.0f, -40.0f+j*30); glVertex3f( 47.0f, -30.0f, -40.0f+j*30);
glVertex3f( 50.0f, -30.0f, -40.0f+j*30);
glEnd();
glBegin(GL_QUADS); glNormal3f(-1.0f, 0.0f, 0.0f);
glVertex3f( 47.0f, 30.0f, -40.0f+j*30); glVertex3f( 47.0f, 30.0f, -36.0f+j*30); glVertex3f( 47.0f, -30.0f, -36.0f+j*30);
glVertex3f( 47.0f, -30.0f, -40.0f+j*30);
glEnd();
glBegin(GL_QUADS); glNormal3f(0.0f, 0.0f, 1.0f);
glVertex3f( 50.0f, 30.0f, -36.0f+j*30); glVertex3f( 47.0f, 30.0f, -36.0f+j*30); glVertex3f( 47.0f, -30.0f, -36.0f+j*30);
glVertex3f( 50.0f, -30.0f, -36.0f+j*30);
glEnd();
}
for( j=0;j<3;j++) 柱 { glBegin(GL_QUADS); glNormal3f(0.0f, 0.0f, -1.0f);
glVertex3f( -50.0f, 30.0f, -40.0f+j*28); glVertex3f( -47.0f, 30.0f, -40.0f+j*28); glVertex3f( -47.0f, -30.0f, -40.0f+j*28);
glVertex3f( -50.0f, -30.0f, -40.0f+j*28);
glEnd();
glBegin(GL_QUADS); glNormal3f(1.0f, 0.0f, 0.0f);
glVertex3f( -47.0f, 30.0f, -40.0f+j*28); glVertex3f( -47.0f, 30.0f, -36.0f+j*28); glVertex3f( -47.0f, -30.0f, -36.0f+j*28);
glVertex3f( -47.0f, -30.0f, -40.0f+j*28);
glEnd();
glBegin(GL_QUADS);
//石柱左面
//石柱前面
//绘制教室左侧石
//石柱后面
//石柱右面
17 / 40
虚拟现实与数据可视化课程作业董元 22011207
glNormal3f(0.0f, 0.0f, 1.0f); //石柱前面
glVertex3f( -50.0f, 30.0f, -36.0f+j*28); glVertex3f( -47.0f, 30.0f, -36.0f+j*28); glVertex3f( -47.0f, -30.0f, -36.0f+j*28); glVertex3f( -50.0f, -30.0f, -36.0f+j*28);
glEnd();
//------------------------------结束绘制房间两侧石柱-----------------------------------------// }
/***************函数名称:
DrawDesk************************************************************* ****************函数作用:绘制教室里的九张桌子和就张凳子****************************************/ void DrawDesk() {
glPushMatrix();
glColor3f(1,1,0.45);//桌子后面
glTranslatef(15.0f,-12.0f,-32.5f+i*17);//从原点平移 glScalef(11.0f,3.0f,0.3f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0);
18 / 40
}
GLuint i=0; for(;i<3;i++) {
glPushMatrix();//-----------------------no.1-------------------------------
glColor3f(1,1,0.45);//桌子上面
glTranslatef(15.0f,-10.0f,-30.0+i*17);// glScalef(13.0f,0.3f,5.0f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌子下面
glTranslatef(15.0f,-13.0f,-30.0+i*17);// glScalef(11.0f,0.3f,5.0f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix();
-----
虚拟现实与数据可视化课程作业董元 22011207
glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌子左面
glTranslatef(9.5f,-11.5f,-30.0f+i*17);//从原点平移 glScalef(0.3f,3.0f,5.0f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌子右面
glTranslatef(20.5f,-11.5f,-30.0f+i*17);//从原点平移 glScalef(0.3f,3.0f,5.0f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌腿一号
glTranslatef(10.0f,-17.0f,-32.5f+i*17);//从原点平移 glScalef(0.5f,8.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌腿二号
glTranslatef(10.0f,-17.0f,-28.5f+i*17);//从原点平移 glScalef(0.5f,8.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌腿三号
glTranslatef(20.0f,-17.0f,-32.5f+i*17);//从原点平移 glScalef(0.5f,8.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//桌腿四号
19 / 40
虚拟现实与数据可视化课程作业董元 22011207
glTranslatef(20.0f,-17.0f,-28.5f+i*17);//从原点平移 glScalef(0.5f,8.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//板凳上面
glTranslatef(15.0f,-15.0f,-25.0+i*17);//从原点平移 glScalef(9.5f,0.3f,3.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//板凳腿一号
glTranslatef(11.0f,-18.0f,-26.0f+i*17);//从原点平移 glScalef(0.5f,6.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//板凳腿二号
glTranslatef(11.0f,-18.0f,-24.0f+i*17);//从原点平移 glScalef(0.5f,6.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//板凳腿三号
glTranslatef(19.0f,-18.0f,-26.0f+i*17);//从原点平移 glScalef(0.5f,6.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0); glPopMatrix(); glPushMatrix();
glColor3f(1,1,0.45);//板凳腿四号
glTranslatef(19.0f,-18.0f,-24.0f+i*17);//从原点平移 glScalef(0.5f,6.0f,0.5f);//将立方体变成长方体
glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,mat_amb_diff1); glutSolidCube(1.0);
20 / 40