comet1.m

来自「用VC++编写的遗传算法源程序」· M 代码 · 共 50 行

M
50
字号
function comet(x, y, p)

if nargin == 0,
   x = -pi:pi/200:pi;
   y = tan(sin(x))-sin(tan(x));
   p = 0.1;
else
  if nargin < 2, y = x; x = 1:length(y); end
  if nargin < 3, p = 0.10; end
end

%cla
%axis([min(x(finite(x))) max(x(finite(x))) min(y(finite(y))) max(y(finite(y)))])

% Cyan circle head, yellow line body, and magenta line tail.
head = line('color','c','linestyle','o','erase','xor','xdata',x(1),'ydata',y(1));
body = line('color','b','linestyle','-','erase','none','xdata',[],'ydata',[]);
tail = line('color',[0 0 0],'linestyle','-','erase','none','xdata',[],'ydata',[]);

m = length(x);
k = round(p*m);

% 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))
  	for ii = 1:3500
	end
   drawnow
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
  	for ii = 1:3500
	end
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

⌨️ 快捷键说明

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