将Java代码转换为Delphi关于中点计算

时间:2014-03-18 12:55:38

标签: java delphi

我找到了这个Java代码来计算两个纬度和经度之间的中点: midpoint between two latitude and longitude

public static void midPoint(double lat1,double lon1,double lat2,double lon2){

    double dLon = Math.toRadians(lon2 - lon1);

    //convert to radians
    lat1 = Math.toRadians(lat1);
    lat2 = Math.toRadians(lat2);
    lon1 = Math.toRadians(lon1);

    double Bx = Math.cos(lat2) * Math.cos(dLon);
    double By = Math.cos(lat2) * Math.sin(dLon);
    double lat3 = Math.atan2(Math.sin(lat1) + Math.sin(lat2), Math.sqrt((Math.cos(lat1) + Bx) * (Math.cos(lat1) + Bx) + By * By));
    double lon3 = lon1 + Math.atan2(By, Math.cos(lat1) + Bx);

    //print out in degrees
    System.out.println(Math.toDegrees(lat3) + " " + Math.toDegrees(lon3));
}

任何人都可以帮我将这段代码转换成Borland Delphi吗?

输入如下格式:

lat1 = 48.865223, lon1 = 2.318974

lat2 = 48.865983, lon2 = 2.321475

我不确定这是否已经在" radian"。

1 个答案:

答案 0 :(得分:1)

lat1 = 48.865223, lon1 = 2.318974
lat2 = 48.865983, lon2 = 2.321475

这些坐标似乎以度为单位。弧度对于弧度来说太大了。您可以使用DegToRadRadToDeg在度数和弧度之间进行转换。当然,乘法除以π/ 180并不是很难。

可以在sin单元中找到触发函数cosSystemsqrt也可以。对于atan2arctan2需要Math