文章目录
- 1、简介
- 2、相关公式
- 3、实现步骤
- 4、运行结果(3d整体地球)
- 4.11 opengl / freeglut / glew / c++ / 边界线/ 文字标注(3d)
- 4.12 opengl / glfw / glad / stb / c++ / obj/ 太阳和地球(3d)
- 4.13 opengl / openFrameworks / glew / FreeImage / c++(3d)
- 4.14 opengl / win32 / glew / FreeImage / c++/ 地球仪(3d)
- 4.15 opengl / win32 / glew / FreeImage / c++/ 地球仪2(3d)
- 4.16 opengl / glfw / glad / std / fastgltf / c++
- 4.17 opengl / glut / glew / FreeImage / c++ / dem(hgt)白天夜晚(3d)
- 4.18 opengl / glfw / glew / SOIL / c++ / 白天夜晚
- 4.19 opengl / glut / glew / stb_image / c++ / 天空盒
- 4.20 opengl / glfw / glew / stb_image / freetype / c++
- 5、运行结果(3d瓦片地球)
- 6、运行结果(2d瓦片地球)
- 6.2 opengl / curl / glad / glfw / stb / c++ (2d,瓦片贴图)
- 6.3 opengl / sdl2 / sdl2_image / boost::asio / curl/ c++ (2d,瓦片贴图)
- 6.4 opengl / sdl2 / sdl2_image / curl / c++ (2d,瓦片贴图)
- 6.5 opengl / qt5 / glm / cpprest / c++ / 必应影像地图 (2d,瓦片贴图)
- 6.6 qt5 / c++ / 影像地图 (2d,瓦片贴图)
- 6.7 qt5 / c++ / OSM / 谷歌 / 必应 (2d,瓦片贴图)
- 6.8 qt5 / c++ / OSM / 高德 / 天地图 (2d,瓦片贴图)
- 6.9 qt5 / c++ / 多种地图源切换 (2d,瓦片贴图)
- 15、运行结果(3d效果地球)
- 结语
1、简介
地球仪绘制是通过使用OpenGL技术来实现的。首先,需要利用OpenGL绘制球体的方法来创建一个球体模型。可以使用球体的顶点和索引数组来定义球体的几何形状。然后,利用OpenGL的纹理映射功能将一张地球的图片作为纹理映射到整个球体的表面上。通过将纹理坐标映射到球体的顶点上,可以实现将图片贴在球体上的效果。
2、相关公式
-
球的三维坐标表示为:
-
球的参数坐标方程:
3、实现步骤
OpenGL 是一个图形处理器库,用于创建 3D 应用程序。要将地球显示在 3D 中,您需要使用 OpenGL 来渲染 3D 图表和模型。以下是一些步骤:
- 准备数据:首先,您需要获取或计算得到地球的三维坐标数据。这些数据通常以点、线或其他形状的形式表示地球表面。
- 加载模型文件:接下来,加载一个 3D 地球模型的.obj 或.fbx 文件。这可以是一个简单的球体或更复杂的形状,如山脉、海洋等。
- 编写着色器:使用顶点着色器和片段着色器来控制几何体的外观和材质属性。这些着色器可以在代码中编写,然后编译成GPU可执行的机器码。
- 设置视口大小和环境光强度:在开始绘制之前,您需要设置视口的大小和环境光强度。这将影响地球表面的颜色和亮度。
- 开始绘图:现在您可以开始绘制地球了!使用顶点着色器,逐个绘制每个顶点的颜色值。对于像素着色器,则需要将每个点的颜色值与周围点的颜色值进行比较,并应用相应的混合模式。
- 视角变换:根据用户的输入,调整模型的视角,以便用户能够观察整个地球或部分区域。可以使用矩阵变换或自定义函数来实现此功能。
- 最后调整细节:最后,您可以根据需要进行调整,例如添加阴影、纹理贴图等。完成之后,您可以使用 GLUT 等工具来测试和调试您的程序。
4、运行结果(3d整体地球)
4.11 opengl / freeglut / glew / c++ / 边界线/ 文字标注(3d)
4.12 opengl / glfw / glad / stb / c++ / obj/ 太阳和地球(3d)
4.13 opengl / openFrameworks / glew / FreeImage / c++(3d)
4.14 opengl / win32 / glew / FreeImage / c++/ 地球仪(3d)
4.15 opengl / win32 / glew / FreeImage / c++/ 地球仪2(3d)
4.16 opengl / glfw / glad / std / fastgltf / c++
4.17 opengl / glut / glew / FreeImage / c++ / dem(hgt)白天夜晚(3d)
4.18 opengl / glfw / glew / SOIL / c++ / 白天夜晚
- 地球代码简介
场景中包含地球和月球。该地球使用了6张贴图。白天和黑夜的切换,云层的移动等。
4.19 opengl / glut / glew / stb_image / c++ / 天空盒
- 地球代码简介
场景包括旋转的地球和天空盒。
4.20 opengl / glfw / glew / stb_image / freetype / c++
5、运行结果(3d瓦片地球)
5.3 opengl / qt5 / c++ / 影像地图 (3d,瓦片贴图)
- 代码简介
绘制地球
绘制文字
加载和绘制XYZ瓦片影像地图
加载和绘制obj模型
6、运行结果(2d瓦片地球)
6.2 opengl / curl / glad / glfw / stb / c++ (2d,瓦片贴图)
6.3 opengl / sdl2 / sdl2_image / boost::asio / curl/ c++ (2d,瓦片贴图)
6.4 opengl / sdl2 / sdl2_image / curl / c++ (2d,瓦片贴图)
6.5 opengl / qt5 / glm / cpprest / c++ / 必应影像地图 (2d,瓦片贴图)
-
qt vs tool插件下载地址
https://download.qt.io/archive/vsaddin/2.3.2/ -
必应地图瓦片原理介绍
https://learn.microsoft.com/en-us/bingmaps/articles/bing-maps-tile-system
-
必应地图瓦片key简介
https://www.microsoft.com/en-us/maps/bing-maps/create-a-bing-maps-key- 第一步:若没有Microsoft帐号,要先注册一个Microsoft帐号;
- 注册完成后,打开这个链接:www.bingmapsportal.com并选“sign in”登录Microsoft帐号;
- 在 “My account” 选项中选择 “My Keys”;
- 在 “My Keys” 中 “Create Key” ,同时填写您应用程序的相关信息。注意密钥类别选择 “Basic”,应用程序类型填写“Website”,然后点击“Create”;
- 生成密钥后,点击“Show key”即可显示密钥,复制下来添加到网站后台的bing地图组件里即可。
-
cpprest库地址
https://github.com/microsoft/cpprestsdk
6.6 qt5 / c++ / 影像地图 (2d,瓦片贴图)
QT += network sql widgets
6.7 qt5 / c++ / OSM / 谷歌 / 必应 (2d,瓦片贴图)
6.8 qt5 / c++ / OSM / 高德 / 天地图 (2d,瓦片贴图)
6.9 qt5 / c++ / 多种地图源切换 (2d,瓦片贴图)
15、运行结果(3d效果地球)
15.1 opengl / glfw3 / glew / sdl2 / freetype2 / Assimp / dds / c++(3d,效果地球)
以上章节所有地球代码,均在VS2017或QT5开发环境编译通过。
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!