用MATLAB绘制地球围绕太远运动而月球围绕地球运动

绘制

MATLAB代码:

clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;

% 初始化参数
num_frames = 1000; % 动画帧数
G=200;
dt = 0.01; % 时间步长

% 设置太阳、地球和月球的初始位置和半径
sun_position = [0, 0];
earth_radius = 1;
moon_radius = 0.3;
earth_orbit_radius = 2;
moon_orbit_radius = 0.5; % 相对于地球的轨道半径

% 地球和月球的初始角度(相对于太阳)
earth_angle = 0;
moon_angle = pi/4; % 为了看清嵌套效果,可以给月球一个初始角度

% 绘制太阳
figure('Position',[100 100 500 500]);
axis equal;
xlim([-earth_orbit_radius*2 earth_orbit_radius*2]);
ylim([-earth_orbit_radius*2 earth_orbit_radius*2]);
hold on;
plot(sun_position(1), sun_position(2), 'y.','markersize',150); % 绘制太阳

% 绘制动画
for k = 1:num_frames
    % 更新地球和月球的角度
    earth_angle = earth_angle + 2 * pi * dt; % 假设地球每年转一圈
    moon_angle = moon_angle + 2 * pi * 13 * dt; % 假设月球每月转一圈(简化版,实际上更复杂)
    
    % 地球的位置
    earth_position = sun_position + [earth_orbit_radius * cos(earth_angle), earth_orbit_radius * sin(earth_angle)];
    
    % 月球的位置(相对于地球)
    moon_relative_position = [moon_orbit_radius * cos(moon_angle), moon_orbit_radius * sin(moon_angle)];
    moon_position = earth_position + moon_relative_position;
    
    % 绘制地球和月球
    plot(earth_position(1), earth_position(2), 'b.','markersize',30); % 绘制地球
    plot(moon_position(1), moon_position(2), 'k.', 'markersize',10); % 绘制月球
    
    % 绘制地球和月球的轨道(可选)
    t = linspace(0, 2*pi, G);
    earth_orbit = repmat(sun_position,1,G) + [earth_orbit_radius * cos(t), earth_orbit_radius * sin(t)];
    plot(earth_orbit(:,1), earth_orbit(:,2), 'b-');
    moon_orbit = repmat(earth_position,1,G) + [moon_orbit_radius * cos(t + moon_angle - pi/2), moon_orbit_radius * sin(t + moon_angle - pi/2)]; % 偏移pi/2以从地球开始绘制
    plot(moon_orbit(:,1), moon_orbit(:,2), 'y-');
    
    % 更新图形
    drawnow;
    
    % 控制动画速度
    pause(0.1);
    
    % 清除旧的月球和地球位置(可选,以便只显示当前位置)
    % cla;
    hold on;
    plot(sun_position(1), sun_position(2), 'y.','markersize',150); % 绘制太阳
end

% 动画结束,保持图形窗口打开
hold off;

程序结果

相关推荐

  1. uniapp地图围栏代码

    2024-06-11 09:08:05       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 09:08:05       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 09:08:05       5 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 09:08:05       4 阅读
  4. Python语言-面向对象

    2024-06-11 09:08:05       6 阅读

热门阅读

  1. 详细说说机器学习在工业制造的应用

    2024-06-11 09:08:05       11 阅读
  2. STM32 ST-LINK Utility的下载安装使用说明如下:

    2024-06-11 09:08:05       23 阅读
  3. 观察者模式

    2024-06-11 09:08:05       15 阅读
  4. C#面:什么是DLL文件,使用它们有什么好处

    2024-06-11 09:08:05       19 阅读
  5. ArcGIS要点和难点以及具体应用和优缺点介绍

    2024-06-11 09:08:05       19 阅读
  6. 70、最长上升子序列

    2024-06-11 09:08:05       10 阅读
  7. 国内外网络安全现状分析

    2024-06-11 09:08:05       17 阅读