Bouncing Ball Tools
b.xavier at internet.lu
Fri Feb 25 12:47:06 CST 2005
Im impressed! ;)
> -----Original Message-----
> From: use-revolution-bounces at lists.runrev.com
> [mailto:use-revolution-bounces at lists.runrev.com] On Behalf Of
> Jim Hurley
> Sent: Friday, February 25, 2005 19:15
> To: use-revolution at lists.runrev.com
> 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 http://home.infostations.net/jhurley/BouncingBallTools.rev
> 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.
> use-revolution mailing list
> use-revolution at lists.runrev.com
More information about the use-livecode