python 三维地球_用python生成地球运动的动态模拟动态图
python作為一門簡單易學且應用范圍極廣的語言有著其他語言無法比擬的優勢,通過python可以實現各種各樣的功能,例如我們可以利用python matplotlib的繪圖庫實現各種動態模擬仿真,在科學實驗中有著極大的應用價值。下列是通過python實現地球公轉的動態模擬圖:
import numpy as np
import matplotlib as mpl
mpl.use("TkAgg")
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.animation as animmation
L1 = 10 #地球環繞軌跡的半徑
v = 2*np.pi #地球運動的角速度
def updata (data): #隨時間t變換設置新的地球位置的坐標,也即是隨animmation.FuncAnimation函數的幀數參數變化每一幀的不同坐標位置的圖片對象參數
global line
line.set_data([data[0], data[1]])
line.set_3d_properties(data[2])
return line,
def init(): #地球的起始位置
global line
ti = 0
t = t_drange[np.mod(ti, t_dlen)]
xt1 = x0 + L1 * np.cos(v * t)
yt1 = y0 + L1 * np.sin(v * t)
zt1 = z0 + 0
line, = ax.plot([xt1], [yt1], [zt1], marker='o', color='blue',markersize=8)
return line
def data_gen(): #隨時間t變換的地球坐標,也即是animmation.FuncAnimation函數的幀數參數
global x0,y0,z0,t_dlen
data = []
for ti in range(1,t_dlen):
t = t_drange[ti]
xt1 = x0 + L1 * np.cos(v * t)#地球與太陽坐標關系方程
yt1 = y0 + L1 * np.sin(v * t)#地球與太陽坐標關系方程
zt1 = z0
data.append([xt1, yt1, zt1])
return data
t_range = np.arange(0, 1 + 0.005, 0.005)#設置環繞一周時間的范圍以及運動間隔時間
t_drange = np.arange(0, 1, 0.005 )
t_len = len(t_range)
t_dlen = len(t_drange)
x0 = 0
y0 = 0
z0 = 0
x1 = x0 + L1 * np.cos(v * t_range)#地球坐標隨時間變化的方程
y1 = y0 + L1 * np.sin(v * t_range)#地球坐標隨時間變化的方程
z1 = z0 + np.zeros(t_len)
f = plt.figure(figsize=(6,6))#繪圖的畫布
ax = f.add_subplot(111,projection='3d')#設置3d坐標系
ax.set_aspect('equal')
ax.set_title("Sun-Earth-Moon Model")#設置圖像標題
ax.plot([0], [0], [0], marker='o', color= 'red', markersize=16)#繪制太陽的各種屬性
ax.plot(x1, y1, z1, 'r')#繪制地球圖像
ax.set_xlim([-(L1 + 2), (L1 + 2)])#地球用動模型在坐標系中的范圍
ax.set_ylim([-(L1 + 2), (L1 + 2)])#地球用動模型在坐標系中的范圍
ax.set_zlim([-5, 5])#地球用動模型在坐標系中的范圍
line, = ax.plot([], [], [], marker='o', color='blue',markersize=8,animated = True)#地球的形狀顏色等屬性
ani = animmation.FuncAnimation(f, updata, frames = data_gen(), init_func = init,interval = 20)#將上述函數對象傳如animmation.FuncAnimation函數以生成連讀的地球運動模型
plt.show()
總結
以上是生活随笔為你收集整理的python 三维地球_用python生成地球运动的动态模拟动态图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个基于verilog的FPGA 的LC
- 下一篇: anaconda python删除pyl