gpt4 book ai didi

java - OpenGL ES 中的旋转

转载 作者:行者123 更新时间:2023-11-30 09:28:38 25 4
gpt4 key购买 nike

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

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

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

变量 axisXaxisY 现在都在递增 1,这将使旋转沿对角线方向向右移动。对象旋转大约 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com