Update a for loop with if statements
显示 更早的评论
Hello community,
thanks for trying to help me! I would be so happy if this will work.
First of all I created n spheres in a 15 x 7.5 field. They should move with the speed of v, which is always reduced by 0.001
Now thr question: How is it possible to change the direction ( make the element of v negative) when the spheres hit the borders. I tried it like this but it just changes the direction for only "one moment"
a = 15;
b = 7.5;
p=[r + (a-2*r)*rand(n,1),r + (b-2*r)*rand(n,1)];
v = rand(n,2);
for f = 1:1000
temp = v - 0.001 ;
temp(temp < 0.001) = 0 ;
v = temp;
if ~any(v(:))
break
end
p = p+v;
for i = 1:n
% check if ball hit borders
if (p(i,1)<=r)
p(i,1)=r; v(i,1) = -v(i,1); % new direction of speed
end % unfortunately only for one moment
if (p(i,1)>=(a-r))
p(i,1)=(a-r); v(i,1) = -v(i,1);
end
if (p(i,2)<=r)
p(i,2)=r; v(i,2) = -v(i,2);
end
if (p(i,2)>=(b-r))
p(i,2)=(b-r); v(i,2) = -v(i,2);
end
end
end
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 App Building 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!