Part of the Khronos Group

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 2 of 2

Thread: Bouncing a 3d Sphere

  1. #1
    Junior Member Newbie
    Join Date
    May 2012

    Bouncing a 3d Sphere

    Ok so i have this sphere with shinnies and specular and some other effects, i am a starter in opengl so what i need is the sphere to go up and down again, it should be like a bouncing ball but like in real life the ball has to stop at some point, i have been searching the entire google and there is not a single project like this, there are some functions that i didn't understand, again i am a starter so sorry from me if this is lame, or an amateur question.

    glPushMatrix ();
    glTranslatef (0.0, 0.0, -1.0);
    glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_diffuse4);
    glMaterialfv(GL_FRONT, GL_SPECULAR, mat_specular4);
    glMaterialfv(GL_FRONT, GL_SHININESS,mat_shininess4);
    glutSolidSphere (1.0, 35, 35);
    glPopMatrix ();

  2. #2
    Senior Member OpenGL Pro BionicBytes's Avatar
    Join Date
    Mar 2009
    UK, London
    You are on the right track by using glTranslatef (0.0, 0.0, -1.0); However, for up/down motion you want to translate on the Y axis glTranslatef (0.0, Y, 0.0);
    Use Sin or Cos to simulate the wave like properties of the bouncing ball and each time the ball is at the lowest point ensure you decrease the strength of the 'spring' force allpied to the sin/cos function. Eventually, the ball will stop bouncing when the spring force is zero.
    So perhaps something like:
    Y = SIN (ballangle) * ballspring; //ballangle between 0-180 degrees - converted to radians; Ball spring=some linear multiplier
    if ballangle =180 then { exponentiallyreduce (ballspring); ballangle=0}
    else ballangle += 0.02; //should use some time dependant rate to increase ball angle instead of fixed amount

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts