View Full Version : glRotate

01-31-2002, 07:50 PM
Hi. I'm new to OpenGL and I have a problem.
I'm trying to rotate an object about the axis using glRotatef(....). The code is something like this:

if(x< 180)
glRotatef(10, 1.f, 0.f, 0.f);

For some reason, the object moves in the direction of positive x everytime the image is redrawn. I would prefer the object to stay stationary rather than move. Can someone give me why this is happening?

01-31-2002, 08:24 PM
Do you want it to rotate constantly?

if so, try:
add an int called "rvar" for Rotation angle variable

glRotatef(rvar, X,Y,Z); //Enable the XYZ sxis by giving them a value of 1. Or else leave as "0"
then at the end of the function:
rvar+=0.3f; //Add 0.3 to the angle for each loop.


while(rvar < 120)
/* Do Junk */
rvar+=0.03; //You can change of course ^_^

As for why it moves left, I dunno, is that ALL the code? show wha you have put prior, and define your ints.

[This message has been edited by ThinIce (edited 01-31-2002).]

02-01-2002, 04:02 AM
Before or after glRotate are you using gltranslate of glscale?

Also the object you are drawing, is the point (0,0,0) in the center of the object or at a edge? You must remember that rotate moves the object around its axis.
If the axis is a corner of your object, then the object rotate from that point.

Let us see how you have drawn your object?

02-01-2002, 11:58 AM
The base of the object is at (0,0,0). The top coordinate is roughly (0,0,70). I tried rotatating about the x-axis, and the object appeared to be moving in the direction of positive x while it rotated. I managed to fix it. The program reads in the coordinates from a file. The program which generates the coordinates was using a different coordinate system (which I didn't know). So (0,0,0) in the file's coorinates didn't map to (0,0,0) in my coordinates. So that's what was causing the problem.

I appreciate everyones contributions.