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


Posted in Python onJanuary 17, 2020

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

答:首先计算坐标增量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)的角度值。

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.

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

# 计算方位角函数
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中关于三角函数常用的操作:

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

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

Python 相关文章推荐
Python中的装饰器用法详解
Jan 14 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
python妙用之编码的转换详解
Apr 21 Python
Python+tkinter使用40行代码实现计算器功能
Jan 30 Python
pycharm执行python时,填写参数的方法
Oct 29 Python
Python2和Python3之间的str处理方式导致乱码的讲解
Jan 03 Python
解决Pycharm界面的子窗口不见了的问题
Jan 17 Python
python sklearn常用分类算法模型的调用
Oct 16 Python
python 使用while循环输出*组成的菱形实例
Apr 12 Python
使用Python pip怎么升级pip
Aug 11 Python
Python configparser模块应用过程解析
Aug 14 Python
python批量提取图片信息并保存的实现
Feb 05 Python
Python autoescape标签用法解析
Jan 17 #Python
flask利用flask-wtf验证上传的文件的方法
Jan 17 #Python
Python with标签使用方法解析
Jan 17 #Python
Python运行DLL文件的方法
Jan 17 #Python
Python3实现mysql连接和数据框的形成(实例代码)
Jan 17 #Python
python如何基于redis实现ip代理池
Jan 17 #Python
解决python gdal投影坐标系转换的问题
Jan 17 #Python
You might like
用PHP+MySql编写聊天室
2006/10/09 PHP
使用PHP提取视频网站页面中的FLASH地址的代码
2010/04/17 PHP
php截取字符串函数分享
2015/02/02 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
向fckeditor编辑器插入指定代码的方法
2007/05/25 Javascript
对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)
2011/07/31 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
JS文本框默认值处理详解
2013/07/10 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
Bootstrap轮播插件中图片变形的终极解决方案 使用jqthumb.js
2016/07/10 Javascript
最全面的百度地图JavaScript离线版开发
2016/09/10 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
Bootstrap风格的WPF样式
2016/12/07 Javascript
详解JavaScript对象的深浅复制
2017/03/30 Javascript
JavaScript动态绑定详解
2017/09/14 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
2018/01/26 Javascript
vue使用localStorage保存登录信息 适用于移动端、PC端
2019/05/27 Javascript
基于layui内置模块(element常用元素的操作)
2019/09/20 Javascript
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
python 域名分析工具实现代码
2009/07/15 Python
python中关于日期时间处理的问答集锦
2013/03/08 Python
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Django中处理出错页面的方法
2015/07/15 Python
python 表达式和语句及for、while循环练习实例
2017/07/07 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
css3中background新增的4个新的相关属性用法介绍
2013/09/26 HTML / CSS
Jabra捷波朗美国官网:用于办公、车载和运动的无线蓝牙耳麦
2017/02/01 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
市场营销专业推荐信
2013/11/03 职场文书
财政局长自荐信范文
2013/12/22 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
运动会致辞稿
2015/07/29 职场文书
2016年小学“感恩教师”主题队日活动总结
2016/04/01 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫