2010-12-15 135 views
4

這個問題與one非常相似。這個想法是計算J2ME中2個緯度和經度點之間的距離。J2ME - 計算2緯度和經度之間的距離

我見過很多使用Math.atan2的例子,這在Java中很好,但它在JavaME中不存在。

關於具體解決方案的任何想法或Math.atan2的替代方案?

回答

10

似乎有一個解決方案atan2here

我已經重新調整了代碼ATAN2:

class TrigMath { 

    static final double sq2p1 = 2.414213562373095048802e0; 
    static final double sq2m1 = .414213562373095048802e0; 
    static final double p4 = .161536412982230228262e2; 
    static final double p3 = .26842548195503973794141e3; 
    static final double p2 = .11530293515404850115428136e4; 
    static final double p1 = .178040631643319697105464587e4; 
    static final double p0 = .89678597403663861959987488e3; 
    static final double q4 = .5895697050844462222791e2; 
    static final double q3 = .536265374031215315104235e3; 
    static final double q2 = .16667838148816337184521798e4; 
    static final double q1 = .207933497444540981287275926e4; 
    static final double q0 = .89678597403663861962481162e3; 
    static final double PIO2 = 1.5707963267948966135E0; 

    private static double mxatan(double arg) { 
     double argsq = arg * arg, value; 
     value = ((((p4 * argsq + p3) * argsq + p2) * argsq + p1) * argsq + p0); 
     value = value/(((((argsq+q4)*argsq+q3)*argsq+q2)*argsq+q1)*argsq+q0); 
     return value * arg; 
    } 

    private static double msatan(double arg) { 
     return arg < sq2m1 ? mxatan(arg) 
      : arg > sq2p1 ? PIO2 - mxatan(1/arg) 
      : PIO2/2 + mxatan((arg - 1)/(arg + 1)); 
    } 

    public static double atan(double arg) { 
     return arg > 0 ? msatan(arg) : -msatan(-arg); 
    } 

    public static double atan2(double arg1, double arg2) { 
     if (arg1 + arg2 == arg1) 
      return arg1 >= 0 ? PIO2 : -PIO2; 
     arg1 = atan(arg1/arg2); 
     return arg2 < 0 ? arg1 <= 0 ? arg1 + Math.PI : arg1 - Math.PI : arg1; 
    } 
} 
+0

似乎優秀。將現在檢查.... – Adnan 2010-12-15 21:07:09

+1

thanx @aioobe,它是完美的:D – Adnan 2010-12-15 21:21:29

+0

大聲笑。您的代碼在Bukkit中使用:https://github.com/Bukkit/CraftBukkit/blob/master/src/main/java/org/bukkit/craftbukkit/TrigMath.java – MinecraftShamrock 2014-08-31 11:09:36

相關問題