OpenGL编程指南10:组合运动示例1—创建太阳系模型
2017-03-28 14:52
423 查看
1.程序代码:
#include <vgl.h> static int year =0, day =0; void init(void) { glClearColor(0.0,0.0,1.0,0.0); //清除背景底色 glShadeModel(GL_FLAT); } void display(void) { glClear(GL_COLOR_BUFFER_BIT); glColor3f(0.5,0.5,0.5); //相当于画笔 glPushMatrix(); glRotatef((GLfloat)year, 0.0, 1.0, 0.0); glutWireSphere(1,30,24); //sun: radius longtitude latitude glPopMatrix(); glPushMatrix(); glRotatef((GLfloat)year,-1,1,0); glTranslatef(3.0, 0.0, 0.0); glTranslatef(0.0, 3.0, 0.0); glRotatef((GLfloat)day, -1.0, 1.0, 0.0); glutWireSphere(0.3,10,8); glPopMatrix(); glPushMatrix(); glRotatef((GLfloat)year,1,1,0); glTranslatef(2.0,0.0,0.0); glTranslatef(0.0,-2.0,0.0); glRotatef((GLfloat)day,1,1,0); glutWireSphere(0.3,10,8); glPopMatrix(); glutSwapBuffers(); } void reshape(int w,int h) { glViewport(0,0,(GLsizei)w,(GLsizei)h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60,(GLfloat)w/(GLfloat)h,1.0,20.0); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); gluLookAt(0.0,0.0,6.0, 0.0,0.0,0.0, 0.0,1.0,0.0 ); } void keyboard(unsigned char key, int x,int y) { switch(key){ case 'd': day = (day+10) %360; glutPostRedisplay(); break; case 'D': day = (day-10) %360; glutPostRedisplay(); break; case 'y': year = (year+5) %360; glutPostRedisplay(); break; case 'Y': year = (year-5) %360; glutPostRedisplay(); break; default: break; } } int main(int argc, char** argv) { glutInit(&argc,argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowSize(400,400); glutInitWindowPosition(200,200); glutCreateWindow(argv[0]); init(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
2.说出结果
相关文章推荐
- OpenGL编程指南8:模型组合变换
- OpenGL编程指南11:组合运动示例2—创建机器人手臂模型
- opengl编程指南示例程序2-15完整代码
- 【OpenGL编程指南】之视图和模型变换
- Win32 OpenGL编程(8) 3D模型变换及其组合应用
- 【OpenGL编程指南】之视图和模型变换
- 化零为整WCF(18) - Web编程模型(WCF创建REST, AJAX调用WCF)
- 化零为整WCF(18) - Web编程模型(WCF创建REST, AJAX调用WCF)
- Socket编程指南及示例程序
- Socket编程指南及示例程序
- Socket编程指南及示例程序2(
- 高质量C++/C编程指南 -- 第10章 类的继承与组合
- Win32 OpenGL编程(10) 视口变换
- Posix线程编程指南(1)--线程创建与取消
- [转]Socket编程指南及示例程序
- 高质量C++/C编程指南 -- 类的继承与组合
- OpenGL编程指南--显示列表
- 高质量C++/C编程指南 -- 第10章 类的继承与组合
- 高质量C++/C编程指南 -- 第10章 类的继承与组合
- 使用SharePoint Server 2007搜索对象模型编程创建搜索查询