2

「私は日食でJ2MEを使用しており、 Mathacos()パッケージに属するメソッドを使用する必要があります。問題は、J2ME Mathで使用できるパッケージがその関数(モバイルの制限)ではないということです。アルゴリズムまたはメソッドの代替が必要です。コサインを計算します。

次の式を計算するには、「acos」が必要です。

long2 = cood[i].getLongitud();
lat2 = cood[i].getLatitud();
dlong = (long1 - long2); 
c = dlong * degtorad;
dvalue = (Math.sin(a) * Math.sin(b))+(Math.cos(a) * Math.cos(b)*Math.cos(c)); 

dd = Math.acos(dvalue) * radtodeg; 

km = (dd * 111.302);

この関数を使用すると、2つの地理座標から、それらの間の距離をキロメートル単位で計算できます。この距離を計算する別の方法がある場合(コサインが使用されていない場合)、私も役立ちます。

これについて何か助けはありますか?

4

3 に答える 3

1

ここに示すように、アークコサインの実装を試みることができます。

于 2011-09-07T19:35:26.873 に答える
1
public static double acos(double a)
{
    final double epsilon=1.0E-7; 
    double x=a;
    do {
        x-=(Math.sin(x)-a)/Math.cos(x);
    }
    while (Math.abs(Math.sin(x)-a)>epsilon);

    // returned angle is in radians
    return -1*(x-Math.PI/2);
}
于 2011-09-07T21:40:22.760 に答える
0

Location API を利用できる場合は、Coordinates クラスの距離メソッドを使用できます。座標 API から:

public float distance(Coordinates to)

WGS84 の楕円体モデルに従って、2 点間の測地距離を計算します。高度は計算から無視されます。実装は、これを可能な限り正確に計算する必要があります。ただし、結果が正しい結果の 0.35% 以内であることが必要です。

于 2011-09-20T08:54:47.700 に答える