获取物体相对于摄像机方向的角度

时间:2016-04-28 20:15:28

标签: java c++ camera angle

我想要达到的目的是获得物体相对于相机方向的角度。 从我提供的图片中可以看出: A点:相机位置。 B点:无论旋转如何,始终位于摄像机视图前方的参考点。 C点:有问题的对象。

获取B点和C点之间的度数已经完成,但问题是我的相机的偏航(以度为单位)是根据世界空间而不是视野(相机)空间。根据相机位置当前所在的笛卡尔象限,这会出现问题。

如何根据相机的方向定义相机周围的度数,与世界空间无关?

enter image description here

1 个答案:

答案 0 :(得分:0)

你的照片显示得不太好,因为你的相机位于世界的起源。但是如果你想象一下其他地方的相机,就像在左上角那样,很容易看出从原点到B和C的线之间的角度不同于从B到C的线之间的角度。相机。

首先从摄影机中减去摄像机位置到B和C,你会得到2个新的矢量,它们代表来自摄像机的B和C线。好像相机是原点。

计算它们之间的角度将为您提供相机空间中的角度。

在伪代码中:

Vector b      // B's position
Vector c      // C's position
Vector camPos // camera's position

Vector bFromCam = (b - camPos)
Vector cFromCam = (c - camPos)

float angle = AngleBetween(bFromCam, cFromCam) // Compute the angle

我已经离开了计算角度的实现,因为你已经知道如何做到这一点。