ここ数日は、計算と数式を作成することでいっぱいで、頭がおかしくなり始めています (少し)。だから今、私はあなたたちにいくつかの洞察/助けを求めています.
ここに問題があります。建物のフロア全体に配置された Bluetooth ビーコンを使用して、屋内 GPS ショーケースを作成しています。携帯電話を使用してこれらのビーコンに接続すると、そこから経度と緯度の位置を受信できます。これらの数値は、次のような大きな float/double 変数です。
- 緯度: 52.501288451787076
- 長さ: 6.079107635606511
実際の変更は、ポイントの 4 番目と 5 番目の位置で発生します。これらの数値を次を使用してデカルト座標系に変換しています。
- x = R * cos(lat) * cos(lon)
- z = R *sin(lat)
これで、この変換による座標は一種の固体になります。それらは私が扱うことができる数字です。それらを 3D エンジン (Unity3d) で使用して、誰かがどこを歩いているかを確認できるリアルタイム マップを作成します。
さて、実際の問題です!これらのビーコンは完全に正確ではありません。これらの数字は、携帯電話を置いても上下に「ジャンプ」します。範囲は、上記と同じ緯度 52.501280 から 52.501296 と仮定しましょう。これを変換して 3D エンジンの座標として使用すると、ユーザーの「アバター」はある位置から別の位置にジャンプします (大きなジャンプよりも小さなジャンプの方が多い)。
これらの急増する数字に対処するための良い方法は何ですか? 大きなジャンプをチェックして無視しようとしましたが、ジャンプはまだ大きすぎます。より広いチェックでは、電話が動いていても、ほとんど動きません。または、緯度変数と経度変数を 3D エンジンで使用するために変換するより良い方法はありますか?
私と同じ問題を抱えている人、最初に良い変換/式を与えることができる数学の不思議、または私が間違っている可能性があることを知っている人がいる場合は、仲間のプログラマーを助けてください。