C++17实现OpenGL地球与月亮绕太阳旋转的3D动画
版权申诉
![](https://csdnimg.cn/release/wenkucmsfe/public/img/starY.0159711c.png)
本资源是关于在C++17环境下利用OpenGL 4.5版本在MacPro13-inch 2020 M1搭载的Xcode 13.3中实现地球和月亮围绕太阳旋转的示例代码。作者通过`#include`语句导入了必要的库函数,如GLUT、OpenGL和数学库,以实现3D图形渲染。
首先,代码定义了一个全局变量`day`用于控制地球和月亮的旋转速度,初始值设为1,表示一天。`myDisplay`函数是OpenGL的核心部分,它负责每帧的图形绘制。在这个函数中:
1. **启用深度测试**:确保物体的遮挡关系被正确处理。
2. **设置背景颜色**:将背景设置为淡黄色(0.5f,0.5f,0.0f)。
3. **初始化投影矩阵**:采用透视视角,视口比例1:1,远裁剪平面设定为400000000,使得太阳位于远处。
4. **设置模型视图矩阵**:设置观察者位置在远离地球的上方,便于观察地球和月亮的运动。
5. **太阳的绘制**:用红色绘制一个球体,代表太阳,半径为69600000单位。
6. **地球的绘制**:
- 设置地球颜色为蓝色。
- 使用`glRotatef`函数,根据`day`的值以一定的速度(一天360度)绕Y轴旋转,同时向X轴平移150000000单位,使地球移动到适当的位置。
- 绘制一个较小的蓝色球体,代表地球,半径为15945000单位。
7. **月亮的绘制**:
- 月亮的颜色设为黄色。
- 月亮绕地球旋转,速度稍快于地球,通过减去与地球旋转速度的差值实现相对位置的变化。
- 月亮也向X轴平移38000000单位,远离太阳。
- 月亮的半径为4345000单位。
8. **更新`day`值**:如果`day`超过365天,重置为1,以模拟地球绕太阳一周。
9. **调用`glutPostRedisplay`**:通知OpenGL重绘当前帧,确保动画效果连续。
`main`函数中,初始化GLUT库,设置显示模式为RGB,并开始主循环,不断调用`myDisplay`函数以更新屏幕内容。这个程序展示了如何在OpenGL中创建简单的天体系统动画,通过计算和变换来模拟地球和月亮围绕太阳的旋转运动。
2010-12-17 上传
2017-12-17 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-10-30 上传
![](https://profile-avatar.csdnimg.cn/6568807208fc432fa25fc08eef2e0d28_liu_yun_song_i.jpg!1)
小明的程序
- 粉丝: 5
- 资源: 32
最新资源
- Hadoop生态系统与MapReduce详解
- MDS系列三相整流桥模块技术规格与特性
- MFC编程:指针与句柄获取全面解析
- LM06:多模4G高速数据模块,支持GSM至TD-LTE
- 使用Gradle与Nexus构建私有仓库
- JAVA编程规范指南:命名规则与文件样式
- EMC VNX5500 存储系统日常维护指南
- 大数据驱动的互联网用户体验深度管理策略
- 改进型Booth算法:32位浮点阵列乘法器的高速设计与算法比较
- H3CNE网络认证重点知识整理
- Linux环境下MongoDB的详细安装教程
- 压缩文法的等价变换与多余规则删除
- BRMS入门指南:JBOSS安装与基础操作详解
- Win7环境下Android开发环境配置全攻略
- SHT10 C语言程序与LCD1602显示实例及精度校准
- 反垃圾邮件技术:现状与前景