opengl glrotatef 无法正确旋转

Posted

技术标签:

【中文标题】opengl glrotatef 无法正确旋转【英文标题】:opengl glrotatef won't rotate properly 【发布时间】:2014-10-04 20:37:01 【问题描述】:

假设我在(50,60,20) 点有一个绘图,我想在桌子的每一侧旋转它。 下图的基础,我想将绿色圆圈旋转到右侧,背面和左侧。我的实现是 glRotatef(plate_rotate, 50, 0, 0); 因为这将在表格的中间,顶点 x = 50。但是这不起作用。

glRotatef(90, 50, 0, 0); would not work. 


Table dimension 
int xL = 25;
int xR = 75;

int yT = 60;
int yB = 55;

int zF = 25;
int zB = -25;



static float tableTop[8][3] =

     xL, yT, zF ,
     xR, yT, zF ,
     xR, yT, zB ,
     xL, yT, zB ,
    //bottom
     xL, yB, zF ,
     xR, yB, zF ,
     xR, yB, zB ,
     xL, yB, zB ,

;

【问题讨论】:

什么是centerglRotate()?那不是OpenGL函数。你是说glRotate()吗? 请在您的问题中提供更多详细信息:目前无法回答。特别是,提供centerglRotatef 的代码,以及使用它的完整场景。 对不起,我的意思是 glRotatef 【参考方案1】:

您需要将您的对象转换到原点,而不是做您正在做的事情...glRotatef 中的 x、y、z 坐标是方向矢量而不是空间坐标。 glRotatef (90, 1, 0, 0)glRotatef (90, 50, 0, 0) 之间没有区别,因为两个向量在归一化后是相同的。

考虑一下(注意这些事情发生的顺序):

glTranslatef ( 50.0f, 0.0f, 0.0f);               // 3. Move back
glRotatef    (plate_rotate, 1.0f, 0.0f, 0.0f);   // 2. Rotate around X-axis
glTranslatef (-50.0f, 0.0f, 0.0f);               // 1. Move X=50 to origin

【讨论】:

以上是关于opengl glrotatef 无法正确旋转的主要内容,如果未能解决你的问题,请参考以下文章

使用 gl.glrotatef 旋转对象

OpenGL glRotatef

glRotatef() 在 Opengl 中的工作很奇怪

使用 glRotatef() 时的 OpenGL 坐标问题

在 OpenGL 中旋转对象

OpenGL使旋转函数给出向量