我的纬度,经度和行程方向都是真北。我想计算一下我是否会与另外两个Lat / Lon点定义的直线相交。
我认为定义该线的两个点将创建我的大圆,我的位置和方位角将定义我的Rhumb线。
我只对几百公里的交叉点感兴趣,所以我不需要一切可能的解决方案。
我不知道从哪里开始。
答案 0 :(得分:4)
简单的答案是肯定的 - 如果你从任何纬度/经度开始并继续沿着一个大圆圈旅行,你将最终穿越地球上的任何和所有其他大圆圈。地球上每两个大圆圈恰好在两个点上相互交叉(除了两个完全相同的大圆之外,它们在所有点上相互交叉。)
但我猜你不只是问一个是/否的问题。你可能想知道那两个大圆圈究竟在哪里相交。我们可以使用以下策略来找出:
每个大圆都在一个穿过地球中心的平面上。
这些平面的交点是一条线(假设它们不是完全相同的平面。)
这条相交的线在两个点上穿过地球表面 - 正是我们两个大圆相交的地方。
我们的使命是:(1)找到飞机。 (2)找到他们的交叉线。 (3)找到两个交点,最后,(4)用lat / long表示这些交点。 (5)额外的信用来确定哪个交叉点更接近你开始的纬度/经度。
听起来不错?以下使用trig和vector数学进行此操作。为了简化数学,我们将:
第1步 - 找到飞机:
我们真正关心的是plane normals。以下是我们如何找到它们:
- 一个大圆圈由它穿过的地球上的两个点定义
法线将是来自原点(0,0,0)的每个点的(x,y,z)向量的cross product。给定每个点的纬度/经度,使用spherical coordinates转换,相应的(x,y,z)为:
x=cos(lat)*sin(lon)
y=cos(lat)*cos(lon)
z=sin(lat)
有了它,我们的两个点给出为lat1 / lon1和lat2 / lon2,我们可以找出向量P1 =(x1,y1,z1)和P2 =(x2,y2,z2)。
第一个大圆正常则是叉积:
N1=P1 x P2
- 另一个大圆圈由地球上的一个点和方位角定义
我们有一个点P3和一个方位角T.我们将通过使用spherical law of cosines also solved for our convenience here找到沿着方圆T在距离PI / 4处穿过P3的大圆的点P4。 }):
lat4=asin(cos(lat3)*cos(T))
lon4=lon3+atan2(sin(T)*cos(lat3),-sin(lat3)*sin(lat4))
然后正常就像以前一样:
N2=P3 x P4
第2步:找到相交线的平面:
鉴于两个平面法线,their cross product defines their intersecting line:
L=N1 x N2
第3步:找到交叉点:
只需normalize向量L即可得到单位球面上的一个交点。另一点是球体的另一面:
X1=L/|L|
X2=-X1
第4步:用lat / lon表示交叉点:
给定X =(x,y,z),再次使用spherical coordinate conversion,并考虑该点在单位范围内:
lat=asin(z)
lon=atan2(y,x)
第5步:两点中哪一个更接近?
使用haversine formula计算从点到X1和X2的距离,选择较近的点。
答案 1 :(得分:2)
我认为最好的办法是使用stereographic projection将问题从球体映射到平面。此投影非常有用,因为它将您的垂直线映射到形式为 R = exp(θa)(也称为loxodrome)的对数螺旋,并将您的大圆映射到平面上的圆。所以你的问题减少到找到对数螺旋和圆的交点(之后你映射回球体)。
这只是一个让你入门的草图。如果您需要更多详细信息,请询问。