我试着让两个立方体以不同的方式旋转。
为了设置旋转,我这样做。
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.glLoadId相()来重置旋转,而是做了这样的事情。
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旋转,并通过多维数据集类中的这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)和GL11.glRotatef(etc*-1.0f, etc, etc)工作正常,但是当它们都在一起时,会发生奇怪的旋转。
我不确定这是否与万向节锁或我的代码有关,请帮助。
提前感谢。
首先,您应该停止使用旧的不推荐使用的固定函数管道
否则你想要的是这样的:
GL11.pushMatrix();
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);
//render
GL11.popMatrix();
pushMatrix()保存当前矩阵,popMatrix()恢复上次保存的矩阵
您的反转代码似乎是错误的。请注意,矩阵乘法不是可交换的:
相反的
R(x) * R(y) * R(z)
(这与你的三个rotatef调用相似)是
R(-z) * R(-y) * R(-x)
. 这意味着您必须更改调用第二个glRotatef命令的顺序。
嗨,我正在尝试实现一个带有旋转的opengl程序 以下代码仅供参考:
本文向大家介绍three.js实现围绕某物体旋转,包括了three.js实现围绕某物体旋转的使用技巧和注意事项,需要的朋友参考一下 话不多说,请看代码: 可以拖动右上角观察变化 以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持呐喊教程!
我正在制作一个java刚体物理引擎,到目前为止它做得很好,直到我尝试实现旋转。我不知道问题出在哪里。我有使用这些网站上的公式计算凸多边形和圆的惯性矩的方法: http://lab.polygonal.de/?p=57 http://en.wikipedia.org/wiki/List_of_moments_of_inertia 这是多边形转动惯量的代码: 这是圆形的: 我知道面积函数工作正常,我已
可以使用类的方法对图像执行旋转操作。以下是这种方法的语法 - 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象。 dst - 表示此操作的目标(输出图像)的对象。 rotationMatrix - 表示旋转矩阵的对象。 size - 表示输出图像大小的整数类型变量。 示例 以下程序演示如何旋转图像。 假定以下是上述程序中指定的输入图像:。 执行上面示例代码,得到以下结果 -
本文向大家介绍SVG 旋转,包括了SVG 旋转的使用技巧和注意事项,需要的朋友参考一下 示例 将多边形沿原点顺时针旋转90度: 结果等于 旋转中心可以明确给出: 结果等于
在本章中,我们向您解释了如何使用JOGL旋转对象。 使用GLMatrixFunc接口的glRotatef(float angle, float x, float y, float z)方法,可以沿三个轴中的任意一个旋转对象。 您需要将旋转角度和x,y,z轴作为参数传递给此方法。 以下步骤指导您成功旋转对象 - 最初使用gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2