如何解决如何在libGDX中获得相机旋转?
我想在 libGDX 中获取 OrthograpicCamera 的旋转。 我目前正在使用从另一篇 SOF 帖子中复制的公式:
float camRotation = -(float)Math.atan2(cam.up.x,cam.up.y)*MathUtils.radiansToDegrees);
如果我不旋转,则返回 -0.0。
如果我旋转 1 cam.rotate(1f);
它 camRotation 打印 -1.0
& 如果我旋转 -1 cam.rotate(-1f);
camRotation 打印 1.0
我对数学感到困惑。在 libGDX 中获得相机旋转的正确方法是什么?
解决方法
我认为它只是开头的减号
-(float)Math.atan2(cam.up.x,cam.up.y)*MathUtils.radiansToDegrees);
这会引起您的困惑,如果您删除它,它应该可以按您预期的那样工作。
atan2(b,a)
为您提供正 x 轴与点 (a,b)
之间的角度。注意为 (b,a)
调用它给点 (a,b)
的角度而不是点 (b,a)
在示例代码中,您使用 atan2
和 cam.up.y
参数调用 cam.up.x
,其中 cam.up
是一个单位向量,表示正在发生的事情。
因此,在未旋转的相机中,向上向量将是 (0,1)
(它实际上是一个 3 维向量,但我们现在可以忽略 z 轴),如果我们将其插入 {{1 }} 是说我们应该得到正 x atan2
和向上之间的角度(但参数翻转)(1,0)
,这是零。
因此,使用 (1,0)
将向上向量与正 x 轴进行比较是找到相机旋转的有效方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。