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获取糗百图片代码实例
Dec 18 Python
python绘图库Matplotlib的安装
Jul 03 Python
在Python的Django框架中包装视图函数
Jul 20 Python
Python作用域用法实例详解
Mar 15 Python
python3音乐播放器简单实现代码
Apr 20 Python
python 异常处理总结
Oct 18 Python
Python实现的逻辑回归算法示例【附测试csv文件下载】
Dec 28 Python
对django后台admin下拉框进行过滤的实例
Jul 26 Python
Django中使用haystack+whoosh实现搜索功能
Oct 08 Python
python实现滑雪游戏
Feb 22 Python
python爬虫使用scrapy注意事项
Nov 23 Python
Django中template for如何使用方法
Jan 31 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
php 短链接算法收集与分析
2011/12/30 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
php操作access数据库的方法详解
2017/02/22 PHP
ThinkPHP5.0框架实现切换数据库的方法分析
2019/10/30 PHP
腾讯UED 漂亮的提示信息效果代码
2011/09/12 Javascript
javascript实现des解密加密全过程
2014/04/03 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
vue 全选与反选的实现方法(无Bug 新手看过来)
2018/02/09 Javascript
详解如何在vue-cli中使用vuex
2018/08/07 Javascript
从理论角度讨论JavaScript闭包
2019/04/03 Javascript
JS Math对象与Math方法实例小结
2019/07/05 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
python3 cvs将数据读取为字典的方法
2018/12/22 Python
Python如何使用函数做字典的值
2019/11/30 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
python-图片流传输的思路及示例(url转换二维码)
2020/12/21 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
小区消防演习方案
2014/02/21 职场文书
淘宝客服专员岗位职责
2014/04/11 职场文书
教师年度考核评语
2014/04/28 职场文书
应届毕业生自荐书
2014/06/18 职场文书
小学生国庆演讲稿
2014/09/05 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
2014年化工厂工作总结
2014/11/25 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
2015年惩防体系建设工作总结
2015/05/22 职场文书
祝福语集锦:给百岁老人祝寿贺词
2019/11/19 职场文书