2011-03-08 40 views
1

在Iphone SDK中,distanceFromLocation:表示它根本不使用高度。如果我正在编写一个应用程序来跟踪我走多远/周期/等(是的,我知道有一个数字已经这样做了),我很好奇它有多重要。有人对此有经验吗?Iphone上的distanceFromLocation与笛卡尔坐标系中的自己计算有多准确?

当我说笛卡尔线我的意思是这样(在C#中,不客观C):

 double lattitude, longitude, altitude, x, y, z, x1, y1, z1, S; 
     double a = 6378137, C, f = 1/298.257224; 

     lattitude = <insert degrees> * Math.PI/180.0; 
     longitude = <insert degrees> * Math.PI/180.0; 
     altitiude = <insert altitude> 

     C= 1/(Math.Sqrt(Math.Pow(Math.Cos(lattitude),2.0) + Math.Pow((1 - f),2.0) *Math.Pow(Math.Sin(lattitude),2.0))); 
     S = Math.Pow(1 - f, 2.0) * C; 
     x = (a*C+altitude) * Math.Cos(lattitude) * Math.Cos(longitude); 
     y = (a*C+altitude) *Math.Cos(lattitude) * Math.Sin(longitude); 
     z = (a*S+altitude) * Math.Sin(lattitude); 

     lattitude = <insert degrees new> * Math.PI/180.0; 
     longitude = <insert degrees new> * Math.PI/180.0; 
     altitiude = <insert altitude new>; 


     x1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Cos(longitude); 
     y1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Sin(longitude); 
     z1 = (a * S + altitude) * Math.Sin(lattitude); 

     double distance; 
     distance = Math.Sqrt(Math.Pow(x1 - x, 2.0) + Math.Pow(y1 - y, 2.0) + Math.Pow(z1 - z, 2.0)); 

有谁知道究竟有多少有差别吗?本质上是如何精确计算在iPhone上?大圆距离?我似乎无法找到答案的任何地方

回答

1

The docs说:

“这种方法通过跟踪它们之间的 线下面的地球曲率 测量两个位置之间的距离 。由此产生的 弧是平滑曲线,并且不考虑特定高度 两个位置之间的变化。“

对我来说,这意味着大圆距离(事实上,它几乎是它的definition)。

我的理解(尽管我当然不是专家)是大圆圈计算(如Haversine)非常典型,通常认为对于大多数应用来说“足够好”。

关于主题here可能有更多的信息。 This question也是半相关的。

如果你真的关心它,我会尝试一些不同的算法,看看你能否确定哪种最适合你的需求。

相关问题