私はそれがこのようになります私は(第2メートル/中)で移動する2つの引数、新しい位置と速度を与えるようになる機能を作成するために設定速度で2ギガポイント間を移動するにはどうしたらいいですか?
をしようとしている:
func (l *Location) Move(newLoc *Location, speed float64) {
R := 6371.0 // Kilometers
lat1 := l.Latitude * math.Pi/180
lat2 := l.Longitude * math.Pi/180
diffLat := (newLoc.Latitude - l.Latitude) * math.Pi/180
diffLon := (newLoc.Longitude - l.Longitude) * math.Pi/180
a := math.Sin(diffLat/2)*math.Sin(diffLat/2) +
math.Cos(lat1)*math.Cos(lat2)*math.Sin(diffLon/2)*math.Sin(diffLon/2)
c := 2 * math.Atan2(math.Sqrt(a), math.Sqrt(1-a))
distanceToMove := R * c // Distance to travel in a straight line, in Kilometers
}
私が問題を抱えているのは、緯度をつけて現在の位置から始め、一定の時間をかけて新しい位置に来るという公式を考えているだけです。
緯度を56.65
から58.12
に変更し、私は1.3m/s
で旅行するように指示しました。ありがとう。
このメソッドは正確に何をすべきですか?機能の望ましい結果/副作用は何ですか? – Nebril
@Nebril関数は基本的にループや他の方法で行う必要があるかどうかにかかわらず、ある場所から別の場所にGPS座標を徐々に移動することになっています。これを達成するための式や方法を理解できません – Datsik
おそらく、位置を変更する時間枠を関数に伝えるために、Moveに3番目のパラメータを指定してください。 戻り値は新しい場所構造でなければなりません。これは 'l'から' newLoc'に 'speed'で移動するオブジェクトが新しい関数引数で指定された時間の後にある場所を含みます。 – Nebril