如何判断两架飞机在汇聚飞行?(如何计算两架飞机的航向夹角?)内含程序源码

ok,在开始一切之前,让我先猜一猜,你是不是想百度“二维平面下如何计算两个移动物体的航向夹角?”如果是,那就请继续往下看。

首先,我们要明确一个概念:航向角≠航向夹角!!!!!!我说的是航向夹角,我可跟那** 百度不一样,*百度一搜航向夹角,全**弹出来的是航向角。

Angle Off”(夹角)是用来描述一架飞机与另一架的优势或劣势关系的术语。 是你和敌机航向之间的夹角,用度为单位表示。如果你敌机之间的航向一致,那么你的夹角就是 0°;而 90°夹角就说明你垂直于敌机。夹角也被称之为 HCA(航向夹角 Heading Crossing Angle)。
在这里插入图片描述

什么是汇聚飞行?

在这里插入图片描述
上图即为汇聚飞行示意图,红色的箭头是飞机飞行的速度方向。

什么是分散飞行?

在这里插入图片描述

上图即为分散飞行示意图,红色的箭头是飞机飞行的速度方向。

OK!!我们的标题是——如何判断两架飞机在汇聚飞行?答案是:请告诉我你两架飞机的飞行坐标(x,y)以及你两架飞机的飞行速度(V_x,V_y)!!

路人:飞机,飞机,都飞起来了,你这飞机怎么没有高度z和z轴的速度的?

我:我把3维的空间全当做二维的平面处理了,这篇博客全都是从二维平面的角度出发的。因为3维变二维可以大大简化我的工作量,3维会导致我猪脑过载,猪脑的CPU容易冒烟,望李姐。

路人:只给两架飞机的速度信息(V_x,V_y),还不能判断飞机是在汇聚还是在分散飞行吗?

我:不能。因为,如下:
在这里插入图片描述

上图中,飞机的航向夹角都是45°,但是由于飞行起点的不同,左边的两架飞机是在汇聚飞行,将交于一点,而右边的两架飞机则是在分散飞行,它们只会越飞越远。

使用我下面给出的这一段python程序,就能判断出两架飞机是在汇聚还是在分散飞行,并且能得到两架飞机的航向夹角。函数的输入参数是:飞机一的坐标(x,y),速度(vx,vy),飞机二的坐标(X,Y),速度(Vx,Vy),航向夹角可以根据高中数学课本中的两矢量夹角公式求得:
在这里插入图片描述

而关于飞机汇聚飞行和分散飞行的判断,我的处理方法是:计算当前时刻k下两架飞机的二范数,再计算下一时刻k+1下两架飞机的二范数,如果当前时刻的范数大于下一时刻的范数,就意味着两架飞机越飞越近,就是汇聚飞行,反之亦然。

至此,代码如下,拿走不谢,复制即用,不行砍我!

import math
x,y,vx,vy=0,0,1,0#飞机一参数
X,Y,Vx,Vy=0,-1,1,1#飞机二参数

def ddd(x,y,vx,vy,X,Y,Vx,Vy):
    angle=math.acos((vx*Vx+vy*Vy)/(math.hypot(vx,vy)*math.hypot(Vx,Vy)))*180/math.pi
    dis1=math.hypot((x-X),(y-Y))
    dis2=math.hypot((x+vx)-(X+Vx),(y+vy)-(Y+Vy))
    if dis1>dis2:
        print('汇聚')
    elif dis1<dis2:
        print('分散')
    else:
        print('静止没变')
    print('航向夹角:',angle)

ddd(x,y,vx,vy,X,Y,Vx,Vy)

演示结果如下:
在这里插入图片描述

参考文献:
知乎的一篇文章
一篇硕士学位论文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值