编辑:我尝试了这个公式,但它给出了错误的答案。
public static void normalizedPoint(double lat1, double lon1, double lat2, double lon2, double dist){
double constant=Math.PI/180;
double angular = dist/6371;
double a = Math.Sin( 0* angular )/Math.Sin(angular);
double b = Math.Sin(1*angular)/Math.Sin(angular);
double x = a * Math.Cos(lat1) * Math.Cos(lon1) + b * Math.Cos(lat2) * Math.Cos(lon2);
double y = a * Math.Cos(lat1) * Math.Sin(lon1) + b * Math.Cos(lat2) * Math.Sin(lon2);
double z = a * Math.Sin(lat1) + b * Math.Sin (lon2);
double lat3 = Math.Atan2(z, Math.Sqrt( x*x + y*y ));
double lon3 = Math.Atan2(y, x);
Console.WriteLine(lat3/constant + " " + lon3/constant );
}
根据我理解原始公式,这应该返回两个原始点中的一个,但由于使用的分数为1,它并没有返回。变量dist是两点之间的距离,已经正确计算(与同一网站进行了比较验证)。
编辑2:我提供了两个地理点的坐标(lat1,lon1,lat2 lon2)和它们之间的距离作为输入。我试图得到一个中间点(lat3,lon3)。