python 三维地球_用python生成地球运动的动态模拟动态图
python作為一門簡單易學(xué)且應(yīng)用范圍極廣的語言有著其他語言無法比擬的優(yōu)勢,通過python可以實(shí)現(xiàn)各種各樣的功能,例如我們可以利用python matplotlib的繪圖庫實(shí)現(xiàn)各種動態(tài)模擬仿真,在科學(xué)實(shí)驗(yàn)中有著極大的應(yīng)用價值。下列是通過python實(shí)現(xiàn)地球公轉(zhuǎn)的動態(tài)模擬圖:
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 #地球環(huán)繞軌跡的半徑
v = 2*np.pi #地球運(yùn)動的角速度
def updata (data): #隨時間t變換設(shè)置新的地球位置的坐標(biāo),也即是隨animmation.FuncAnimation函數(shù)的幀數(shù)參數(shù)變化每一幀的不同坐標(biāo)位置的圖片對象參數(shù)
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變換的地球坐標(biāo),也即是animmation.FuncAnimation函數(shù)的幀數(shù)參數(shù)
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)#地球與太陽坐標(biāo)關(guān)系方程
yt1 = y0 + L1 * np.sin(v * t)#地球與太陽坐標(biāo)關(guān)系方程
zt1 = z0
data.append([xt1, yt1, zt1])
return data
t_range = np.arange(0, 1 + 0.005, 0.005)#設(shè)置環(huán)繞一周時間的范圍以及運(yùn)動間隔時間
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)#地球坐標(biāo)隨時間變化的方程
y1 = y0 + L1 * np.sin(v * t_range)#地球坐標(biāo)隨時間變化的方程
z1 = z0 + np.zeros(t_len)
f = plt.figure(figsize=(6,6))#繪圖的畫布
ax = f.add_subplot(111,projection='3d')#設(shè)置3d坐標(biāo)系
ax.set_aspect('equal')
ax.set_title("Sun-Earth-Moon Model")#設(shè)置圖像標(biāo)題
ax.plot([0], [0], [0], marker='o', color= 'red', markersize=16)#繪制太陽的各種屬性
ax.plot(x1, y1, z1, 'r')#繪制地球圖像
ax.set_xlim([-(L1 + 2), (L1 + 2)])#地球用動模型在坐標(biāo)系中的范圍
ax.set_ylim([-(L1 + 2), (L1 + 2)])#地球用動模型在坐標(biāo)系中的范圍
ax.set_zlim([-5, 5])#地球用動模型在坐標(biāo)系中的范圍
line, = ax.plot([], [], [], marker='o', color='blue',markersize=8,animated = True)#地球的形狀顏色等屬性
ani = animmation.FuncAnimation(f, updata, frames = data_gen(), init_func = init,interval = 20)#將上述函數(shù)對象傳如animmation.FuncAnimation函數(shù)以生成連讀的地球運(yùn)動模型
plt.show()
總結(jié)
以上是生活随笔為你收集整理的python 三维地球_用python生成地球运动的动态模拟动态图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一个基于verilog的FPGA 的LC
- 下一篇: GitHub:一份玩转 GitHub 的