(www.movable-type.co.uk/scripts/latlong.html)の式を使用して、開始点を返す目的地を返そうとしています点、距離、方位などがあります。これらは私の値は以下のとおりです。私はD、st_latやウェブサイトでベアリングを入力するとvincentyの式を使用するときに間違った計算が行われ続ける
int radius_km = 6371;
double d = 74.02;
double st_lat = 39.4450;
st_lat = Math.toRadians(st_lat);
double bearing = 106.1607;
bearing = Math.toRadians(bearing);
double end_lat = Math.asin(Math.sin(st_lat)*Math.cos(d/radius_km) +
Math.cos(st_lat)*Math.sin(d/radius_km)*Math.cos
(bearing));
end_lat = Math.toDegrees(end_lat);
は、私はこれを取得:39°33'28 "Nを。 上記のコード(私がウェブサイトからコピーしたもの)を使用すると、私はこれを得る:39.25679699255662。
私は周りより多くのを見て、誰かが分裂は小数点量を返さないかもしれないと述べたので、私は分裂を置き換え:私は答えを
end_lat=Math.asin(Math.sin(st_lat)*
Math.cos(d)+Math.cos(st_lat)*Math.sin(d)*Math.cos(bearing));
:
BigDecimal distance = new BigDecimal("74.02");
BigDecimal strradius = new BigDecimal("6371");
BigDecimal d2 = distance.divide(strradius, 6, RoundingMode.HALF_EVEN);
double d = d2.doubleValue();
とに数式を変更今すぐ取得するのは39.25680143864117です。 私は何かが欠落していると確信していますが、計算の各ステップを進んで私がどこにいるのか見ることができません。誰にどのようにこれを行うにはステップバイステップの指示がありますか?私は大いに感謝します。おかげさまで
なぜ半径は整数ですか? –
trig関数を使用すると、距離があまり正確ではありません –
あなたはそれが何を示唆していますか? – Dave