我如何计算相机使用它的旋转所看到的点?

How can i calculate the point a camera is looking at using it's rotation?

我有一个相机正在观察下方的二维平面。

我知道下方世界的大小,以及相机相对于它的位置。

我想将相机旋转 x 度,但相机不能直接旋转 - 我只能告诉它看 space 中的一个点。

所以我正在寻找一个将 旋转转换为 y 坐标的函数,但我正在努力寻找合适的搜索词。

蜡笔可视化辅助工具:

具体来说,我正在寻找函数公式 - 但如果我的引擎中已经有一些我不知道的实现,我将使用 LibGDX.

来实现

让我们定义一些我假设您知道的组件:

  • d - 相机到二维平面的距离
  • y0 - 相机在 2D 平面上的投影位置(90 度线与图中平面的交点)。这在您的坐标系中可能为 0,但为了完整起见,我们保留它。
  • angleFromHorizontal - 图中定义的所需角度(在 0 和 180 之间)

y 位置的公式如下:

import kotlin.math.PI
import kotlin.math.tan

val angleFromNormal = 90.0 - angleFromHorizontal
val y = d * tan(angleFromNormal * PI / 180) + y0

其实你甚至不需要角度的“反转”。你可以反转切线:

import kotlin.math.PI
import kotlin.math.tan

val y = d / tan(angleFromHorizontal * PI / 180) + y0