5

我想画一个人造地平线。视图的中心将代表完美的水平视图,滚动旋转水平线,俯仰将其向上或向下移动。

问题是:在给定俯仰角的情况下,向上或向下(俯仰)平移地平线的正确计算是什么。

我的猜测是,这可能取决于假设相机的 FOV 角度,因此该角度需要成为所寻求算法的一个因素。理想情况下,我会计算出 iPhone/iPad 相机的这个角度,这样如果你把设备放在你面前并看向地平线,人造地平线就会与实际地平线对齐。

到目前为止,我一直在猜测偏移量,但我想知道确切的公式。

4

1 回答 1

3

试试horizo​​n_offset/(screen_height/2)=tan(pitch)/tan(vertical_FOV/2)。

看图,公式自己推导出来。

图片
(来源:zwibbler.com

更新我有两个角度混淆。一个是相机的FOV角度,另一个是屏幕的视角。这是两个不同的东西。后者取决于观看距离。您可能必须估计此距离,并调整放大倍率和/或焦距,以使屏幕上可见的对象与肉眼可见的相同对象具有相同的角度大小。(对于我的特定手机,如果用户将手一直向前伸,则在 5 倍变焦后,您需要将图像放大大约 3 倍)。然后两个角度相同,公式有效。

如果您想引入放大倍率(即屏幕上的对象与现实生活中的对象大小不同),请将水平偏移乘以放大倍数。

更新 2当考虑到观看距离时,屏幕尺寸抵消了,偏移量就变成viewing_distance*tan(pitch_angle)了(单位放大倍率)。

于 2012-12-31T12:15:58.377 回答