2022-01-12 11:14:05 索炜达电子 647
文件编号:L34
文件大小:76M
代码行数:374行(主程序)
开发环境:VS2019、OpenGL
猿创承诺:该源码均通过亲自测试可正常运行
简要概述:带有传统OpenGL的太阳系模型。
距离和大小:
轨道距离是真人大小的 AU(天文单位)。行星大小也成正比。
但是太阳的大小有点棘手。我做不到生活中那么大的太阳。
因为当我尝试放大太阳时,其他行星被太阳吸收了。
然后我尝试用太阳扩大轨道,但这一次行星变得很小,无法看到。所以,我缩放了与其他距离不同的太阳大小。
轨道和球体:
天体具有像现实生活一样的椭圆轨道,而太阳位于两个焦点之一。我更喜欢 Icospheres 来渲染行星。
交互功能:
键盘
l -> 启用/禁用照明
t -> 启用/禁用纹理
o -> 启用/禁用 drawOrbit
- -> 降低时间速度
+ -> 增加时间速度
0 -> 重置相机旋转/位置
w, s -> 改变相机绕太阳的 X 轴旋转
a, d -> 改变相机绕太阳的 Z 轴旋转
鼠标
左键单击和鼠标移动-> 更改视角
右键单击 -> glut 菜单,更改灯光颜色、速度或纹理
向上/向下滚动 -> 放大/缩小到太阳(沿 z 轴移动)
运行效果:
目录│文件列表:
├ 演示视频
│ └ 演示视频.mp4
└ 项目源码
└ SolarSystem-OpenGl-main
│ SolarSystem.sln
├ Debug
│ │ SolarSystem.exe
│ └ SolarSystem.pdb
├ SolarSystem
│ │ CelestialBody.cpp
│ │ CelestialBody.h
│ │ freeglut.dll
│ │ glew32.dll
│ │ Icosphere.cpp
│ │ Icosphere.h
│ │ SolarSystem.cpp
│ │ SolarSystem.vcxproj
│ │ SolarSystem.vcxproj.filters
│ │ SolarSystem.vcxproj.user
│ ├ Debug
│ │ │ CelestialBody.obj
│ │ │ Icosphere.obj
│ │ │ SolarSystem.exe.recipe
│ │ │ SolarSystem.ilk
│ │ │ SolarSystem.log
│ │ │ SolarSystem.obj
│ │ │ vc142.idb
│ │ │ vc142.pdb
│ │ └ SolarSystem.tlog
│ │ │ CL.command.1.tlog
│ │ │ CL.read.1.tlog
│ │ │ CL.write.1.tlog
│ │ │ link.command.1.tlog
│ │ │ link.read.1.tlog
│ │ │ link.write.1.tlog
│ │ └ SolarSystem.lastbuildstate
│ ├ Texture
│ │ │ earth.bmp
│ │ │ jupiter.bmp
│ │ │ mars.bmp
│ │ │ mercury.bmp
│ │ │ moon.bmp
│ │ │ neptune.bmp
│ │ │ saturn.bmp
│ │ │ stars.bmp
│ │ │ sun.bmp
│ │ │ uranus.bmp
│ │ └ venus_atmosphere.bmp
│ └ x64
│ └ Debug
│ │ CelestialBody.obj
│ │ Icosphere.obj
│ │ SolarSystem.log
│ │ SolarSystem.obj
│ │ vc142.idb
│ │ vc142.pdb
│ └ SolarSystem.tlog
│ │ CL.command.1.tlog
│ │ CL.read.1.tlog
│ │ CL.write.1.tlog
│ │ link.command.1.tlog
│ │ link.read.1.tlog
│ │ link.write.1.tlog
│ │ SolarSystem.lastbuildstate
│ └ unsuccessfulbuild