OpenGL(5)--太阳系和的日月地实现
2016-01-05 16:08
309 查看
太阳系和机器人的实现
全局坐标系和局部坐标系
如果用全局坐标系的思想来考虑问题,那么必须要注意矩阵乘法的顺序和代码中的顺序是相反的。而用局部坐标系来思考的话,所有的操作都是针对于当前不断变化的坐标系,因此,矩阵乘法很自然的与他们再代码中出现的顺序一样。
太阳系的实现
glPushMatrix()和glPopMatrix()可以消除上一次变换对本次变换的影响,使得本次变换都是基于世界坐标系的原点为参考点进行的。因此,实现太阳系,只需要把太阳先画出(默认在世界坐标系原点),然后保存当前视图,绘制行星,恢复视图,这种思路采用了全局坐标系的思想。
glPushMatrix(); glRotatef((GLfloat)day,0.0,1.0,0.0); glTranslatef(1.0,0.0,0.0); glutWireSphere(0.2,10,8);//draw planet glPopMatrix();
日月地的实现
我们首先绘制太阳,然后进行模型视图变化,再绘制地球,然后我们把认为坐标原点此时移动到了地球所在位置(移动坐标系),并不调用glPushMatrix()保存变换矩阵,而是在原来基础上再进行模型视图变换,在相对于地球的某个位置绘制月球,这是符合实际的,因为月球是地球的卫星。
相关文章推荐
- COPY 淘宝图片服务的学习
- VS2015编译opencv
- OpenCV笔记1
- 25+免费的Bootstrap HTML5网站模板
- Nginx负载均衡(主备)+Keepalived
- 2015年15+最佳的响应式HTML5网站模板
- 11 个超实用的网站页脚设计小技巧
- hadoop学习笔记之hdfs的文件上传下载
- linux下systemverilog 语法高亮设置
- Linux GCC常用命令
- 关于 tomcat 集群中 session 共享的三种方法
- Linux帮助命令man
- bash 脚本编程之二 条件判断
- 远程安装服务器操作系统Linux14.04
- sqlite系统学习网站
- sed命令笔记
- tomcat使用APR后性能竟然毫无提升
- linux su和sudo命令的区别
- 每个极客都应该知道的Linux技巧
- 企业Shell实战-MySQL分库分表备份脚本