2

我使用 OpenGL 绘制了 Globe 对象,我可以用手指触摸旋转它,但在某些情况下它不能很好地工作,因为我正在使用 x 和 y 之间的差异进行旋转

    Rotation3D rot = sphere.currentRotation;
rot.x += diffX ;
rot.y += diffY ;
rot.z += 10 ;
sphere.currentRotation = rot; 

当您将手指从右上角移动到左下角时,效果不佳。

有任何想法吗 ?

谢谢彼得加布拉

4

2 回答 2

0

如果您使用欧拉角:我建议不要使用欧拉角来模拟旋转。改用四元数。看起来它会让你的代码更复杂,但是当你使用四元数时,旋转效果很好。这里有一些优点:

  • 将用户交互应用于当前旋转状态非常简单
  • 没有万向节锁定问题
  • 重复旋转后无需矩阵漂移调整
  • 您可以轻松地插入旋转

请注意,Apple 为您提供了一个 Quaternion 类型以供使用:GLKQuaternion。无需编写自己的四元数类。

也可以看看:

于 2013-06-05T10:49:33.860 回答
0
于 2013-06-05T09:49:56.320 回答