h=figure('numbertitle','off','name','卫星绕地球旋转演示动画——matlabfan');%设置标题名字
s1=0:.01:2*pi;
hold on;
axis equal;%建立坐标系
axis off;%除掉Axes
r1=10;%地球到太阳的平均距离
r2=3;%卫星的轨道半径
w1=1;%设置地球公转角速度
w2=12;%设置卫星绕地球公转角速度
t=0;%初始时刻
pausetime=.002;%设置视觉暂留时间
sita1=0;
sita2=0;%设置开始它们都在水平线上
set(gcf,'doublebuffer','on') %消除抖动
plot(-20,18,'color','r','marker','.','markersize',40);
text(-17,18,'太阳');%对太阳进行标识
plot(-20,16,'color','b','marker','.','markersize',20);
text(-17,16,'地球');%对地球进行标识
plot(-20,14,'color','w','marker','.','markersize',13);
text(-17,14,'卫星');%对卫星进行标识
plot(0,0,'color','r','marker','.','markersize',60);%画太阳
plot(r1*cos(s1),r1*sin(s1));%画地球公转轨道
set(gca,'xlim',[-20 20],'ylim',[-20 20]);
p1=plot(r1*cos(sita1),r1*sin(sita1),'color','b','marker','.','markersize',30);%画地球初始位置
l1=plot(r1*cos(sita1)+r2*cos(s1),r1*sin(sita1)+r2*sin(s1));%画卫星绕地球的公转轨道
p2x=r1*cos(sita1)+r2*cos(sita2);
p2y=r1*sin(sita1)+r2*sin(sita2);
p2=plot(p2x,p2y,'w','marker','.','markersize',20);%画卫星的初始位置
orbit=line('xdata',p2x,'ydata',p2y,'color','r');%画卫星的运动轨迹
while 1
    if ~ishandle(h),return,end
    set(p1,'xdata',r1*cos(sita1),'ydata',r1*sin(sita1));%设置地球的运动过程
    set(l1,'xdata',r1*cos(sita1)+r2*cos(s1),'ydata',r1*sin(sita1)+r2*sin(s1));%设置卫星绕地球的公转轨道的运动过程
    ptempx=r1*cos(sita1)+r2*cos(sita2);
    ptempy=r1*sin(sita1)+r2*sin(sita2);
    set(p2,'xdata',ptempx,'ydata',ptempy);%设置卫星的运动过程
    p2x=[p2x ptempx];
    p2y=[p2y ptempy];
    set(orbit,'xdata',p2x,'ydata',p2y);%设置卫星运动轨迹的显示过程
    sita1=sita1+w1*pausetime;%地球相对太阳球转过的角度
    sita2=sita2+w2*pausetime;%卫星相对地球转过的角度
    pause(pausetime); %视觉暂停
    drawnow %刷新屏幕，重绘
end
