我有一个算法的问题,我有一个x,y坐标和低和上限的空间。我在这个空间内也有一些自由移动的粒子。 我希望任何粒子都留在我的空间中,如果其中一个粒子正在移出,我需要改变它的方向。如果没有办法带回粒子,我可以在我的空间内的随机点创建一个粒子。 我正在考虑使用for循环来检查每个粒子,当一个移出时将其带回到对面的方向,但我不会我知道如何写它。
答案 0 :(得分:3)
如果没有您的信息,我会猜测我是如何做到的:
part_location=rand(10,2); % 10 particles
part_direction=rand(10,2); % non-normalized direction so it has also speed
boundaries=[0,0;1 1]; % square boundary from 0 to 1; not going to use it so I dont write your whole code.
for ii=1:nsteps_simulation
% update particle position using direction
% do it
part_location= ... ?
% check if particles are inside the boundary
inside=sum(part_location>0 && part_location<1,2)==2;
outside=~inside;
% now you know which particles are inside and wich outside.
% Inverting the direction should be easy
part_direction=...?
end
如果代码不完整,请道歉,但没有人会为您编写代码! 但是,我希望我已经为您提供了一个如何为此设计算法的清晰结构。当然,根据您的数据/应用程序,您需要稍微修改一下结构,但这可能是您在没有更多信息的情况下获得的最多或者向我们展示您尝试过的内容!