5

人工水平儀を描きたいです。ビューの中心は完全に水平なビューを表し、ロールは水平線を回転させ、ピッチはそれを上下に動かします。

問題は、ピッチ角を指定して地平線を上下(ピッチ)に変換するための正しい計算は何ですか。

私の推測では、これはおそらく想定されるカメラに対して想定されるFOV角度に依存するため、この角度は求められるアルゴリズムの要素である必要があります。理想的には、iPhone / iPadカメラのこの角度を計算して、デバイスを前に持って地平線に向かって見た場合に、人工地平線が実際の地平線と揃うようにします。

これまでオフセットを推測してきましたが、正確な式が必要です。

4

1 に答える 1

3

horizo​​n_offset /(screen_height / 2)= tan(pitch)/ tan(vertical_FOV / 2)を試してください。

写真を見てください、そして式はそれ自身を導き出します。

絵
(ソース:zwibbler.com

更新私は2つの角度が混同しています。1つはカメラのFOV角度で、もう1つは画面の視野角です。これらは2つの異なるものです。後者は、視聴距離によって異なります。おそらく、この距離を推定し、画面に表示されるオブジェクトが肉眼で表示される同じオブジェクトと同じ角度サイズになるように、倍率や焦点距離を調整する必要があります。(私の特定の電話では、ユーザーが電話を前に伸ばした場合、5倍ズーム後に画像を約3倍に拡大する必要があります)。次に、2つの角度は同じであり、式は機能します。

倍率を導入する場合(つまり、画面上のオブジェクトのサイズが実際のオブジェクトとは異なる場合)、水平線オフセットに倍率を掛けます。

更新2表示距離を考慮すると、画面サイズがキャンセルされ、オフセットは単純にviewing_distance*tan(pitch_angle)(単位倍率で)になります。

于 2012-12-31T12:15:58.377 に答える