Math 在给定平面'的情况下,如何从平面中找到点的纬度和经度;什么是航向、纬度、经度?

Math 在给定平面'的情况下,如何从平面中找到点的纬度和经度;什么是航向、纬度、经度?,math,geometry,latitude-longitude,Math,Geometry,Latitude Longitude,假设我有一架飞机在地球的某一点飞行。我使用的地球模型的纬度是-90/90,经度是-180/180。飞机以80.123º和170.123º的纬度/长和10000英尺的高度飞行,如附图所示。飞机还有一个航向,就是它与北方的夹角。在图片中,角度略大于180º,所以它正从北极飞走。现在,我想从这个平面找到一个点的经纬度。给我一个距离d,它是平面和点之间的距离,它应该在平面指向的方向(航向)。我也得到了这一点的高度。有没有人能帮我找到一个公式,在给定飞机的纬度/经度/高度/航向的情况下,我可以用它来计算该

假设我有一架飞机在地球的某一点飞行。我使用的地球模型的纬度是-90/90,经度是-180/180。飞机以80.123º和170.123º的纬度/长和10000英尺的高度飞行,如附图所示。飞机还有一个航向,就是它与北方的夹角。在图片中,角度略大于180º,所以它正从北极飞走。现在,我想从这个平面找到一个点的经纬度。给我一个距离d,它是平面和点之间的距离,它应该在平面指向的方向(航向)。我也得到了这一点的高度。有没有人能帮我找到一个公式,在给定飞机的纬度/经度/高度/航向的情况下,我可以用它来计算该点的纬度/经度?非常感谢

    #EDIT: Below is my conversion of Vitor's calculations to a Python script

    r_earth = 3440 #earth radius in nautical miles
    h_plane = 1.645788 #plane flying at 10000 ft in nautical miles
    h_dest = 0
    P = 90 #flying 90 degrees from North, so towards Florida
    #lat,long of the center of Texas = 31.005753,-99.21390 
    d = 10 # point is 10 nautical miles away
    PN = 58.994247 #latitude = 90 - PN
    longitude = -99.21390 
    r_plane = r_earth + h_plane
    r_dest = r_earth + h_dest
    PD = math.acos((r_plane**2 + r_dest**2 - d**2)/(2*r_plane*r_dest))
    ND = math.acos(math.cos(PN)*math.cos(PD) + math.sin(PN)*math.sin(PD)*math.cos(P))
    N = math.asin(math.sin(PD)*math.sin(P)/math.sin(ND))
    print(str(90 - ND) + "," + str(longitude + math.sin(N)))

我假设地球是球形的(误差很小)

考虑球面三角形(平面、北极、目的地)=PND

首先,使用(平面)余弦规则将距离
d
转换为平面与其目标之间的球面弧:

r_plane = (r_earth + h_plane)
r_dest = (r_earth + h_dest)
cos(PD) = (r_plane^2 + r_dest^2 - d^2)/(2*r_plane*r_dest)
注意

  • 90-PN
    是飞机的纬度,并且
  • P
    处的角度是飞机的航向(方位角)
  • 现在,使用:

    您可以通过计算获得目的地的纬度
    90-ND

    这一次,使用:


    它给出了飞机与其目的地之间的绝对经度差。

    您知道如何计算飞机与该点之间的角距离(从地球中心测量)吗?@Beta Hi Beta,谢谢您的输入。我知道地球的半径,点的高度和飞机,所以我相信可以计算出两个点之间的角度差,但我不太确定,因为我的几何结构有点生锈。我相信飞机的航向不会改变计算中的角度差。(你至少要磨练你的三角技巧,否则答案对你来说就没有意义了。)现在假设飞机在北极,从本初子午线开始测量飞机的航向(例如,-83意味着它要飞往俄亥俄州的哥伦布)。给定角距离,你能找到该点的纬度/经度吗?@Beta表示飞机高度为10000英尺(约1.65海里),该点的高度为0(地球表面),飞机与该点之间的距离d为10海里(斜边)。现在我有一个直角三角形,所以我可以找到地球表面上两点之间的距离(忽略地球的曲率)。我计算它是99.986纳米。现在使用弧长公式(长度=(θ/360º)*(2pi*r)),其中r是地球的半径(3440 nm),θ是两个点与地球中心之间的角度。@Beta插入所有元素,我得到θ=(99.986 nm/2pi*3440 nm)*360º=1.67º。但现在我知道了这一点,我有点不知所措,不知该从这里走到哪里。我如何考虑飞机的航向?嗨,维托,谢谢你的回答。我将其转换为python脚本,飞机以31.005753,-99.21390的纬度/长度开始飞行,位于德克萨斯州的中心,飞行高度为10000英尺,航向为90度(因此向佛罗里达飞行)。该点距离10海里,高度为0。然而,当我打印新的lat/long时,我得到87.5531402313,-99.2098967929,它不是朝向佛罗里达,而是朝向北极。你知道我的脚本有没有出错吗?我把它贴在下面。谢谢,我已经将我的Python脚本添加到原始问题中。如果我在脚本中出错,请告诉我。非常感谢。不客气!你明白了:当我回答这个问题时,我脑子里已经有了python代码。但请注意,python的trig函数使用弧度,因此需要从和转换为度。最后,对于逆函数的余域,考虑它通常是有用的:打印(度(acos(x)),360度(acos(x)))打印(度(asin(x)),180度(asin(x)),明白了,现在有意义了。非常感谢。
    cos(ND) = cos(PN)*cos(PD) + sin(PN)*sin(PD)*cos(P)
    
    sin(N) = sin(PD)*sin(P)/sin(ND)