三维飞行动图

该代码示例使用Python加载飞机3D模型和飞行轨迹数据,通过matplotlib创建一个可缩放的三维轴。在循环中,它更新飞机的位置和旋转角度,模拟飞机沿指定路线飞行的动画效果。用户可以交互式地旋转和缩放图形来查看不同视角。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三维模型加载后可以用model函数形成一个Model对象,绘图缩放时大小固定,可以设置位置、旋转角度、缩放比例等。下面的例子加载了一个飞机三维模型以及包括经纬度和高度数组的飞行路线,在循环中设置飞机的位置,根据当前点和下一个的坐标确定旋转角度(只旋转Z轴,飞机保持水平)。运行脚本可以看到飞机沿设定的路线飞行的三维动图。可以用鼠标旋转、缩放三维图形进行更多角度的观察。

import time

# Read airplane trajectory data
fn = 'D:/Temp/ascii/guiji.csv'
df = DataFrame.read_table(fn, delimiter=',', format='%i%{yyyy/M/dd H:mm}D%5f')
lon = df['Longitude'].values
lat = df['Latitude'].values
alt = df['Altitude'].values
n = len(lon)

# Read airplane model data
mfn = 'D:/Temp/3d/11805_airplane_v2_L2.obj'
T, x, y, z, normal = plt.load_obj_model(mfn)

# Plot
ax = axes3d(axes_zoom=True)
lighting(mat_specular=1)
#geoshow('cn_province', edgecolor='b')
ax.plot(lon, lat, alt, linewidth=2, color='r')
xlim(111, 113)
ylim(40, 41)
zlim(0, 5000)
xlabel('Longitude')
ylabel('Latitude')
zlabel('Altitude (m)')
antialias()
ap = model(T, x, y, z, facecolor='c', scale=0.3, location=[lon[0],lat[0],alt[0]])
n = len(lon)
for i in range(0, n-1, 20):
    print(i)
    ap.setLocation([lon<i>, lat<i>, alt<i>])
    a = np.rad2deg(np.atan2(lat[i+1]-lat<i>, lon[i+1]-lon<i>))
    ap.setRotation([0,0,a-90])
    plt.draw()
    time.sleep(0.05)

三维飞行路线动图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值