matlabにおいて、ある領域内で4機端末を動かし、跳ね返るプログラム
ある22×22の領域にて外周に4機の端末を動かします。
各辺上に動かし例えばcase0であれば (1,18),(1,5)の間を行き来するプログラムを作りたいです。
しかし以下のプログラムでは,(1,18)以降ずっと(1,18)になってしまいました。
解決策があれば教えてください。
プログラムを一部抜粋して載せています。
function [x, y, xi, yi] = moveTerminal2(obj)
switch obj.wall_
case 0
v = 1;
xi = 1;
yi = obj.yi_;
if(yi >= 18)
yi = obj.yi_-1;
v = -v;
elseif(yi <= 5)
yi = obj.yi_+1;
v = -v;
end
case 1
v = -1;
yi = 1;
xi = obj.yi_;
if(yi >= 18)
xi = obj.xi_-1;
v = -v;
elseif(xi <= 5)
xi = obj.xi_+1;
v = -v;
end
case 2
v = -1;
xi = obj.n1_;
yi = obj.yi_;
if(yi >= 18)
yi = obj.yi_-1;
v = -v;
elseif(yi <= 5)
yi = obj.yi_+1;
v = -v;
end
case 3
v = 1;
yi = obj.n2_;
xi = obj.yi_;
if(yi >= 18)
xi = obj.xi_-1;
v = -v;
elseif(xi <= 5)
xi = obj.xi_+1;
v = -v;
end
end