已知物体的两个坐标 计算移动方向 - python
生活随笔
收集整理的這篇文章主要介紹了
已知物体的两个坐标 计算移动方向 - python
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.已知條件
在直角平面坐標(biāo)中,我們已知兩個坐標(biāo)點(diǎn)的位置,即物體的上一時(shí)刻位置(x1,y1) 和 此時(shí)位置(x2,y2) , 想要知道 該物體的移動方向(直角坐標(biāo)系的360°角),該如何計(jì)算?
2.解題思路
這是一個可以用反三角函數(shù)解的題,需要額外判斷的是角的象限。
因?yàn)橐阎獌牲c(diǎn)坐標(biāo),坐標(biāo)增量dx(x2-x1),dy(y2-y1),兩個對應(yīng)坐標(biāo)分量相減,終點(diǎn)減始點(diǎn)。
下面用數(shù)學(xué)知識解出對應(yīng)方位角及象限。
反正切函數(shù)就是好幾個這樣的曲線疊加,我們根據(jù)坐標(biāo)增量進(jìn)行計(jì)算以及判斷方位角
3.代碼實(shí)現(xiàn)
(根據(jù)網(wǎng)傳的一份代碼改編,著重調(diào)整了判斷象限的部分,變成了以x軸正方向?yàn)?°,四個象限一共360°的移動方向角計(jì)算函數(shù))
def azimuthAngle(x1, y1, x2, y2):angle = 0.0000dx = x2 - x1dy = y2 - y1if x2 == x1:angle = math.pi / 2.0if y2 == y1 :angle = 0.0elif y2 < y1 :angle = 3.0 * math.pi / 2.0elif x2 > x1 and y2 > y1:angle = math.atan(dy / dx)elif x2 < x1 and y2 > y1 :angle = math.pi / 2 + math.atan(-dy / dx)elif x2 < x1 and y2 < y1 :angle = math.pi + math.atan(dy / dx)elif x2 > x1 and y2 < y1 :angle = 3.0 * math.pi / 2.0 + math.atan(dy / -dx)return (angle * 180 / math.pi)結(jié)果如下圖 :
總結(jié)
以上是生活随笔為你收集整理的已知物体的两个坐标 计算移动方向 - python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式linux cdc类 usb4G网
- 下一篇: java 单点登出_CAS单点登出的原理