java - OpenGL ES 中的旋转

标签 java android opengl-es libgdx

我正在尝试使用以下代码在给定轴上连续旋转球体:

gl.glRotatef(axisX, 0, 1, 0);
gl.glRotatef(axisY, 0, 0, 1);

axisX = (axisX+1)%360;
axisY = (axisY+1)%360;

变量axisXaxisY现在都加一,这将使旋转沿对角线方向向右旋转。物体旋转约 45 度,然后开始转动并开始向相反方向旋转。如何让它在 x 和 y 轴之外的轴上连续旋转?

注意:我正在尝试连接一个虚拟操纵杆来控制 axisXaxisY 值,并使球体在操纵杆代表的轴上旋转。如果有人对此有任何建议,那就太好了。

编辑: 我已经更改了它,以便如果我使用 gl.glRotatef(angle, axisX, axisY, axisZ); 它可以工作并保持旋转,但旋转不平滑,看起来像当我切换旋转轴时,旋转会重新开始。

最佳答案

glLoadIdentity(); // Reset rotation and give a new one
glRotatef(theta[0],1.0,0.0,0.0);
glRotatef(theta[1],0.0,1.0,0.0);

第一个参数是角度,然后是要围绕其旋转的轴。

关于您的编辑:看起来您正在此处混合轴和角度。轴应该是单位长度 vector ,角度从 0 到 2*PI。

另一种方法是使用四元数,然后将四元数转换为矩阵并将该矩阵加载为当前的模型 View 矩阵。

希望有帮助。

关于java - OpenGL ES 中的旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924267/

相关文章:

java - 如何解析嵌套 JSON 结果中的动态 JSON 键?

android - 远程调试

java - 获取文件夹内的目录名称?

由于 fragment ,Java 中的 Android Studio OnClickListener 而不是 XML

java - 在循环中同时打印两个字符串,但分别打印 "paragraphs"

java - 如何每出现 x 次就重复一个符号

java - Log4j 和 syslogappender

opengl-es - WebGL/OpenGL : Rotate camera according to device orientation

iOS 录制音频并绘制波形,如语音备忘录

ios - 绘制为 GL_POINTS(仅指定 2 个坐标)时是否可以在顶点旋转纹理?