本篇文章小编给大家分享一下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)的角度值。

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计算方位角代码实例相关推荐

  1. python杨辉三角代码,python实现杨辉三角的几种方法代码实例

    方法一:迭代 def triangle_1(x): """ :param x: 需要生成的杨辉三角行数 :return: """ trian ...

  2. python软件代码示例-用Python写一个模拟qq聊天小程序的代码实例

    Python 超简单的聊天程序 客户端: import socket, sys host = '10.248.27.23' # host = raw_input("Plz imput des ...

  3. 能不能用python开发qq_用Python写一个模拟qq聊天小程序的代码实例

    用Python写一个模拟qq聊天小程序的代码实例 发布时间:2020-09-09 07:49:29

  4. 用Python写一个模拟qq聊天小程序的代码实例

    前言 今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧 Python 超简单的聊天 ...

  5. python实现一个简单的加法计算器_Python tkinter实现简单加法计算器代码实例

    tkinter 是 Python 的标准 GUI 库.Python 使用 tkinter 可以快速的创建 GUI 应用程序.由于 tkinter 是内置到 python 的安装包中.只要安装好 Pyt ...

  6. python返回值return用法_Python中return函数返回值代码实例用法

    本篇文章小编给大家分享一下Python中return函数返回值代码实例用法,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. return 添加返回值 r ...

  7. python监听文件最后修改人_Python持续监听文件变化代码实例

    在日常的工作中,有时候会有这样的需求,需要一个常驻任务,持续的监听一个目录下文件的变化,对此作出回应. pyinotify就是这样的一个python包,使用方式如下: 一旦src.txt有新的内容,程 ...

  8. python快递分拣小程序_python英语单词测试小程序代码实例

    这篇文章主要简介了python英语单词测试小程序代码实例,文中通过示例代码简介的非常具体,对大家的学习或者工作具有一定的参考学习网上卖,需要的朋友可以学习下 爬取了扇贝英语网,并制作了一个英语单词测试 ...

  9. 用python画树_Python+Turtle动态绘制一棵树实例分享

    本文实例主要是对turtle的使用,实现Python+turtle动态绘制一棵树的实例,具体代码: # drawtree.py from turtle import Turtle, mainloop ...

  10. python的使用说明_Python教程:Python中__init__.py的使用用法说明

    Python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...

最新文章

  1. 数据库权限的分配与回收
  2. 【开放书】《命令行数据科学指南(第二版)》
  3. 代码农民从做事情的经验
  4. Bad connect ack with firstBadLink 192.168.*.*:50010
  5. 【Android APT】注解处理器 ( Element 注解节点相关操作 )
  6. 011_fastdfs-client-java模块
  7. JavaScript.The.Good.Parts阅读笔记(一)假值与===运算符
  8. mysql mtq_MySQL基础知识 - osc_r3mtqivi的个人空间 - OSCHINA - 中文开源技术交流社区
  9. 复合数据类型,英文词频统计
  10. 在 520 这天,竟然有人把 Docker讲清楚了? | 原力计划
  11. 30个HTML标签,10.30 html标签
  12. linux C下的setjmp与longjmp介绍
  13. HDU1582 AC Again【DFS】
  14. 前端 psd切片生成html.css,1个将PSD网页模板切片输出为DIV+CSS架构网页教程
  15. win10 +ubuntu20.04双系统安装:双硬盘+nvidia独立显卡
  16. 论文浅尝 | MISC:融合COMET的混合策略模型进行情感支持对话
  17. 在经贸,有一种爱叫做放手
  18. 电子制造仓储条码管理系统解决方案
  19. 计算机视觉--图像的拼接融合
  20. 高等概率论 Chapter 9. Integration with Respect to a Probability Measure1

热门文章

  1. 新人服务器上快速简单搭建cs
  2. form表单中@submit.prevent作用
  3. 转:嵌入式的经典书籍
  4. ios微信支付失败 php,iOS微信支付的那些坑
  5. uniapp小程序根据经纬度精确定位
  6. 夕夕博士的视频观后笔记集合~
  7. ios控制视图切换方向
  8. linux配置4g网络命令_[4G]Linux平台上实现4G通信
  9. 计算机中的微信无法启动,微信电脑版无法直接打开EXCEL:为什么电脑打不开excel表格...
  10. Docker端口映射后,外机访问不了的问题