我最近在MATLAB中玩过动画流程。
虽然我设法让以下工作正常,但我想知道是否有办法从起始位置不断地播种新粒子,即当粒子离开视图时,新的粒子可以出现在起始位置。 / p>
% Node points
x = 0:100;
y = 0:100;
% Grid of all points
[X,Y] = meshgrid(x, y);
% Coefficients for Velocity field
K = 10;
C = 10;
% Velocity vector calcs (wavy example flow)
Vx = K + C * sin(x);
Vy = (K/2) + (C/2) * cos(y);
% Grid of velocity vectors
[VX,VY] = meshgrid(Vx, Vy);
% Plots the velocity streamslice
streamslice(X, Y, VX, VY);
% Starting points for the particles
Sx = 0;
Sy = 0:20:100;
% Grid of starting points
[SX,SY] = meshgrid(Sx, Sy);
% stream2 computes 2D streamline data
vertices = stream2(X, Y, VX ,VY, SX, SY);
% Interpolates stream line velocities
iverts = interpstreamspeed(X, Y, VX, VY, vertices, 0.05);
% Adds animated stream particles
streamparticles(iverts,1,'Animate',100,...
'ParticleAlignment','on',...
'MarkerFaceColor','red',...
'Marker','o');
编辑:跟进问题:如果我想绘制随时间变化的瞬态速度,这只是在循环中绘制,还是这种动画不起作用,因为streamparticle函数不知道在哪里粒子是前一个时间步?
由于
答案 0 :(得分:0)
为了从起始位置连续播种新粒子,请尝试在“变换”之后增加第一个数字。在streamparticles功能:
E.g。 %添加动画流粒子 streamparticles(iverts,5,'动画',100,... ' ParticleAlignment''的' ... ' MarkerFaceColor''红' ... '标记''○&#39);