Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

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 (http://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.

share|improve this question
    
Is there any reason you're using something like this instead of Box2D if you're making a game? –  Vaughan Hilts Feb 6 '13 at 19:32
    
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"! –  Dan Feb 6 '13 at 20:00
    
Gamedev is not somewhere you go to get answers when StackOverflow isn't helping. –  Jimmy Feb 6 '13 at 21:00

1 Answer 1

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.)

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.