代码
function GalaxyRotationSimulation()% 参数设置num_stars = 1000; % 恒星数量galaxy_radius = 1; % 银河系半径rotation_speed = 0.05; % 旋转速度% 生成银河系中的恒星分布theta = 2 * pi * rand(num_stars, 1); % 角度r = galaxy_radius * sqrt(rand(num_stars, 1)); % 半径z = 0.1 * (rand(num_stars, 1) - 0.5); % 添加一些z轴方向的随机性x = r .* cos(theta);y = r .* sin(theta);% 初始化图形figure;h = scatter3(x, y, z, 1, 'w', 'filled');axis equal;axis([-1.5 1.5 -1.5 1.5 -0.5 0.5]);set(gca, 'Color', 'k');xlabel('X');ylabel('Y');zlabel('Z');title('Galaxy Rotation Simulation');% 旋转动画dt = 0.01; % 时间步长for t = 1:1000theta = theta + rotation_speed * dt; % 更新角度x = r .* cos(theta); % 计算新的x坐标y = r .* sin(theta); % 计算新的y坐标set(h, 'XData', x, 'YData', y, 'ZData', z); % 更新图形数据drawnow; % 刷新图形pause(dt); % 暂停以创建动画效果end
end
说明
参数设置:
num_stars: 设置银河系中恒星的数量。
galaxy_radius: 设置银河系的半径。
rotation_speed: 设置银河系旋转的速度。
生成银河系中的恒星分布:
使用极坐标生成恒星的随机分布。
将极坐标转换为直角坐标,并添加一些z轴方向的随机性以模拟银河系的厚度。
初始化图形:
使用scatter3函数绘制三维散点图。
设置坐标轴范围和背景颜色。
旋转动画:
定义时间步长dt。
在循环中更新恒星的位置,以模拟银河系的旋转。
使用drawnow函数更新图形