当前位置: 首页 > news >正文

math.atan2(y, x)

总是记不住math.atan2(y, x) 的计算得到的值对应什么情况,因此记录一下。

math.atan2(y, x) 的返回值范围是 [-π, π](即从 -180° 到 180°)。


源于:通义千问

具体说明:

  1. 范围解释

    • atan2(y, x) 返回的是点 (x, y) 与原点 (0, 0) 连线的向量与正 x 轴之间的夹角。
    • 角度以弧度为单位,范围为 [-π, π]
      • 0 表示正 x 轴方向。
      • π/2 表示正 y 轴方向。
      • π 表示负 x 轴方向。
      • -π/2 表示负 y 轴方向。
  2. 象限分布

    • 根据点 (x, y) 所在的象限,atan2 会返回对应的角度:
      • 第一象限x > 0, y > 0):角度范围 [0, π/2]
      • 第二象限x < 0, y > 0):角度范围 [π/2, π]
      • 第三象限x < 0, y < 0):角度范围 [-π, -π/2]
      • 第四象限x > 0, y < 0):角度范围 [-π/2, 0]
  3. 特殊情况

    • 当点位于坐标轴上时:
      • (x > 0, y = 0):返回 0(正 x 轴方向)。
      • (x = 0, y > 0):返回 π/2(正 y 轴方向)。
      • (x < 0, y = 0):返回 π(负 x 轴方向)。
      • (x = 0, y < 0):返回 -π/2(负 y 轴方向)。
    • 当点位于原点 (x = 0, y = 0) 时:
      • 返回值通常为 0,但严格来说,原点没有方向,结果可能依赖于具体实现。

示例代码

以下代码展示了不同点的 atan2 值及其对应的象限和角度范围:

import math# 定义一些点
points = [(1, 0),   # 正 x 轴(1, 1),   # 第一象限(0, 1),   # 正 y 轴(-1, 1),  # 第二象限(-1, 0),  # 负 x 轴(-1, -1), # 第三象限(0, -1),  # 负 y 轴(1, -1)   # 第四象限
]# 计算每个点的角度
for x, y in points:angle_radians = math.atan2(y, x)angle_degrees = math.degrees(angle_radians)print(f"点 ({x}, {y}): 弧度 = {angle_radians:.4f}, 角度 = {angle_degrees:.2f}°")
输出结果:
点 (1, 0): 弧度 = 0.0000, 角度 = 0.00°
点 (1, 1): 弧度 = 0.7854, 角度 = 45.00°
点 (0, 1): 弧度 = 1.5708, 角度 = 90.00°
点 (-1, 1): 弧度 = 2.3562, 角度 = 135.00°
点 (-1, 0): 弧度 = 3.1416, 角度 = 180.00°
点 (-1, -1): 弧度 = -2.3562, 角度 = -135.00°
点 (0, -1): 弧度 = -1.5708, 角度 = -90.00°
点 (1, -1): 弧度 = -0.7854, 角度 = -45.00°

总结

  • math.atan2(y, x) 的返回值范围是 [-π, π]
  • 它的优点是可以自动处理所有象限,并避免了普通 atan 函数无法区分象限的问题。
http://www.xdnf.cn/news/253819.html

相关文章:

  • 人工智能搜索时代的SEO:关键趋势与优化策略
  • PyTorch 2.0编译模式深度评测:图优化对GPU利用率的影响
  • LabVIEW 中VI Server导出 VI 配置
  • 深入理解 C++ 数据类型:从基础到高级应用
  • JDBC编程实战:从基础连接到高效连接池应用
  • 【五一培训】Day 2
  • 多模态大模型轻量化探索-开源SmolVLM模型架构、数据策略及其衍生物PDF解析模型SmolDocling
  • 工作记录 2017-12-12 + 在IIS下发布wordpress
  • 程序员转行酒店用品客户经理
  • 算法界的“达摩克利斯之剑”——NP完全性理论
  • C++ std::initializer_list 详解
  • 网工_UDP协议
  • NFS 快速开始
  • ppt设计美化公司_杰青_长江学者_优青_青年长江学者_万人计划青年拔尖人才答辩ppt模板
  • AE/PR插件 转场创建大师专业版 Transition Master Pro v2.0.2 Win+使用教程
  • tinycudann安装过程加ubuntu18.04gcc版本的升级(成功版!!!!)
  • 计算机网络01-网站数据传输过程
  • aws(学习笔记第四十课) image-content-search
  • [Linux]从零开始的STM32MP157 Buildroot根文件系统构建
  • 如何实现服务的自动扩缩容(Auto Scaling)
  • Kotlin Flow流
  • GZIPInputStream 类详解
  • Linux_sudo命令的使用与机制
  • 5.2刷题
  • libevent库详解:高性能异步IO的利器
  • python 常用web开发框架及使用示例
  • Python 在世界地图上加气泡图
  • 【多线程】六、基于阻塞队列的生产者消费者模型
  • react js 查看字体效果
  • MySQL 中的游标(Cursor)