【发布时间】:2014-10-18 22:10:47
【问题描述】:
我试图让 2 个立方体以不同的方式旋转。
要设置旋转,我这样做。
GL11.glRotatef(rot[0], 1.0f, 0.0f, 0.0f);
GL11.glRotatef(rot[1], 0.0f, 1.0f, 0.0f);
GL11.glRotatef(rot[2], 0.0f, 0.0f, 1.0f);
我没有使用 GL11.glLoadIdentity() 来重置旋转,而是在多维数据集类中执行了类似的操作。
GL11.glRotatef(rot[0] * -1.0f, 1.0f, 0.0f, 0.0f);
GL11.glRotatef(rot[1] * -1.0f, 0.0f, 1.0f, 0.0f);
GL11.glRotatef(rot[2] * -1.0f, 0.0f, 0.0f, 1.0f);
这应该重置每个轴的旋转。
数组“rot”保存了x、y、z的旋转,并通过cube类中的这3个方法进行更新。
public void pitch(float angle) {
rot[0] = angle;
}
public void yaw(float angle) {
rot[1] = angle;
}
public void roll (float angle) {
rot[2] = angle;
}
单独地,每个“GL11.glRotatef(etc,etc,etc,etc) 和 GL11.glRotatef(etc * -1.0f, etc,etc,etc)”都可以正常工作,但是当它们都在一起时,会发生奇怪的旋转.
我不确定这是否与 Gimbal Lock 或我的代码有关,请帮忙。
提前致谢。
【问题讨论】:
标签: java opengl rotation lwjgl