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. 关于Zookeeper
  3. 2017-06-18 前端日报
  4. 品牌保量技术在阿里妈妈外投场景的应用
  5. c语言入口参数和出口参数,麻烦帮忙指出一下这个函数的入口参数和出口参数呀!...
  6. vmware vcenter orchestrator configuration提示“用户名密码错误或登录失败超过次数被锁定”...
  7. TCP连接发送窗口问题思考
  8. 现代电力系统分析[简答】
  9. SEM医械研发:常见医用塑料种类、特性与选用知识汇总
  10. UE4-使用WebBrowser插件打开720云全景图
  11. 1、STM32通过软件IIC连接ADXL345(ADXL345使用遇到的一些坑)
  12. qt几种常见的打包安装程序工具
  13. Robot Framework(三):RIDE工具简介
  14. Ipone桌面计算机没了,苹果电脑重启软件不见了怎么办
  15. endnote中科大版是什么意思_ios14.2rc是什么意思 ios14.2rc版是原来的“GM”版吗
  16. 洛谷-P1478-陶陶摘苹果(升级版)
  17. 用HALL 库配置GPIO以及相关寄存器
  18. 解决vs2013编译时scanf报错的方法
  19. 第一节云计算课程的感想
  20. 4.1.3 消费者轮询的流程

热门文章

  1. Memcached - In Action
  2. 详解 WSUS 部署
  3. nyoj 1216 整理图书(dp)
  4. poj-Scout YYF I
  5. List去重为什么要写equals(),hashCode()方法
  6. dedecms原理及使用
  7. 【转】MySQL sql_mode 说明(及处理一起 sql_mode 引发的问题)
  8. BZOJ4723[POI2017]Flappy Bird——模拟
  9. Missing artifact com.sun:tools:jar 1.5.0 终极解决方法
  10. UVA 1151 Buy or Build MST(最小生成树)