
用python实现旋转地球
素材
本文只讲最简单也是最常见的正侧面旋转地球。
首先你得有一张360度贴图,效果如下图。在网上搜一下,这种图很多,容易获得。
它的特点是高度恰好是宽度的一半,因为地球一周有360度,而从南极到北极只有180度。这种360度贴图,标明了每个经纬度上地球的表面效果。仔细观察会注意到,南北两极变形剧烈,而中间地带和我们经常见到的地图比较相似。
我们称它为经纬度贴图。
基本原理
旋转地球之所以看起来是旋转的,只是因为它上面显示的内容在变。其实起点只是一个圆。我们所做的,只是把经纬度贴图中的像素以合理的方式贴到圆上去。然后再把一帧帧图片连接为GIF动图即可。
贴图的方法是:
1、选择圆内的所有点。
2、计算每一点对应的经纬度。
3、从经纬度贴图上获取该经纬度对应的xy坐标
4、获取像素写入图片
5、制作GIF
计算过程是比较简单的球面几何,下面结合代码讲解。
1 获得圆内所有的点
这个比较简单
1 2 3 4 5 6 7 8 9 10 11 |
|
2 计算经纬度
首先从平面坐标获得三维坐标
球面上的任意一点,有一个规律是x2 + y2 + z2 = 1
我们就用这个原理,可以获得圆内每个点的z值
根据x,y,z计算球面的经纬度
为了让计算速度尽量快一些,这里用numpy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
3 获取经纬度对应的xy坐标
就是一个简单的坐标映射
1 2 3 4 5 6 7 |
|
4 获得像素点,并写入图片
首先,载入经纬度贴图的素材并转为numpy格式
1 2 3 4 5 |
|
注意转换后的XY是反的,取点并直接赋值即可
1 2 3 4 5 6 7 8 |
|
5 GIF制作
使用的是imageio库
1 2 3 4 5 6 7 8 9 10 |
|
更多Python知识,请关注Python视频教程!!