代码
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函数画出地球和月球。
模拟运动:通过循环更新月球的位置,模拟地月碰撞的过程。
更新图形:在每个时间步中更新月球的位置,并暂停一段时间以创建动画效果。
显示碰撞结束:在碰撞结束时,更新标题以显示碰撞已发生