Python画雷达扇面探测动图

📅 发布时间:2026/8/23 22:58:31
Python画雷达扇面探测动图 import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.patches import Wedgefrom matplotlib.animation import FuncAnimation# 配置参数 # 雷达参数radar_x, radar_y 0, 0 # 雷达位置radar_range 80 # 雷达最大探测距离scan_start_angle 30 # 扫描起始角(度)scan_end_angle 120 # 扫描终止角(度)scan_speed 2 # 每帧转动角度# 航迹参数total_points 50# 模拟飞行器航迹平滑曲线t np.linspace(0, 4 * np.pi, total_points)track_x 20 12 * t * np.cos(t)track_y 20 12 * t * np.sin(t)# 创建画布 fig, ax plt.subplots(figsize(8, 8))ax.set_xlim(-100, 100)ax.set_ylim(-100, 100)ax.set_aspect(equal)ax.grid(True, alpha0.3)ax.set_title(航迹与雷达覆盖动态展示)ax.set_xlabel(X)ax.set_ylabel(Y)# 绘制雷达站点radar_point, ax.plot(radar_x, radar_y, ro, markersize8, label雷达站)# 航迹完整轨迹线 当前位置点track_line, ax.plot([], [], b-, linewidth1.5, label历史航迹)track_now, ax.plot([], [], go, markersize6, label当前位置)# 雷达扇形覆盖Wedge楔形wedge Wedge((radar_x, radar_y), radar_range, scan_start_angle, scan_start_angle,widthradar_range, colororange, alpha0.3)ax.add_patch(wedge)ax.legend(locupper right)# 动画更新函数 current_scan_angle scan_start_angledef update(frame):global current_scan_angle# 1. 更新雷达扫描扇形结束角度current_scan_angle scan_speed# 扫描到头后折返if current_scan_angle scan_end_angle:current_scan_angle scan_start_anglewedge.set_theta1(scan_start_angle)wedge.set_theta2(current_scan_angle)# 2. 更新航迹绘制到当前帧为止的轨迹idx min(frame, total_points - 1)track_line.set_data(track_x[:idx1], track_y[:idx1])track_now.set_data(track_x[idx], track_y[idx])return track_line, track_now, wedge# 启动动画 ani FuncAnimation(fig, update, frames150, interval50, blitTrue)plt.show()# 如果需要保存视频取消下面注释需要ffmpeg# ani.save(radar_track.gif, writerpillow, fps20)运行结果如下