【问题标题】:How to get camera rotation in libGDX?如何在 libGDX 中获得相机旋转?
【发布时间】:2021-09-19 08:28:24
【问题描述】:

我想在 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 中获取相机旋转的正确方法是什么?

【问题讨论】:

    标签: camera libgdx rotation


    【解决方案1】:

    我认为它只是开头的减号

    -(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.ycam.up.x 调用,其中 cam.up 是一个单位向量,指示发生了什么。

    所以在未旋转的相机中,向上向量将是 (0, 1)(它实际上是一个 3 维向量,但我们现在可以忽略 z 轴),如果我们将其插入到 atan2 的定义中我们应该得到正-x (1, 0) 和向上(但参数翻转)(1, 0) 之间的角度,该角度为零。

    因此,使用atan2 将向上向量与正 x 轴进行比较是找到相机旋转的有效方法。

    【讨论】:

      猜你喜欢
      • 2013-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多