comet3a.m
来自「王小平《遗传算法——理论、应用与软件实现》随书光盘」· M 代码 · 共 52 行
M
52 行
function comet3(x,y,z,p)
if nargin == 0,
z = -pi:pi/500:pi;
y = cos(3*z);
x = sin(5*z);
p = 0.1;
else
if nargin < 3, z = x; x = 1:length(z); y = 1:length(z); end
if nargin < 4, p = 0.10; end
end
%clf
%axis([min(x(finite(x))) max(x(finite(x))) min(y(finite(y))) ...
% max(y(finite(y))) min(z(finite(z))) max(z(finite(z)))])
% Cyan circle head, yellow line body, and magenta line tail.
head = line('color','c','linestyle','o','erase','xor','xdata',x(1),'ydata',y(1), ...
'zdata',z(1));
body = line('color','b','linestyle','-','erase','none','xdata',[],'ydata',[], ...
'zdata',[]);
tail = line('color',[0 0 0],'linestyle','-','erase','none','xdata',[],'ydata',[], ...
'zdata',[]);
m = length(z);
k = round(p*m);
% Grow the body
for i = 2:k+1
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
drawnow
end
% Primary loop
m = length(x);
for i = k+2:m
j = i-1:i;
set(head,'xdata',x(i),'ydata',y(i),'zdata',z(i))
set(body,'xdata',x(j),'ydata',y(j),'zdata',z(j))
set(tail,'xdata',x(j-k),'ydata',y(j-k),'zdata',z(j-k))
drawnow
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),'zdata',z(j-k))
drawnow
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?