2
\$\begingroup\$

I'm going slightly around the houses on this one. I originally started a thread over on Stack Overflow about it but then it seemed to diverge into mathematics, with no joy from the SO community over there (https://math.stackexchange.com/questions/295485/modify-formula-for-bouncing-object-to-increase-restitution). So my final attempt before I admit complete failure is to ask here. I don't know if you guys do JavaScript, nor how similar this may be to any traditional gaming language, but it's worth asking.

Basically I have the following JavaScript formula representing a bouncing object with gravity, from the standard jQuery UI library: http://code.jquery.com/ui/1.10.0/jquery-ui.js (search for 'Bounce: function'). A demo here shows it in action: http://jsfiddle.net/NtkNB.

Bounce: function ( p ) {
    var pow2,
        bounce = 4;

    while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {}
    return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 );
}

It works nicely but I need to increase the 'bounciness' of the object. I believe this is called 'restitution'.

I've played around with the numbers but it's admittedly just trial and error (mostly error!) and just can't get it to work as desired. I wondered if someone here might be able to understand this and could say whether it's actually possible to increase the restitution of the object within the bounds of this equation, or if not, how it could be modified such.

I totally appreciate any help anyone can give on this one as I've sunk so many hours into this without any joy whatsoever.

Many thanks.

\$\endgroup\$
3
  • \$\begingroup\$ Is there any reason you're using something like this instead of Box2D if you're making a game? \$\endgroup\$ Feb 6, 2013 at 19:32
  • \$\begingroup\$ This is for an interactive banner on a website. So not really a game, but game-like motion. I basically have a few HTML div tags that need to bounce into view in a banner. That's all it needs to do, and it does it already but the client wants "more bounce"! \$\endgroup\$
    – Briquette
    Feb 6, 2013 at 20:00
  • \$\begingroup\$ Gamedev is not somewhere you go to get answers when StackOverflow isn't helping. \$\endgroup\$
    – Jimmy
    Feb 6, 2013 at 21:00

1 Answer 1

4
\$\begingroup\$

Instead of drowning in maths, you could simulate physics.

For every object every step:

apply gravity  (add constant to velocity)
apply velocity (add velocity to position)
if position > some limit then
    reverse velocity
    multiply velocity by "bounciness" between 0 and 1
    if velocity < 0.5 then
        set velocity and gravity to 0
    endif
endif

Here's a comparison of bounciness values 0.7, 0.8 and 0.9:

bouncy squares

(Apologies for the low framerate. GIFs are complicated.)

\$\endgroup\$

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .