Matlab 圆内运动的粒子

Matlab 圆内运动的粒子,matlab,loops,for-loop,particles,Matlab,Loops,For Loop,Particles,因此,我需要在圆内的随机位置每一步产生10个粒子,以随机方向移动,当它撞击主圆的壁时,它会反弹回来,速度不变 我定义了大圆: yc=0; rc=5; ang_c=0:0.01:2*pi; xpc=rc*cos(ang_c); ypc=rc*sin(ang_c); plot(xc+xpc,yc+ypc,'k'); 现在只绘制一个粒子: r=0.05; x=rand; y=rand; ang=0:0.01:2*pi; xp=r*cos(ang); yp=r*sin(ang); plot(x

因此,我需要在圆内的随机位置每一步产生10个粒子,以随机方向移动,当它撞击主圆的壁时,它会反弹回来,速度不变

我定义了大圆:

yc=0;
rc=5;
ang_c=0:0.01:2*pi; 
xpc=rc*cos(ang_c);
ypc=rc*sin(ang_c);
plot(xc+xpc,yc+ypc,'k'); 
现在只绘制一个粒子:

r=0.05;
x=rand;
y=rand;

ang=0:0.01:2*pi; 
xp=r*cos(ang);
yp=r*sin(ang);
plot(x+xp,y+yp,'b'); 

现在,如何让粒子在圆中移动?

这里是算法的概要

  • 定义圆(原点、半径)
  • 创建nParticle-by-2阵列
    粒子位置
    。用圆内的随机坐标填充它
  • 绘制粒子位置,保持通过
    Plot
  • 创建nParticle-by-2阵列
    particleSpeeds
    。用随机速度矢量(即x和y分量)填充它。确保向量的范数远小于圆的半径,至少在最初是这样
  • 编写更新粒子位置的循环:
    • 粒子位置=粒子位置+粒子速度
    • 对于任何位于圆外的粒子位置,计算粒子与圆相交的位置,并反映该粒子的粒子速度。这需要稍微修改一下三角函数
    • 更新绘图:
      set(绘图句柄,'xData',particlePositions(:,1),'yData',particlePositions(:,2))