OpenGL编程指南10:组合运动示例1—创建太阳系模型
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 latitudeglPopMatrix(); 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编程指南10:组合运动示例1—创建太阳系模型相关推荐
- OpenGL编程指南11:组合运动示例2—创建机器人手臂模型
1.源代码: #include <vgl.h>static int shoulder = 0, elbow = 0; void init(void) {glClearColor(0.0,0 ...
- 《OpenGL编程指南》一第2章 着色器基础
本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...
- OpenGL编程指南7:视图-
1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...
- OpenGL编程指南4:双缓冲实现运行
1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...
- 《OpenGL编程指南(原书第8版)》——计算着色器
原文 http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...
- 《OpenGL编程指南》一3.2 OpenGL缓存数据
本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...
- OpenGL深入探索——《OpenGL编程指南(原书第8版)》——计算着色器
转载自 <OpenGL编程指南(原书第8版)>--计算着色器 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊人的器件.过去,这种处理器主要被设计用于承担实时图形渲 ...
- OpenGL编程指南8-Transform Feedback例子理解
transform feedback 是,OpenGL管线中,的,顶点处理阶段结束之后,图元装配和光栅化之前的一个步骤.transform feedback,可以重新捕获即将装配为图元(点.线段.三角 ...
- OpenGL编程指南5:学习绘制不同风格的曲线
1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...
最新文章
- 数据挖掘视频教程下载
- Swift 烧脑体操(二) - 函数的参数
- 音视频技术开发周刊 88期
- 相对湿度计算软件_冷却塔填料的用量要怎么计算?
- 麻省理工学院(MIT)的公开课程
- Arduino笔记-Rouch Sensor的使用
- React:Conditional Rendering(条件渲染)
- django 设置媒体url_编写第一个 django 应用
- nyoj 谁是最好的Coder
- [原创]独立模式安装Hive
- 【运动学】基于matlab斜抛物体斜坡射程【含Matlab源码 980期】
- 浅谈Java内存模型——JVM
- openssl密码套件详解
- 【传感器学习】光电反射传感器
- mat1 and mat2 shapes cannot be multiplied (3584x7 and 512x4096)
- 【Machine Learning】模型融合之Stacking
- cmake编译pcl程序时出现‘boost::this_thread::hiden::sleep_until(timespec const)’未定义的引用
- java apache 日志_了解Apache的访问日志
- 遗传算法(包含选择、交叉、变异) MATLAB完整代码 中文注释详解
- Opengl绘制网格模型