在Eclipse中使用J2ME中的acos函数的问题

时间:2011-09-07 19:24:30

标签: java java-me floating-point j2mepolish

“我在eclipse中使用J2ME,并且需要使用属于 Math 包的方法acos(),问题是该包可用于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);

此功能允许我从两个地理坐标计算它们之间的公里距离。如果有另一种方法来计算这个距离(不使用余弦),我也会很有用。

对此有何帮助?

3 个答案:

答案 0 :(得分:1)

您可以尝试按照here所示实现反光点。

答案 1 :(得分: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);
}

答案 2 :(得分:0)

如果您有Location API,则可以使用Coordinates类中的distance方法。来自Coordinates API:

public float distance(Coordinates to)

计算两点之间的大地距离 根据WGS84的椭球模型。 计算中忽略了海拔高度。 实现应尽可能准确地计算。 但是,要求结果在正确结果的0.35%范围内。