Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

OpenGL glRotatef

What is the difference between

glRotatef(angle, 1.0f, 0.0f, 0.0f);
glRotatef(angle, 0.0f, 0.0f, 1.0f);

and

glRotatef(angle, 1.0f, 0.0f, 1.0f);

And why nothing change when I change the second paramater 1.0f to 5.0f? Lastly, how can I rotate an object around x=5 and not around x=0?

like image 923
peaceman Avatar asked Jan 28 '13 20:01

peaceman


1 Answers

If you want to rotate around x=5 you should do a glTranslate to x=5 and whatever your y coordinate is and then do glRotate then glTranslate back to the origin.

So something like

glTranslate(5, 0, 0);
glRotatef(...);
glTranslate(-5, 0, 0);

For the first question I'm including @genpfault's answer for completeness. It is due to vector normalization done by glRotatef() on the vector you pass in.

like image 199
Jesus Ramos Avatar answered Sep 25 '22 07:09

Jesus Ramos