[计算机软件及应用]计算机图形学试验.pptVIP

  • 9
  • 0
  • 约1.65万字
  • 约 81页
  • 2018-03-09 发布于浙江
  • 举报

[计算机软件及应用]计算机图形学试验.ppt

[计算机软件及应用]计算机图形学试验

允许用户在这个世界中游走和遍历 根据用户的指令旋转并变换镜头位置。 围绕原点,以与镜头相反的旋转方向来旋转世界。(让人产生镜头旋转的错觉) 以与镜头平移方式相反的方式来平移世界(让人产生镜头移动的错觉)。 程序实现效果 参考程序 试验10 飘动的旗帜 #include math.h // 引入数学函数库中的Sin 旗帜是由由44格×44格的小方格子依次组成。使用points数组来存放网格各顶点独立的x,y,z坐标。 float points[ 45 ][ 45 ][3]; // Points网格顶点数组 // 沿X平面循环 for(int x=0; x45; x++) { // 沿Y平面循环 for(int y=0; y45; y++) { // 向表面添加波浪效果 points[x][y][0]=float((x/5.0f)-4.5f); points[x][y][1]=float((y/5.0f)-4.5f); points[x][y][2]=float(sin((((x/5.0f)*40.0f)/360.0f)*3.141592654*2.0f)); } } 绘制组成旗帜的44×44个小网格,形成旗帜第一帧 glBegin(GL_QUADS); // 四边形绘制开始 for( x = 0; x 44; x++ ) // 沿 X 平面 0-44 循环(45点) { for( y = 0; y 44; y++ ) // 沿 Y 平面 0-44 循环(45点) { float_x = float(x)/44.0f; // 生成X浮点值 float_y = float(y)/44.0f; // 生成Y浮点值 float_xb = float(x+1)/44.0f; // X浮点值+0.0227f float_yb = float(y+1)/44.0f; // Y浮点值+0.0227f glTexCoord2f( float_x, float_y); // 第一个纹理坐标 (左下角) glVertex3f( points[x][y][0], points[x][y][1], points[x][y][2] ); glTexCoord2f( float_x, float_yb ); // 第二个纹理坐标 (左上角) glVertex3f( points[x][y+1][0], points[x][y+1][1], points[x][y+1][2] ); glTexCoord2f( float_xb, float_yb ); // 第三个纹理坐标 (右上角) glVertex3f( points[x+1][y+1][0], points[x+1][y+1][1], points[x+1][y+1][2] ); glTexCoord2f( float_xb, float_y ); // 第四个纹理坐标 (右下角) glVertex3f( points[x+1][y][0], points[x+1][y][1], points[x+1][y][2] ); } } glEnd(); // 四边形绘制结束 不断更新绘制小网格。形成旗帜飘动效果 // 用来降低波浪速度(每隔2帧一次) if( wiggle_count == 2 ) { for( y = 0; y 45; y++ ) // 沿Y平面循环 { hold=points[0][y][2]; // 存储当前左侧波浪值 for( x = 0; x 44; x++) // 沿X平面循环 { // 当前波浪值等于其右侧的波浪值 points[x][y][2] = points[x+1][y][2]; } points[44][y][2]=hold; // 刚才的值成为最左侧的波浪值 } wiggle_count = 0; // 计数器清零 } wiggle_count++; // 计数器加一 程序运行效果 参考程序 试验11 二次几何体 // 绘制圆柱体 glTranslatef(0.0f,0.0f,-1.5f); // 绘制圆锥 gluCylinder(quadratic,1.0f,0.0f,3.0f,32,32); (顶面半径为0 的特殊圆柱体) 参数1(1.0F)是圆柱体的底面半径,参数2(1.0F)是圆柱体的饿顶面半径,参数3(3.0F)是圆柱体的高度。参数4(32)是纬线(环绕Z轴有多少细分),参数5(32)是经线(沿着Z轴有多少细分)。细分越多该对象就越细致。我们可以用增加细分的方法来增加对象的多边形数。 // 绘制圆盘gluDisk(quad

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档