Bouncing Ball Tools

MisterX b.xavier at
Fri Feb 25 12:47:06 CST 2005

Good Effort!!!

Im impressed! ;)


> -----Original Message-----
> From: use-revolution-bounces at 
> [mailto:use-revolution-bounces at] On Behalf Of 
> Jim Hurley
> Sent: Friday, February 25, 2005 19:15
> To: use-revolution at
> Subject: ANN: Bouncing Ball Tools
> (It took me two years to figure out that ANN meant Announcement.)
> There was some discussion  recently on how to motive oneself. 
> Being retired, I have entered that enviable time of life when 
> I do whatever I feel like-within reason. This does not 
> present a difficult motivational problem.
> But if you're doing what you feel like, the problem becomes 
> one of stopping, letting go. I'm sure many of you have this 
> problem when you are engaged on a Run Rev problem that 
> strikes your fancy.
> Well, I got intrigued with simulations, all kinds. Recently I 
> have taken up bouncing balls. And I am having a hard time letting go.
> So here is what I have tried so far:
> 1) Let the ball flex when it strikes the wall. Easy to do. 
> Just decrease the width and increase the height of the 
> graphic as the ball strikes a vertical wall. And vice-versa 
> for horizontal walls.
> 2) This flexing is harder to do with walls that are not 
> vertical or horizontal, so I next considered a ball bounding 
> about within a polygon of arbitrary shape. The first problem 
> was keeping the ball in the polygon. I tried the within 
> function but the ball kept escaping. 
> So I used the perpDist function I posted a while back for 
> collision detection between the ball and the individual lines 
> that make up the polygon. This is the perpendicular distance 
> between a point (the ball
> loc) and a line (polygon line.) The flexing was a bit 
> simplistic. I just flexed the radius.
> 3) But I found there was a problem if the polygon was not 
> concave, i.e. all interior angle less than 180 degrees. Here 
> it became necessary to introduce a new tool, a new function 
> to determine whether the collision took place between the end 
> points of the line. 
> That tool was the perpProj function, which drops a 
> perpendicular from any point (the ball loc) to any line 
> (polygon line.) It was easy to determine when this projection 
> point was between the end points of the line.
> 4) I had very limited success in my attempt to deal with 
> collisions between a ball and isolated lines, so I took up 
> ball-on-ball collisions. This is a very conventional problem, 
> just move the ball incrementally until the distance between 
> balls is less than the combined radii. But I found three 
> problems: (1) accuracy (2) smooth motion and (2) the screen 
> refresh problem in OS X. I wanted to move the ball from one 
> point to the collision point using the Run Rev Move command, 
> not in incremental steps. That necessitated predicting the 
> collision point in advance. This took my down a long path.
> Which is detailed, along with the other three problems above, in the
> stack: BouncingBallTools.rev which can be loaded in Run Rev 
> by running this line in the message box:
> go url
> And wait a little bit.
> This is not an application, not even close, but a series of 
> tools for those of you who want to develop a Pin Ball 
> Construction Set.
> Jim
> _______________________________________________
> use-revolution mailing list
> use-revolution at

More information about the use-livecode mailing list