“我在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);
此功能允许我从两个地理坐标计算它们之间的公里距离。如果有另一种方法来计算这个距离(不使用余弦),我也会很有用。
对此有何帮助?
答案 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%范围内。