Part of the Khronos Group
OpenGL.org

The Industry's Foundation for High Performance Graphics

from games to virtual reality, mobile phones to supercomputers

Results 1 to 2 of 2

Thread: Simple animation issue--but I can't see it

  1. #1
    Junior Member Newbie
    Join Date
    Sep 2012
    Posts
    9

    Simple animation issue--but I can't see it

    Hello! I have been staring at this for hours and have played around with all of the logic and numbers and nothing seems to do what I want. I am trying to create an animation that shows how a shape or object is actually rotated in openGL... so I create an object at a particular point in space, I need to animate it moving to the origin, rotating, and then translating back. So I have been able to get the shape to move around, but once it hit the x = 0 point, instead of changing directions, it stays in a jittering mode, like the direction is continuously getting changed...but I can't seem to understand where my code is doing this. I have pretty much commented everything out so I know where the culprit is but I have no idea where I am going wrong :-( Can anyone please help? I am doing this in baby steps, so as soon as I get the x-direction working I'll start adding in the y and z directions as well as the rotation at the origin...

    Thanks!! I have taken out all of the commented code that is not in use yet for legibility...I don't think any of it is relevant to my problem...

    Code :
     
     
    {void display(void)
    {
    	//color buffer gets cleared everytime a new frame is drawn
    	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);	
     
    	glLoadIdentity();
    	setWindow(-9.0, 9.0, -1.0, 1.0);			// set the window
     
    	glColor3f(1,0,0);
     
    	glTranslated(xPos, yPos, 0.0);	
    	glutWireCube(.25);  //***THIS WORKS***
     
     
    	glutSwapBuffers();	
     
    	if (xDirection==0){ //if moving left
    		xPos-=0.0005;	//move in a negative direction along the xaxis	
    	}
    	else if (xDirection==1){
    		xPos+=0.0005;	//otherwise move in the positive direction
    	}
     
    	if (xPos > 0.0) {	
    		xDirection=0;
    	}
    	else {
    		xDirection=1;
    	}
     
    	glutPostRedisplay();
     
     
    }
     
    int main(int argc, char** argv){
    	glutInit(&argc, argv);
    	//glutInitDisplayMode (GLUT_RGB | GLUT_DEPTH | GLUT_DOUBLE);  //double pixel buffer that holds RGB 
    	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
    	glutInitWindowSize(800, 800);
    	glutInitWindowPosition(0,0);
     
     
    	glutCreateWindow(argv[0]);
    	init();
     
    	glutDisplayFunc(display);
    	glutReshapeFunc(reshape);
    	glutKeyboardFunc(keyboard);
    	//glutIdleFunc(animate);
    	glutIdleFunc(display);
    	glutMainLoop();
    	return 0;
    }

  2. #2
    Junior Member Newbie
    Join Date
    Sep 2012
    Posts
    9
    Ha! It was the logic..I had to read it out loud..in case this helps anyone...
    Code :
    	if (xDirection==0 && xPos > 0.0) {
    		xDirection=0;
    	}
     
    	if (xDirection==0 && xPos < 0.0) {
    		xDirection=1;
    	}
     
    	if (xDirection==1 && xPos < 0.75) {
    		xDirection=1;
    	}
     
    	if (xDirection==1 && xPos > 0.75) {
    		xDirection=0;
    	}

Tags for this Thread

Posting Permissions

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