我觉得我的问题很简单,但在OpenGL I'm新的,我不知道该怎么办。
我试图旋转金字塔(图中并不重要),我想相对于X旋转,然后用尊重为Y AX旋转。
但是,当我做X旋转时,Y AX旋转了。 然后,当我想以旋转为Y丝毫尊重,Y轴是不再是原来的。
接下来的图像显示在起源如何MI金字塔明星:
然后旋转到X winth方面:
轴Y和Z旋转一样,那么如果我想对于为Y,旋转,金字塔就在Y AX旋转,而不是,原始的Y AX(强生)旋转。
我用PushMatrix(); 和PopMatrix(); :
gl.PushMatrix();
gl.Rotate(bx, 1.0f, 0.0f, 0.0f);
gl.PushMatrix();
gl.Rotate(by, 0.0f, 1.0f, 0.0f);
//Pyramid
gl.Begin(OpenGL.GL_TRIANGLES);
gl.Color(1.0f, 0.0f, 0.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Vertex(-1.0f, -1.0f, 1.0f);
gl.Vertex(1.0f, -1.0f, 1.0f);
gl.Color(0.0f, 1.0f, 0.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Vertex(1.0f, -1.0f, 1.0f);
gl.Vertex(1.0f, -1.0f, -1.0f);
gl.Color(0.0f, 0.0f, 1.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Vertex(1.0f, -1.0f, -1.0f);
gl.Vertex(-1.0f, -1.0f, -1.0f);
gl.Color(1.0f, 1.0f, 1.0f);
gl.Vertex(0.0f, 1.0f, 0.0f);
gl.Vertex(-1.0f, -1.0f, -1.0f);
gl.Vertex(-1.0f, -1.0f, 1.0f);
gl.End();
gl.PopMatrix();
gl.PopMatrix();
BX 和刚增加或当您单击按钮递减角度(Z无所谓了)
嗯,我想旋转的金字塔,相对于X和Y,但原来的轴(万向轴)独立本地轴。
注:我用SharpGL(OpenGL的C#),但它是相同的。
更新
我改变我的代码:
gl.PushMatrix();
gl.Rotate(bx, 1.0f, 0.0f, 0.0f);
gl.PushMatrix();
//gl.Rotate(by, 0.0f, 1.0f, 0.0f); This changes
gl.Rotate(by, 0.0f, Math.Cos(bx*Math.PI / 180), -Math.Sin(bx*Math.PI / 180));
//Pyramid
gl.PopMatrix();
gl.PopMatrix();
我乘以矩阵的Rx逆[1 0 0; 0的Cos仙; 0 -Sin的Cos]由矢量Y [0 1 0],将得到的矢量[0的Cos -Sin],我把旋转运动通过Y.
这个工程,我想,我做的X旋转,由Y旋转后,但是当我用X做另一转动,现在的旋转是由X旋转,而不是相对于原来的!!!,但是旋转由Y保持,因为我想要的。
任何另一个想法? 非常感谢!!!