⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 my_comet_xy.m

📁 一个小小的c语言编程
💻 M
字号:
function my_comet_xy(x,y,p,time)  %函数体参量表一定没有常数或代数式.x,y平面的轨线彗星图及z(t)坐标同步运行
global X3 t b r
figure(3)
set(gcf,'unit','normalized','position',[0.31,0.53,0.64,0.35]);
set(gcf,'defaultuicontrolunits','normalized');
set(gcf,'defaultuicontrolfontsize',12);
set(gcf,'defaultuicontrolfontname','隶书');
str='X-Y平面彗星图';
set(gcf,'name',str,'numbertitle','off');	
h_axes=axes('position',[0.05,0.2,0.6,0.7]);	 
set(h_axes,'xlim',[-40,40],'ylim',[-40,40]);

singularity1_x=0;singularity1_y=0;
singularity2_x=(b*(r-1))^(1/2);singularity2_y=(b*(r-1))^(1/2);
singularity3_x=-(b*(r-1))^(1/2);singularity3_y=-(b*(r-1))^(1/2);
plot(x,y,'W'),hold on

if r<=1
    plot(singularity1_x,singularity1_y,'k.','MarkerSize',20)       %画奇点
    text(singularity1_x,singularity1_y,' O')
      else 
   plot(singularity1_x,singularity1_y,'k.','MarkerSize',20)       %画奇点
   text(singularity1_x,singularity1_y,' O')
   plot(singularity2_x,singularity2_y,'k.','MarkerSize',20)       %画奇点
   text(singularity2_x,singularity2_y,' C+')
   plot(singularity3_x,singularity3_y,'k.','MarkerSize',20)       %画奇点
   text(singularity3_x,singularity3_y,' C-')
end

h_my_comet_xy_t=uicontrol(gcf,'style','text',...	
   'position',[0.77,0.64,0.11,0.13],...
   'string',['t=',sprintf('%1.4g\',0)]);
h_my_comet_xy_z=uicontrol(gcf,'style','text',...	
   'position',[0.77,0.44,0.11,0.13],...
   'string',['z=',sprintf('%1.4g\',0)]);

if nargin == 0, error('Not enough input arguments.'); end
if nargin < 2, y = x; x = 1:length(y); end
if nargin < 3, p = 0.10; end

ax = newplot;
if ~ishold,
  axis([min(x(isfinite(x))) max(x(isfinite(x))) ...
        min(y(isfinite(y))) max(y(isfinite(y)))])
end
co = get(ax,'colororder');

if size(co,1)>=3,
  % Choose first three colors for head, body, and tail
  head = line('color',co(1,:),'marker','^','erase','xor', ...
              'xdata',x(1),'ydata',y(1));
  body = line('color',co(2,:),'linestyle','-','erase','none', ...
              'xdata',[],'ydata',[]);
  tail = line('color',co(3,:),'linestyle','-','erase','none', ...
              'xdata',[],'ydata',[]);
else
  % Choose first three colors for head, body, and tail
  head = line('color',co(1,:),'marker','o','erase','xor', ...
              'xdata',x(1),'ydata',y(1));
  body = line('color',co(1,:),'linestyle','--','erase','none', ...
              'xdata',[],'ydata',[]);
  tail = line('color',co(1,:),'linestyle','-','erase','none', ...
              'xdata',[],'ydata',[]);
end

m = length(x);
k = round(p*m);
q=1;
% Grow the body
for i = 2:k+1
   j = i-1:i;
   set(head,'xdata',x(i),'ydata',y(i))
   set(body,'xdata',x(j),'ydata',y(j))
   pause(time)
   drawnow
   set(h_my_comet_xy_t,'string',['t= ',sprintf('%1.4g\',t(q))]);
   set(h_my_comet_xy_z,'string',['z= ',sprintf('%1.4g\',X3(q))]); 
   q=q+1;
                                                %开始时速度
end

% Primary loop
for i = k+2:m
   j = i-1:i;
   set(head,'xdata',x(i),'ydata',y(i))
   set(body,'xdata',x(j),'ydata',y(j))
   set(tail,'xdata',x(j-k),'ydata',y(j-k))
   drawnow
   pause(time)                   %连点速度
   set(h_my_comet_xy_t,'string',['t= ',sprintf('%1.4g\',t(q))]);
   set(h_my_comet_xy_z,'string',['z= ',sprintf('%1.4g\',X3(q))]); 
   q=q+1;
end

% Clean up the tail
for i = m+1:m+k
   j = i-1:i;
   set(tail,'xdata',x(j-k),'ydata',y(j-k))
    drawnow
                      %刷新颜色
end
xlabel('x'),ylabel('y'),       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -