Matlab 太阳 地球 月亮 绕转演示动画

发布时间: 更新时间: 总字数:755 阅读时间:2m 作者: IP上海 分享 网址
专栏文章
  1. Matlab 小球绕跑道运动
  2. Matlab 台球模拟程序 动画演示
  3. Matlab 曲柄滑块机构
  4. Matlab 卫星绕地球旋转演示动画
  5. Matlab 电影动画(Rotate Peak)
  6. Matlab 太阳 地球 月亮 绕转演示动画(当前)
  7. 牛顿环演示的MATLAB程序

Matlab 太阳 地球 月亮 绕转演示动画

代码

%
clear; clc;close all
%定义几组变量.分别代表的含义是:
%相对圆心坐标 半径 最近距离  最远距离  周期  角速度  旋转角度
x0=0; y0=0; r0=80; Lmin0=0;  Lmax0=0;  T0=2160;  w0=0*pi/T0; q0=0;
x1=0; y1=0; r1=40; Lmin1=25; Lmax1=30; T1=1080;  w1=pi/T1;  q1=0;
x2=0; y2=0; r2=20; Lmin2=8;  Lmax2=10; T2=180;   w2=pi/T2;  q2=0;
x3=0; y3=0; r3=10; Lmin3=3;  Lmax3=05; T3=30;    w3=pi/T3;  q3=0;
%初始化
hh=figure('numbertitle','off','name','太阳|地球|月亮|卫星,绕转演示动画——matlabfan');
%设置擦除方式
sun=line(0 ,0 ,'color','r','linestyle','.','erasemode','xor','markersize',r0); %太阳
earth=line(x0,y0,'color','k','linestyle','.','erasemode','xor','markersize',r1); %地球
moon=line(x1,y1,'color','b','linestyle','.','erasemode','xor','markersize',r2); %月亮
satellite=line(x2,y2,'color','g','linestyle','.','erasemode','norm','markersize',r3); %卫星
%添加标注
axis off
title('太阳|地球|月亮|卫星','fontname','宋体','fontsize',9,'FontWeight','demi','Color','black');
text(-20,50,' ');
text(-50,50,'太阳');     %对太阳进行标识
line(-55,50,'color','r','marker','.','markersize',80);
text(-50,40,'地球');     %对地球进行标识
line(-55,40,'color','k','marker','.','markersize',40);
text(-50,30,'月亮');     %对月亮进行标识
line(-55,30,'color','b','marker','.','markersize',20);
text(-50,20,'卫星');    %对卫星进行标识
line(-55,20,'color','g','marker','.','markersize',10);
%绘制轨道
s1=[0:.01:2*pi];
line(Lmax1*cos(s1),Lmin1*sin(s1),'linestyle',':'); %画地球的轨迹,是个椭圆
axis([-60,60,-60,60]);   %调整坐标轴
%开始画图
t =0;
while 1
    if ~ishandle(hh),return,end
    q0=t*w0; q1=t*w1; q2=t*w2; q3=t*w3; t=t+1;  %设置运动规律
    if t >= 4320; t = 0; end  %到了一个周期就重置
    x0 = Lmax0 * cos(q1); y1 = Lmin0 * sin(q1); %设置太阳圆心的坐标(在这个程序里,太阳圆心的坐标是不变的,所以可以省略)
    x1 = x0 + Lmax1 * cos(q1); y1 = y0 + Lmin1 * sin(q1); %设置地球圆心的坐标
    x2 = x1 + Lmax2 * cos(q2); y2 = y1 + Lmin2 * sin(q2); %设置月亮圆心的坐标
    x3 = x2 + Lmax3 * cos(q3); y3 = y2 + Lmin3 * sin(q3); %设置卫星圆心的坐标
    set(sun,'xdata',x0,'ydata',y0);    %画太阳
    set(earth,'xdata',x1,'ydata',y1);    %画地球
    set(moon,'xdata',x2,'ydata',y2);    %画月亮
    set(satellite,'xdata',x3,'ydata',y3);  %画卫星
    line('xdata',x2,'ydata',y2,'color','y');   %设置月亮的轨迹
    line('xdata',x3,'ydata',y3,'color','r');   %设置卫星的轨迹
    drawnow;
end

效果

Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数