2012-05-10 9 views
1

私は自分の場所を囲む円の中にランダムな緯度/経度のペアを生成したいと思います。は私の場所の近くのランダムな場所を生成します

現在、私はロケーションリスナーを実装しており、毎回新しいロケーションを取得しています。私は近くの場所をランダムに描画したいと考えています。

私は2つの既存の場所の間の距離を計算し、その私の範囲内のかどうかを知ることができています:

public List<Location> filter(Location current, List<Location> locations, int radius) { 
    List<Location> results = new ArrayList<Location>(); 
    for (Location loc : locations) { 
     if (current.distanceTo(loc) <= radius) { 
      results.add(loc); 
     } 
    } 
    return results; 
} 

しかし、実際に、私は私の範囲内の場所を生成する方法を見つける傾けます。

ここにヘルプがありますか?どうもありがとうございました。

+0

あなたはkeyser5053ありがとうございます。それは問題です、私は自分自身を生成する方法を知っていない私は使用する座標範囲を知っていないので、自分自身。 – pindleskin

+0

あなたは半径を知っているようです。それだけで十分です。 – keyser

+0

はい、半径は100メートルです。私の問題は数学の関わりであり、私は考え続けています。 – pindleskin

答えて

1

にセットアップするためにそれを試みることができませんでしたか?現在の場所を使用すると、これらの番号に制限を設定できます。現在の座標と半径を使用して、乱数のスパンを取得します。ランダムな新しいXのためのスパン=古いX + - 半径

私は-1と1の間の乱数を生成し、次にそれを半径で掛けることを提案したいと思います。これは、生成された座標の最大値が半径(および最小は-radius)であることを意味します。この値を現在の位置座標に追加すると、Old X + - radiusの値が得られます。概要:

(-1と1の間の乱数)*半径+(古いx)=新しいxの半径x内の古いx。乱数(!OBS 0から1まで)のための

例コード:

import java.util.Random; 

Random r = new Random(); 
double zeroToOne = r.nextInt(1001)/1000 

は、ここでランダムにJavaドキュメントです:Random

+0

私は今ポイントを得ると思う、非常に、それを試してみるように感謝します。 – pindleskin

+0

@pindleskinは数式を編集して、古いものより大きな新しい座標を与えるだけではありません(-1からスパン) – keyser

関連する問題