View more

View more

View more

### Image of the Day Submit

IOTD | Top Screenshots

### The latest, straight to your Inbox.

Subscribe to GameDev.net Direct to receive the latest updates and exclusive content.

# Need help in drawing moving and bouncing ball

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

2 replies to this topic

### #1cwchan  Members

Posted 20 October 2001 - 05:08 AM

I was currently given an assignment. Since I just started learning OpenGL (and worse, most of them are theories), thus I have no idea on how to program it. Below is the question: ================================================================ Implement a C/C++ interactive graphics program that "moving and bouncing (no gravity applied) a ball in a window" A Ball is drawn (as circle) with in multiple color to make it''s rotation clear. Implement keyboard call back function that: 1. enlarge the ball radius when press ''R'' 2. reduce the ball radius while press ''r'' 3. increase the ball velocity while press ''V'' 4. reduce the ball velocity while press ''v'' 5. increase ball direction angle (anti-clockwise) while press ''T'' 6. reduce the ball direction angle (anti-clockwise) while press ''t'' 7. increase the ball spinning speed (anti-clockwise) while press ''A'' 8. decrease the ball spinning speed (anti-clockwise) while press ''a'' Implement mouse call back function that: 1. Start / continue animation of the ball while left mouse button is pressed. 2. Pause animation while right mouse button is press ================================================================ Any help will be appreciated. Thanks.

### #2Obelix  Members

Posted 20 October 2001 - 07:27 PM

You should first try to do it yourself before asking. The NeHe tutorials is probably covering everything you need to know.

### #3cwchan  Members

Posted 20 October 2001 - 11:06 PM

So far I just managed to draw a filled circle. The problem now is how to make it move and rotate after I left-click the mouse. From what I know there are functions called:
glTranslate{fd}( dx, dy, dz );
glRotate{fd}( angleInDegrees, axisXvalue, axisYvalue, axisZvalue);

Just wondering how to implement it on my source file... I tried once but the window goes blank when I left click on it..
Below is my souce code so far (the transformation function is called rollCircle()):

  #include#include#includevoid drawCircle(){ float originY=100; float originX=100; float radius=20; float vectorX; float vectorY; float vectorY1; float vectorX1; float angle; vectorY1=originY+radius; vectorX1=originX; glBegin(GL_TRIANGLES); for(int i=0; i<=360;i++) { angle=(float)(((double)i)/57.29577957795135); vectorX=originX+(radius*(float)sin((double)angle)); vectorY=originY+(radius*(float)cos((double)angle)); glVertex2d(originX,originY); glVertex2d(vectorX1,vectorY1); glVertex2d(vectorX,vectorY); vectorY1=vectorY; vectorX1=vectorX; if(i<=120) glColor3f(1.0,0.0,0.0); else if(i>120 && i<=240) glColor3f(1.0,1.0,0.0); else glColor3f(0.0,1.0,0.0); } glEnd();}void rollCircle(){ //need help on this}void myMouse(int button, int state, int x, int y) { if ( button == GLUT_LEFT_BUTTON && state == GLUT_DOWN) glutIdleFunc(rollCircle); // starts animation else if ( button == GLUT_RIGHT_BUTTON && state == GLUT_DOWN) glutIdleFunc(NULL); // stops animation } void myDisplay(){ glClear(GL_COLOR_BUFFER_BIT); drawCircle(); glFlush();}void myInit(void){ glClearColor(0.0,0.0,0.0,0.0); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluOrtho2D(0.0,200.0,0.0,200.0);}void main(int argc, char **argv){ glutInit(&argc,argv); glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(200,200); glutInitWindowPosition(0,0); glutCreateWindow("Circle"); glutDisplayFunc(myDisplay); glutMouseFunc(myMouse); myInit(); glutMainLoop();}

Thanks for any help.

Edited by - cwchan on October 21, 2001 6:12:18 AM

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.