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里将list中元素依次向前移动一位
Sep 12 Python
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
用Python将Excel数据导入到SQL Server的例子
Aug 24 Python
python匿名函数的使用方法解析
Oct 10 Python
python生成任意频率正弦波方式
Feb 25 Python
python Plotly绘图工具的简单使用
Mar 03 Python
class类在python中获取金融数据的实例方法
Dec 10 Python
Python实现自动整理文件的脚本
Dec 17 Python
pycharm2021激活码使用教程(永久激活亲测可用)
Mar 30 Python
详解python字符串驻留技术
May 21 Python
解决pytorch-gpu 安装失败的记录
May 24 Python
python编程实现清理微信重复缓存文件
Nov 01 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实现的通用图片处理类
2015/03/24 PHP
CI框架常用函数封装实例
2016/11/21 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
Laravel框架实现的使用smtp发送邮件功能示例
2019/03/12 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
Javascript 类型转换方法
2010/10/24 Javascript
js post提交调用方法
2014/02/12 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
Node.js中调用mysql存储过程示例
2014/12/20 Javascript
jquery中JSON的解析方式
2015/03/16 Javascript
简单分析javascript面向对象与原型
2015/05/21 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
JS简单去除数组中重复项的方法
2016/09/13 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
微信小程序 require机制详解及实例代码
2016/12/14 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
node 解析图片二维码的内容代码实例
2019/09/11 Javascript
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
Django 2.0版本的新特性抢先看!
2018/01/05 Python
Python字典深浅拷贝与循环方式方法详解
2020/02/09 Python
Python实现打包成库供别的模块调用
2020/07/13 Python
python制作抽奖程序代码详解
2021/01/15 Python
让IE6支持css3,让 IE7、IE8 都支持CSS3
2011/10/09 HTML / CSS
过滤器的用法
2013/10/08 面试题
大学生创业计划书的范文
2014/01/07 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
学习十八届三中全会精神实施方案
2014/02/17 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
2014年科协工作总结
2014/12/09 职场文书
汽车转让协议书
2015/01/29 职场文书
辞职信模板(中英文版)
2015/02/27 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书