我使用 OpenGL 绘制了 Globe 对象,我可以用手指触摸旋转它,但在某些情况下它不能很好地工作,因为我正在使用 x 和 y 之间的差异进行旋转
Rotation3D rot = sphere.currentRotation;
rot.x += diffX ;
rot.y += diffY ;
rot.z += 10 ;
sphere.currentRotation = rot;
当您将手指从右上角移动到左下角时,效果不佳。
有任何想法吗 ?
谢谢彼得加布拉
如果您使用欧拉角:我建议不要使用欧拉角来模拟旋转。改用四元数。看起来它会让你的代码更复杂,但是当你使用四元数时,旋转效果很好。这里有一些优点:
请注意,Apple 为您提供了一个 Quaternion 类型以供使用:GLKQuaternion。无需编写自己的四元数类。
也可以看看: