If condition to check for contact of two balls

3 ビュー (過去 30 日間)
Muthu
Muthu 2013 年 1 月 21 日
Hi,
I have a problem where I drop 2 balls and when they come in contact they should rebound. I have no problem in dropping or rebounding the balls. The main place where I have a problem is giving the condition of the contact. I am using an *if-else loop to check for contact * and I track the centre points of the balls at each time step to check for contact. In my code, the condition for contact never gets satisified even though I can see the balls merging. Any help would be appreciated. Here is the part of the code where I have stored the co-ordinates of the centers of the two balls in separate x and y variables and calculated the distance between the centers..
%x1,y1 is the co-ordinate of center of one fiber and x,y that of the other
x1=get(h2(1),'xdata');
y1=get(h2(1),'ydata');
x=get(h2(2),'xdata');
y=get(h2(2),'ydata');
d=((x1-x)^2 + (y1-y)^2)^0.5;
if d<=(2*r)
-------------
-------------
-------------
  6 件のコメント
Muthu
Muthu 2013 年 1 月 21 日
編集済み: Muthu 2013 年 1 月 21 日
I tried seeing the values and setting the if condition accordingly but still it doesnt execute the if loop.
Image Analyst
Image Analyst 2013 年 1 月 21 日
編集済み: Image Analyst 2013 年 1 月 21 日
Tell us the values of x1, y1, x, and y for which you think it should enter the "if" block but it doesn't. And tell us d and r in that case.

サインインしてコメントする。

採用された回答

Image Analyst
Image Analyst 2013 年 1 月 21 日
I think your tolerances are too small, basically they're zero. Maybe widen it:
if d<=(2*r) * 1.05 % If it's within 5%, or whatever...
  1 件のコメント
Muthu
Muthu 2013 年 1 月 31 日
Thanks, this was the problem. I totally overlooked it.

サインインしてコメントする。

その他の回答 (1 件)

Thorsten
Thorsten 2013 年 1 月 21 日
編集済み: Thorsten 2013 年 1 月 21 日
You forgot the "x = " in the third row. Should read
x = get(h2(2), 'xdata');
  4 件のコメント
Image Analyst
Image Analyst 2013 年 1 月 21 日
編集済み: Image Analyst 2013 年 1 月 21 日
So go up and correct it. Next time you can use control-c and control-v to avoid such mistakes. So your problem remains then.
Muthu
Muthu 2013 年 1 月 21 日
My r is not changing as it is the radius of the ball and its a constant. Both balls are of the same radius.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by