代码
function EarthMoonCollisionSimulation()% 初始化参数earth_radius = 6371; % 地球半径,单位:公里moon_radius = 1737; % 月球半径,单位:公里distance = 384400; % 地月距离,单位:公里collision_time = 50; % 碰撞所需时间,单位:秒time_steps = 100; % 时间步数% 初始化位置earth_position = [0, 0];moon_position = [distance, 0];% 初始化图形figure;hold on;axis equal;xlim([-distance, distance]);ylim([-distance/2, distance/2]);xlabel('X (km)');ylabel('Y (km)');title('Earth-Moon Collision Simulation');% 画地球和月球earth = rectangle('Position', [earth_position - earth_radius, 2*earth_radius, 2*earth_radius], 'Curvature', [1, 1], 'FaceColor', 'b');moon = rectangle('Position', [moon_position - moon_radius, 2*moon_radius, 2*moon_radius], 'Curvature', [1, 1], 'FaceColor', 'k');% 模拟运动for t = 1:time_steps% 计算当前时间的位移current_time = t / time_steps * collision_time;displacement = (distance / collision_time) * current_time;% 更新月球位置new_moon_position = [distance - displacement, 0];% 更新图形set(moon, 'Position', [new_moon_position - moon_radius, 2*moon_radius, 2*moon_radius]);% 暂停以创建动画效果pause(0.05);end% 显示碰撞结束title('Collision Occurred');hold off;
end
说明
初始化参数:设置地球和月球的半径、地月距离、碰撞所需时间和时间步数。
初始化位置:设置地球和月球的初始位置。
初始化图形:创建一个图形窗口,并设置坐标轴和标题。
画地球和月球:使用rectangle函数画出地球和月球。
模拟运动:通过循环更新月球的位置,模拟地月碰撞的过程。
更新图形:在每个时间步中更新月球的位置,并暂停一段时间以创建动画效果。
显示碰撞结束:在碰撞结束时,更新标题以显示碰撞已发生