我如何计算相机使用它的旋转所看到的点?
How can i calculate the point a camera is looking at using it's rotation?
我有一个相机正在观察下方的二维平面。
我知道下方世界的大小,以及相机相对于它的位置。
我想将相机旋转 x
度,但相机不能直接旋转 - 我只能告诉它看 space 中的一个点。
所以我正在寻找一个将 x°
旋转转换为 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
我有一个相机正在观察下方的二维平面。
我知道下方世界的大小,以及相机相对于它的位置。
我想将相机旋转 x
度,但相机不能直接旋转 - 我只能告诉它看 space 中的一个点。
所以我正在寻找一个将 x°
旋转转换为 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