1

行。所以我想事情会是设想纽约市和北京在谷歌地球上突出显示......

我试图弄清楚如何将点映射到 3d 原始对象(球体)上,通过圆周的任何方向获取它们的距离,以及通过直径获取它们的距离。这些点将是纬度和经度坐标。

现在,这就是我试图用来映射坐标的(代码不可知版本):

  x1 =  radius * cos(long1) * cos(lat1);
  y1 =  radius * sin(long1) * cos(lat1);
  z1 =  radius * sin(lat1);

但我几乎可以肯定它错了。我怎样才能得到每个点的位置并计算它们在球体直径上的距离以及它们在球体圆周上的距离?

谢谢。

4

1 回答 1

4

你其实很接近。要获得直线距离,您只需执行以下操作:

sqrt((x2-x1)^2 + (y2-y1)^2 + (z2-z1)^2)

对于大圆周围的距离,请记住它是 pi直径角。从地球中心到两点的向量的点积是角度的余弦。所以,你得到:

圆周率acos((x1*x2 + y1*y2 + z1*z1)/ diam ^2)

当然,如果你绕地球走另一条路,则有第二个距离,但为此你只需要 2*pi - acos(...)。

于 2009-12-05T03:13:34.147 回答