我也把思考题算好了,结果跟周聃学长的一致,但方法很粗暴,就是不停用球面余弦法则算出边和角。这里说说怎么做,毕竟对很多人来说这较容易理解。 首先说说这球面余弦法则。假如在球面有个三角形ABC,你知道边长a和b和它们的夹角C,想知道边长c。怎做?注意,在球面,边也是以角度表达。把球面的半径定为1单位,把C设定为z轴,所以C是(0,0,1)。把x轴设在A的方向,那A的座标便是(sin b, 0, cos b)。最后算算B的座标,容易得知它所在的大圆与x-y平面交于(cos C, sin C, 0),从而得知B点是(sin a cos C, sin a sin C, cos a)。最后,我们知道向量OA和OB的内积就是cos AOB = cos c,所以cos c = cos a cos b + sin a sin b cos C。这就是球面余弦法则。 顺带一提,平面余弦法则是它的短边极限:1-c^2/2 = (1-a^2/2-b^2/2) + a b cos C,整理一下便是我们熟悉的 c^2 = a^2 + b^2 - 2ab cos C。 就这样,知道两边一角,你便知道剩下的边。跟平面的余弦法则一样,你可以倒过来用,知道三条边求任意夹角。 那跟经纬道有什么关系?题目的飞机飞的是大圆,可以看成为三角形的一边,另外两边是起点和终点的经线(经线也是大圆),最后的角是北极。这样,纬度便是90度减边长,飞行方向是经线和路径的夹角,而在北极的角便是经度跑了多少。一开始时你知道的开始纬度和飞行距离是两条边,飞行方向是夹角,用余弦法则三次,便可知道余下的一边两角,从而得知终点纬度,经度变化和终点方向。小心的推算,留意向东还是向西,那每点的经纬道和飞行方向便可算出来。 最后,说一下每个点的经纬度,以便有兴趣的网友对一对答案: * 起点:(116.41,39.9),方向0度(与经线夹角)。飞行半径定为地球半径6371公里。 * 第一点(116.41,57.89),飞行方向0度,后改为90度。 * 第二点(85.00, 53.67),飞行方向116.20度,后改为-153.80度。 * 第三点(94.83, 37.02),飞行方向-160.88度,后改为-70.88度。 * 终点(第四点)是(117.50,40.80),Google说是北京市的东北,百草洼森林公园西方。
最后的问题其实熟悉球面几何的话很简单。 提示: 其实“前进 L,左转 theta”这个操作一直重复下去是有对称性的,重复4次如果继续考虑下去就会意识到,其实所有这些点都在一个小圆上。意识到这一点就很简单了,因为每次操作就等于绕这个小圆的圆心、以某个恒定的角度 alpha 在小圆上移动一次。 以下为省事,用 a 代替 alpha,而 L 为每次前进距离/地球半径,r 为小圆半径/地球半径。 用球面上余弦公式可得 cos r = cos r cos L + sin r sin L cos pi/4 cos L= (cos r)^2 + (sin r)^2 cos a 上一式可以求解 r ,代入下一式可以求解 a。这样小圆的半径和每次旋转的角度就都知道了,圆心也不难找到。只要找到转 4a 后的点就可以了。 得到 4a 后, 减去 2pi 的倍数,得到的就是终点相对于起点旋转的角度 a'。再用两次余弦公式就能得到 起点-终点 的距离 d 以及 圆心-起点-终点 的角度 b,而圆心-起点-北极 的角度已经知道,是45度,所以 北极-起点-终点 的角度就是上面的 b 再减去45度。 以下求解。 地球半径 6378km,L=2000/6378 r=tan^-1(2^0.5*(1-cos(2000/6378))/sin(2000/6378))=0.219951 a=cos^-1((cos(2000/6378)-(cos(0.219951))^2)/(sin(0.219951))^2)=1.59518 pi/2=1.570796,所以 a>pi/2 理所应当。 4a-2pi=0.0957408=a' 定义这个新的角度。 再用余弦公式 cos d = (cos r)^2+(sin r)^2 cos a' d=0.02088 cos r = cos r cos d + sin r sin d cos b b=1.52408 b-pi/4=0.738682 约等于 42.32度。 d*6378km = 133.17km 所以在北京向北偏东42.32度,133.17km的地方。似乎在前不着村后不着店的荒野…… 截图+GIMP旋转,目测经纬坐标大约 40°48'58.7"N 117°28'57.9"E。( 当然直接在地图上画直线仍然会包含球面-平面投影的误差,但应该很小。精确坐标也能算,就是要麻烦些,而且跟估算的区别大概比北京市本身大小还小,没什么必要。简单算法: 从起点(北京)的纬度获得其到北极的距离,继续用两次余弦公式,用于 北极点-起点-终点 的三角形,可以获得 北极点-终点 距离,得到终点的纬度;然后获得 起点-北极点-终点 的角度,也就得到 终点相对起点 的经度差别。于是得到 终点的经纬度。有兴趣的朋友可以算一下,看看跟估算差别多大。) *edit 修正了一个小数点错误,又修正了最后d的乘法错误,希望这次结果正确了。