2016-04-27 9 views
0

何らかの理由で、現在の速度の符号をMATLABで反転しようとすると、何も起こりません。符号反転が機能しない

たとえば、velocity_x = 3、velocity_y = 3(私は円の衝突を描いています)から始めます。チェック条件の内部今

は私が符号を逆にする必要があると私は、次の操作を行います

% This doesn't work: 
velocity_x = -velocity_x; 
velocity_y = -velocity_y; 

これらの表現が動作していないようです。変数リストに-3と表示されているにもかかわらず、ボールはちょうど痙攣し、反対方向には進まない。しかし、単純に数字を入力するとうまくいきます!

% This works perfectly fine: 
velocity_x = -3; 
velocity_y = -3; 

ここでは全体のループです:

velocity_x = 3; 
velocity_y = 3; 

% While is not commanded to exit the loop 
while exit_loop == false 

[b1_x_c, b1_y_c] = getCenter(b1); 

xMove(b1, velocity_x); 
yMove(b1, velocity_y); 

if ((b1_x_c + radius + 1) >= WINDOW_WIDTH) || ((b1_y_c + radius + 1) >= WINDOW_HEIGHT) 

    velocity_x = -1 * velocity_x; 
    velocity_y = -1 * velocity_y; 

elseif ((b1_x_c - radius - 1) <= 0) || ((b1_y_c - radius - 1) <= 0) 

    velocity_x = (-1) * velocity_x; 
    velocity_y = (-1) * velocity_y; 

end 

redraw; 


end % of the while loop 

答えて

1

ifelseif条件を満たしてどこが地域に来るとき、符号は各サイクル毎ターンを変えることができる - ようにベロシティ値3 -3 3 -3とは...

標識がすでに変更されていることを示すにはフラグを使用する必要があり、その領域が離れるまで変更しないでください(一種のヒステリシス)

+0

Aaaah!あなたが正しい!ありがとうございました! – Micard