2016-02-18 18 views
6

私は整数演算のみを持つプラットフォームで作業しています。アプリケーションは地理情報を使用しており、私は(x、y)座標でポイントを表しています。xyは距離をメートルで測定したものです。 近似として、2点間のユークリッド距離を計算したいと思います。しかし、これを行うには、私は距離を二乗する必要があります.32ビットの整数では、表現できる最大の距離は32キロです。良くない。 私のニーズは1000キロメートルほどです。しかし、私は30メートル以下のスケールで距離を解決できるようにしたいと思っています。オーバーフローせずに整数平面上のユークリッド距離を近似するには?

したがって、私の質問ユークリッド距離を計算するにはどうすればよいでしょうか?オーバーフローなしで整数計算を使用して、四角形が1つの単語に収まらない距離では?

ETA:私は距離を計算することができたいと思っていますが、私はそれらを比較することができるために解決するかもしれません。

+2

実際に距離を計算するか、距離を比較したいですか?あなたが私のコメントを見るときあなたが子猫を殺さないことを願っています。 :) – gsamaras

+1

@gsamaras計算を優先しますが、比較のために解決します。すべての子猫が生きて幸せ! –

+0

メモリ制限はありますか?グリッド内の値を事前に計算しておき、それらを保存してからおおよその双線形補間を行うことで、同様のことをしました。 – y300

答えて

0

私はを遊びの中でのままにして、ユークリッド距離を近似することができます。しかし、距離を比較する場合、この方法は100%の精度を提供します。なぜなら、距離を二乗すると比較は同じになるからです。

高次元空間で最近傍点を検索するときにこのアプローチを使用していたので、私はそれについてかなり確信しています。私のコードと理論はkd-GeRaFで確認できます。

関連する問題