我想画一个人为的视野。视图的中心将代表完美的水平视图,滚动旋转水平线,俯仰向上或向下移动。
问题是:在给定俯仰角的情况下,将水平线向上或向下(俯仰)平移的正确计算是什么。
我的猜测是,这可能取决于人们假设的假设相机的FOV角度,因此这个角度需要是所寻求算法的一个因素。理想情况下,我会想出iPhone / iPad相机的这个角度,这样如果你将设备放在你面前并朝向地平线,那么人造地平线将与实际地平线对齐。
到目前为止,我一直在猜测偏移量,但我希望得到确切的公式。
答案 0 :(得分:3)
尝试horizon_offset /(screen_height / 2)= tan(pitch)/ tan(vertical_FOV / 2)。
看一下图片,公式就是自己的。
the picture http://zwibbler.com/shared/3120.png
更新我有两个角度混淆了。一个是摄像机的视角,另一个是屏幕的视角。这是两件不同的事情。后者取决于观看距离。您可能需要估计此距离,并调整放大率和/或焦距,使屏幕上可见的对象与肉眼可见的相同对象的角度大小相同。 (使用我的特定手机,如果用户用手机一直向前伸展手,则需要在5倍变焦后将图像放大约3倍。)然后两个角度是相同的,并且公式有效。
如果你想引入放大倍率(即屏幕上的物体与现实对象不同),请将地平线偏移乘以放大系数。
更新2 考虑到观看距离时,屏幕尺寸取消,偏移量变为viewing_distance*tan(pitch_angle)
(单位放大率)。