# OpenGL more confused with rotation

This topic is 4751 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Hi, I am trying to get a better grip of coordinate systems and transforms in opengl and I thought I was getting somewhere but then this confused me even more. I thought with the code before, I could get each rotation to revolve around the cube's local x,y,z axis. However after rotating it in many diretions in all 3 axis, it seems like only in the z-axis is it obviously rotating around that local axis. With the other two, x and y, the rotations aren't aligning with the local x and y axis. It seems like the rotations are around a constant world or screen x and y axis?? . I guess the next question is, how do I do it so I can rotate this cube in any number of degrees around any of the 3 axis and have it appear as though they are all revolving around each local x, y, z axis at all times?
void RenderScene(void)
{

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glMatrixMode(GL_MODELVIEW);

glTranslatef(0.0f, -50.0f, -300);

glRotatef(xRot, 1.0f, 0.0f, 0.0f);
glRotatef(yRot, 0.0f, 1.0f, 0.0f);
glRotatef(zRot, 0.0f, 0.0f, 1.0f);

// Draw Lines
glLineWidth(1);
glColor3ub(255, 0, 0);

glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(500.0f, 0.0f, 0.0f);
glEnd();

glColor3ub(255, 255, 255);

glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 0.0f, 500.0f);
glEnd();

glColor3ub(0, 0, 255);
glBegin(GL_LINES);
glVertex3f(0.0f, 0.0f, 0.0f);
glVertex3f(0.0f, 500.0f, 0.0f);
glEnd();

//draw cube
glColor3ub(255, 255, 0);
glutWireCube(30.0f);

glutSwapBuffers();
}


Thanks. m

##### Share on other sites
Try adding this line before glutSwapBuffers();

glTranslatef(0.0f, 50.0f, 300);

Not entirely sure it will help, but I remember having the same problem, and it has to do with translations. I think I solved by it by translating back to the origin at the end of the rendering procedure.

##### Share on other sites
Seems like you're suffering from gimbal lock.
I suggest you get a better understanding of how things rotate in 3D. There's always only one axis of rotation for an object rotating at a constant angular velocity.

##### Share on other sites
Quote:
 Original post by EldritchTry adding this line before glutSwapBuffers();glTranslatef(0.0f, 50.0f, 300);

That won't do anything. glLoadIdentity() at the beginning does exactly what it says.

##### Share on other sites
mmmm...I have been looking around on all sorts of resources today on this topic and I guess after my bit of study, isn't what I am looking for basically a 6 DOF kind of motion? And if so, haha, okay I guess it is not so easy. Guess I will do a bit more study first.

Thanks!
m

1. 1
2. 2
Rutin
19
3. 3
4. 4
5. 5

• 14
• 12
• 9
• 12
• 37
• ### Forum Statistics

• Total Topics
631435
• Total Posts
3000056
×