If condition to check for contact of two balls
3 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
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
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 件)
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
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.
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!