2dボックスに円形粒子のモーションをシミュレートするコードを記述しました。彼らが箱の外に出るたびに、箱の中と壁の近くに入れます。私は2つの円の中心間の距離が2R以下になると、それらの中心を結ぶ線に沿って円の中心間の距離が離れるように分離することを意味するコードの直径(2R)をコードに追加したい2Rに等しい。Matlabで互いに衝突できないランダムウォーカーをシミュレート
パーティクルの重なりを避けるコードを提案する人はいませんか?
これが重複している私のコードでは考慮されていません。ここで
clear all
close all
l = 224; nn = 800; %number of particles
time = 1000; dd = 1;
x= l*rand(1,nn);
y= l*rand(1,nn);
for t = 1:time;
x= x + rand(1,nn)-0.5* ones(1,nn);
y=y+rand(1,nn)-0.5* ones (1,nn);
index = (x < 0); x(index) = abs(normrnd(0,1,1,nnz(index)));
index = (y < 0); y(index) = abs(normrnd(0,1,1,nnz(index)));
index = (x > l); x(index) = l-abs(normrnd(0,1,1,nnz(index)));
index = (y > l); y(index) = l-abs(normrnd(0,1,1,nnz(index)));
end
だから、それが壁に接触するまで各粒子は、それが「跳ね返る」と、直進し、あなたはまた、粒子の粒子を含めたいです衝突? – Wolfie
2つの円の中心間の距離が2R以下になると、各ステップの方向と長さのステップが変化します(乱数を使用しています).2つの円の中心間の距離が2R以下になると、円の中心の数が@Wolfieと等しくなる –
お願いしますか? @ Wolfie –