对于我目前在 matlab 中的项目,我正在模拟感染在全球的传播。我用来让感染跳跃的主要方法是预设机场位置。我还通过动画线条将感染从一个机场传播到另一个机场来展示它们。主地图是设置为默认 2D 视图的 3d 冲浪图,并且使用 plot3 绘制线条,它也在 2D 视图中。
除了一个问题,我一切正常。我需要在同一个图中同时为两个 3D 图表设置动画,但我需要让地图的动画保持不开启,同时允许连接机场的线的动画保持开启,以便所有路径仍将显示。
关于如何做到这一点的任何想法?
让我举一个动画的例子,也许它会有所帮助:
figure('Renderer','zbuffer')
%# this is the surface we will be animating
Z = peaks;
hSurf = surf(Z);
axis tight; %# fix axis limits
%# these are some fixed lines
hLine(1) = line([0 50], [0 50], [-5 5], 'Color','r' ,'LineWidth',4);
hLine(2) = line([40 0], [0 40], [-5 5], 'Color','g' ,'LineWidth',4);
%# some text as well
hTxt = text(10,40,5, '0');
%# iterations
for j = 1:20
%# animate the Z-coordinates of the surface
set(hSurf, 'ZData',sin(2*pi*j/20)*Z)
%# change text
set(hTxt, 'String',num2str(j))
%# flush + a small delay
pause(0.05)
end
请注意我们如何保存图形对象(表面、文本和线条)的句柄,以便我们以后可以操作它们。
我想出了一种方法,方法是保存我不想更改的所有内容的句柄,始终保持不变,然后在添加新版本之前使用删除功能直接删除以前的版本。我还添加了 uistack 以便它们按照我想要的顺序出现在屏幕上