これは、このフォーラムでの最初の投稿であり、プログラミングは非常に新しいものです。携帯電話の gps 値がどこにあるかを正確に確認できるアプリケーションを構築したいと考えています。私はjunaio、mixareなどの多くのアプリケーションを知っていますが、それらはオブジェクトへの方向を示すだけで、あまり正確ではありません(画面上の正確な位置に投影するという目標を持っていません) - だから私は自分で作りたい。私はAndroidでプログラミングしていますが、iPhoneでも同じだと思います。
私はdabhaidから提案された手順に従いました:
3 つのステップがあります。
1) センサーを使用して位置と向きを決定します。
2) 大圏距離と方位などを使用して、既知の GPS 座標の相対位置と方位を決定することにより、GPS 座標空間から平面座標空間に変換します。(このスキームでは、デバイスは座標空間の原点に留まります)
3) 透視投影http://en.wikipedia.org/wiki/3D_projection#Perspective_projectionを実行して、ディスプレイ (カメラ センサー) である平面上のどこにオブジェクトが表示されるべきかを把握し、オブジェクトを拡張できるようにします。
ステップ 1:簡単です。モバイル デバイスから GPS 位置とすべての方向 (x、y、z) を取得しています。さらに改良するために、何らかのアルゴリズムを使用してこの値を平滑化できます (平均、低フィルターなど)。
ステップ 2:平面座標空間とは正確には何を意味するのかわかりません。GPS座標空間を変換するには、いくつかの異なるアプローチがあります。それらの 1 つは ECEF (地球中心) で、0,0,0 は地球の中心です。1 つの軸を少し変更するたびに、他の 2 つの軸が変更されるため、これは私にはよく見えません。高度を変えると 3 つの軸すべてが変わります。この座標系でステップ 3 を実行できるかどうかわかりません。ステップ2で言及されています:haversineを使用すると、ポイントまでの距離が得られますが、そこからx、y、zが得られません。三角法(方位 (アルファ) + 距離 (斜辺))を使用してx、y を計算する必要がありますか?
ステップ 3:この方法はとてもクールに見えます。ステップ 2の座標空間があれば、wikipedia の式を使用してd_x,d_y,d_zを計算できます。しかし、このステップの後、私は座標を持っているだけなので、まだ終わっていません。画面に投影するには、2つの座標しか必要ありませんか? ウィキペディアのテキストは、b_x、b_y を計算することによって継続されます。表示面に対する視聴者の位置であるe_x、e_y、e_zを使用します -> モバイル デバイスからこれらの値を取得するにはどうすればよいですか? (アンドロイド/ios)。ウィキペディアから提案されている別のアプローチは、ウィキペディアに記載されている式を使用してb_x、b_y を計算することです。この式では、画面サイズである s_x,s_y を使用し、r_x,r_yは記録面サイズです。繰り返しますが、モバイル デバイスから記録面を取得するにはどうすればよいですか?
私はインターネット上でそれについて何も見つけることができません。android/ios の誰も以前に透視投影を実装したことがないようです...
たくさんのご回答ありがとうございました!また、役立つサイトへのリンクも役立ちます。