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—创建太阳系模型相关推荐

  1. OpenGL编程指南11:组合运动示例2—创建机器人手臂模型

    1.源代码: #include <vgl.h>static int shoulder = 0, elbow = 0; void init(void) {glClearColor(0.0,0 ...

  2. 《OpenGL编程指南》一第2章 着色器基础

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第2章,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 第2章 着色 ...

  3. OpenGL编程指南7:视图-

    1.前言 计算机图形学的要点就是创建三维物体的二维图像(图像必须是二维的,因为他是在平面的屏幕上显示的).但是,当我们决定怎样在屏幕上绘图时,必须使用三维坐标的方式考虑. 为了把一个物体的三维坐标变成 ...

  4. OpenGL编程指南4:双缓冲实现运行

    1.前言 绘制一个旋转的方块,主要为了说明glutSwapBuffers()函数的用法. 同时也为了学习如何使用GLUT控制输入设备,并打开或关闭空闲处理函数. 2.OpenGL编程及程序剖析 /** ...

  5. 《OpenGL编程指南(原书第8版)》——计算着色器

    原文  http://www.csdn.net/article/2014-11-21/2822754 主题 OpenGL 数学 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊 ...

  6. 《OpenGL编程指南》一3.2 OpenGL缓存数据

    本节书摘来自华章出版社<OpenGL编程指南>一书中的第3章,第3.2节,作者 Bill Licea-Kane ,更多章节内容可以访问云栖社区"华章计算机"公众号查看 ...

  7. OpenGL深入探索——《OpenGL编程指南(原书第8版)》——计算着色器

    转载自 <OpenGL编程指南(原书第8版)>--计算着色器 概述 由于图形处理器每秒能够进行数以亿计次的计算,它已成为一种性能十分惊人的器件.过去,这种处理器主要被设计用于承担实时图形渲 ...

  8. OpenGL编程指南8-Transform Feedback例子理解

    transform feedback 是,OpenGL管线中,的,顶点处理阶段结束之后,图元装配和光栅化之前的一个步骤.transform feedback,可以重新捕获即将装配为图元(点.线段.三角 ...

  9. OpenGL编程指南5:学习绘制不同风格的曲线

    1.不同风格曲线绘制 #include <vgl.h> //宏定义;当定义的宏不能用一行表达完整时,可以用"\"表示下一行继续 #define drawOneLine( ...

最新文章

  1. 数据挖掘视频教程下载
  2. Swift 烧脑体操(二) - 函数的参数
  3. 音视频技术开发周刊 88期
  4. 相对湿度计算软件_冷却塔填料的用量要怎么计算?
  5. 麻省理工学院(MIT)的公开课程
  6. Arduino笔记-Rouch Sensor的使用
  7. React:Conditional Rendering(条件渲染)
  8. django 设置媒体url_编写第一个 django 应用
  9. nyoj 谁是最好的Coder
  10. [原创]独立模式安装Hive
  11. 【运动学】基于matlab斜抛物体斜坡射程【含Matlab源码 980期】
  12. 浅谈Java内存模型——JVM
  13. openssl密码套件详解
  14. 【传感器学习】光电反射传感器
  15. mat1 and mat2 shapes cannot be multiplied (3584x7 and 512x4096)
  16. 【Machine Learning】模型融合之Stacking
  17. cmake编译pcl程序时出现‘boost::this_thread::hiden::sleep_until(timespec const)’未定义的引用
  18. java apache 日志_了解Apache的访问日志
  19. 遗传算法(包含选择、交叉、变异) MATLAB完整代码 中文注释详解
  20. Opengl绘制网格模型

热门文章

  1. jq 解决 动画 淡入淡出,隐藏显示,多次操作BUG
  2. 7、ReadWriteLock
  3. 第二次冲刺------第三天
  4. 《C++游戏开发》十八 角色在障碍物中智能行走的实现
  5. E-mail 标准 SMTP POP3
  6. 海量数据处理专题(六)——双层桶划分
  7. struts声明式异常
  8. hdu 4501 小明系列故事——买年货 多重背包
  9. 20155330 《信息安全系统设计基础》课程总结
  10. 解决properties文件乱码问题(eclipse和MyEclipse)