gpt4 book ai didi

python 计算方位角实例(根据两点的坐标计算)

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python 计算方位角实例(根据两点的坐标计算)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

知道两点坐标,怎么计算两点方向的方位角?

答:首先计算坐标增量dx,dy(两个对应坐标分量相减,终点的减始点的).

若dx,dy中有一个为零时,根据另一个的正负决定方位角(0,90,180,270这四个中的一个,可画坐标轴图分析,但不要画为数学坐标哦).

基本思路:

若dx,dy都不为零;则 。

计算a=arcatn(|dy/dx|)(这好像叫象限角) 。

当dx>0dy>0时方位角=a,

当dx<0dy>0时方位角=180-a,

当dx<0dy<0时方位角=180+a; 负范围为a-pi 。

当dx>0dy<0时方位角=360-a; 负范围为-a 。

还有一种方法,使用 atan2来计算方位角,范围为-pi,pi 。

atan2(y,x)所表达的意思是坐标原点为起点,指向(x,y)的射线在坐标平面上与x轴正方向之间的角的角度.

结果为正表示从 X 轴逆时针旋转的角度,结果为负表示从 X 轴顺时针旋转的角度.

atan 和 atan2 都是求反正切函数,如:有两个点 point(x1,y1), 和 point(x2,y2),

那么这两个点形成的斜率的角度计算方法分别是:

float angle = atan( (y2-y1)/(x2-x1) ); float angle = atan2( y2-y1, x2-x1 ),

atan 和 atan2 区别:

1:参数的填写方式不同; 。

2:atan2 的优点在于 如果 x2-x1等于0 依然可以计算,但是atan函数就会导致程序出错; 。

3:atan2(a,b)的取值范围介于 -pi 到 pi 之间(不包括 -pi),而atan(a/b)的取值范围介于-pi/2到pi/2之间(不包括±pi/2).

另外要注意的是,函数atan2(y,x)中参数的顺序是倒置的,atan2(y,x)计算的值相当于点(x,y)的角度值.

?
1
2
3
4
5
6
7
8
9
10
11
12
atan2(y, x)是 4 象限反正切,它的取值不仅取决于正切值y / x,还取决于点 (x, y) 落入哪个象限:
 
当点(x, y) 落入第一象限时,atan2(y, x)的范围是 0 ~ pi / 2 ;
当点(x, y) 落入第二象限时,atan2(y, x)的范围是 pi / 2 ~ pi;
当点(x, y) 落入第三象限时,atan2(y, x)的范围是 -pi~-pi / 2 ;
当点(x, y) 落入第四象限时,atan2(y, x)的范围是 - pi / 2 0.
 
 
而 atan(y / x) 仅仅根据正切值为y / x求出对应的角度 (可以看作仅仅是 2 象限反正切):
 
当 y / x > 0 时,atan(y / x)取值范围是 0 ~ pi / 2
当 y / x < 0 时,atan(y / x)取值范围是 - pi / 2 0.

如果要实现方位角的计算,代码如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 计算方位角函数
def azimuthAngle( x1, y1, x2, y2):
   angle = 0.0 ;
   dx = x2 - x1
   dy = y2 - y1
   if x2 = = x1:
     angle = math.pi / 2.0
     if y2 = = y1 :
       angle = 0.0
     elif y2 < y1 :
       angle = 3.0 * math.pi / 2.0
   elif x2 > x1 and y2 > y1:
     angle = math.atan(dx / dy)
   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(dx / dy)
   elif x2 < x1 and y2 > y1 :
     angle = 3.0 * math.pi / 2.0 + math.atan(dy / - dx)
   return (angle * 180 / math.pi)

math中关于三角函数常用的操作:

?
1
2
3
4
5
6
import math
math.acos(x)  # 返回 x 的反余弦 弧度值。 
math.asin(x)  # 返回 x 的反正弦 弧度值。 
math.degrees(x)  # 将 弧度 转换为 角度, 如 degrees(math.pi/2) , 返回90.0 
math.radians(x)  # 将 角度 转换为 弧度
注意负数角度的转换。

以上这篇python 计算方位角实例(根据两点的坐标计算)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/JohinieLi/article/details/81041550 。

最后此篇关于python 计算方位角实例(根据两点的坐标计算)的文章就讲到这里了,如果你想了解更多关于python 计算方位角实例(根据两点的坐标计算)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com