计算机图形学实验三 图形的变换3

阅读: 评论:0

计算机图形学实验三 图形的变换3

计算机图形学实验三 图形的变换3

用键盘和菜单功能绘制不同的几何图形,键盘的上、下、左、右键控制图形旋转,使用菜单选择绘制不同的图形,如下图所示。

#include <GL/glut.h>static GLsizei iMode = 1;
//x,y 方向旋转参数
static GLfloat xRot = 0.0f;
static GLfloat yRot = 0.0f;void Initial() {glClearColor(1.0f, 1.0f, 1.0f, 1.0f);glColor3f(0.0f, 0.0f, 0.0f);
}void ChangeSize(int w, int h) {glViewport(0, 0, w, h);glMatrixMode(GL_PROJECTION);glLoadIdentity();gluOrtho2D(-1.5f, 1.5f, -1.5f, 1.5f);
}void Display() {glClear(GL_COLOR_BUFFER_BIT);glMatrixMode(GL_MODELVIEW);glLoadIdentity();//绕x轴旋转//绕y轴旋转glRotatef(xRot, 1.0f, 0.0f, 0.0f);glRotatef(yRot, 0.0f, 1.0f, 0.0f);/*指定要绘制的图元*/switch (iMode){case 1:/*绘制线框正四面体*/glutWireTetrahedron(); break;case 2:/*绘制实体正四面体*/glutSolidTetrahedron(); break;case 3:/*绘制线框正八面体*/glutWireOctahedron(); break;case 4:/*绘制实体正八面体*/glutSolidOctahedron(); break;case 5:/*绘制线框球面*/glutWireSphere(1.0f,15,15); break;case 6:/*绘制实体球面*/glutSolidSphere(1.0f, 15, 15); break;case 7:/*绘制线框茶壶*/glutWireTeapot(1.0f); break;case 8:/*绘制实体茶壶*/glutSolidTeapot(1.0f); break;default:break;}glFlush();
}void ProcessMenu(int value) {//选择绘制模式iMode = value;glutPostRedisplay();
}//键盘绘制函数
void SpecialKeys(int key, int x, int y) {//绕x轴旋转的角度变化if (key == GLUT_KEY_UP) xRot -= 0.5f;if (key == GLUT_KEY_DOWN) xRot += 0.5f;//绕y轴旋转的角度的变化if (key == GLUT_KEY_LEFT) yRot -= 0.5f;if (key == GLUT_KEY_RIGHT) yRot += 0.5f;if (xRot > 356.0f) xRot = 0.0f;if (xRot < -1.0f) xRot = 355.0f;if (yRot > 356.0f) yRot = 0.0f;if (yRot < -1.0f) yRot = 355.0f;glutPostRedisplay();
}int main(int argc, char* argv[]) {glutInit(&argc, argv);glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);glutInitWindowSize(400, 400);glutInitWindowPosition(100, 100);glutCreateWindow("openGl模型绘制函数示例");/*创建菜单并定义菜单的回调函数*//*创造GLUT多面体绘制菜单*/int nGLutPolyMenu = glutCreateMenu(ProcessMenu);glutAddMenuEntry("线框正四面体", 1);glutAddMenuEntry("实体正四面体", 2);glutAddMenuEntry("线框正八面体", 3);glutAddMenuEntry("实体正八面体", 4);/*创建GLUT曲面绘制菜单*/int nGLutCurveMenu = glutCreateMenu(ProcessMenu);;glutAddMenuEntry("线框球面", 5);glutAddMenuEntry("实体球面", 6);glutAddMenuEntry("线框茶壶", 7);glutAddMenuEntry("实体茶壶", 8);/*创建主菜单*/int nMainMenu = glutCreateMenu(ProcessMenu);glutAddSubMenu("GLUT多面体绘制", nGLutPolyMenu);glutAddSubMenu("GLUT曲面绘制", nGLutCurveMenu);/*单击右键显示菜单*/glutAttachMenu(GLUT_RIGHT_BUTTON);glutDisplayFunc(Display);glutReshapeFunc(ChangeSize);glutSpecialFunc(SpecialKeys);Initial();glutMainLoop();return 0;
}

本文发布于:2024-01-31 13:36:14,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170667937528906.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图形   计算机   图形学
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23