我想画一个虚假的视野。 View 的中心将代表完美的水平 View ,其中滚动将水平线旋转并上下倾斜。

问题是:在给定俯仰角的情况下,将地平线向上或向下(俯仰)转换的正确计算方法是什么?

我的猜测是,这可能取决于一个假定摄像机的FOV角度,因此该角度需要成为所寻求算法的一个因素。理想情况下,我会弄清楚iPhone/iPad相机的角度,这样,如果将设备放在您面前并朝着地平线看,则人造地平线将与实际地平线对齐。

到目前为止,我一直在估算偏移量,但是我想拥有确切的公式。

最佳答案

尝试horizo​​n_offset/(screen_height/2)= tan(pitch)/tan(vertical_FOV/2)。
看一下图片,公式即会自动得出。
algorithm - 正确翻译人工视界-LMLPHP
(来源:zwibbler.com)

更新我有两个角度混在一起。一个是摄像机的FOV角度,另一个是屏幕的视角。这是两件事。后者取决于观看距离。您可能必须估计该距离,并调整放大倍率和/或焦距,以使屏幕上可见的对象与肉眼可见的相同对象具有相同的角度大小。 (对于我的特定手机,如果用户将手机一直向前拉伸(stretch),则在5倍变焦后,您需要将图像放大大约3倍)。则两个角度相同,公式起作用。
如果要引入放大倍数(即屏幕上的对象与现实生活中的对象具有不同的大小),请将水平偏移乘以放大倍数。
更新2 如果考虑到观看距离,则屏幕尺寸会抵消,并且偏移量仅变为viewing_distance*tan(pitch_angle)(单位放大倍数)。

关于algorithm - 正确翻译人工视界,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14099158/

10-10 04:58