Math.atan2求角度解析

本文涉及的产品
云解析DNS,个人版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: `Math.tan(x/y)` 求得是与y轴的夹角,而 `Math.atan2(y, x)` 求得是与x轴的夹角(范围:\(-\pi\) 到 \(\pi\)),顺时针为负,逆时针为正。`Math.atan2` 函数注意点:y在前,x在后。它能正确处理各象限的角度,例如 `Math.atan2(1, 1)` 返回 \(\frac{\pi}{4}\),而 `Math.atan2(-1, -1)` 返回 \(-\frac{3\pi}{4}\)。

我们求角度的时候,

第一反应应该是Math.tan(x/y)就得到角度了

坐标系
但是这样求的是和y轴的夹角,如果以y轴正方向为0度,顺时针为正,则第三象限和第一象限的tan值一致,需要判断x,y和0的关系,从而判定该角度是多少


也看到过Math.atan2(y, x)这个函数,

其实这个函数是这样的:
它求的是和x轴正方向的夹角,x轴正方向为0,顺时针为负值,逆时针为正值,顺逆时针(判定为优弧所在范围), 取值范围(-PI, PI]

描述

/**
 * 求角度,弧度制
 * @param {Number} y y值
 * @param {Number} x x值
 * @returns 和x轴正方向所成夹角,x轴上方为正,下方为负
**/
Math.atan2(y, x)

注意:这个函数第一个参数为y, 第二个参数为x
Math.atan2(y, x)

证明:

  1. 先记住几个数:¼PI、¾PI、-¼PI、-¾PI
    ```javascript
    1/4 * Math.PI // 0.7853981633974483 第一象限

3/4 * Math.PI // 2.356194490192345 第四象限

-1/4 * Math.PI // -0.7853981633974483 第二象限

-3/4 * Math.PI // -2.356194490192345 第三象限

2. 接下来我们求x、y为±1的时候的值

Math.atan2(1, 1) // 0.7853981633974483 四分之一PI 的值

Math.atan2(-1, 1) // -0.7853981633974483 负四分之一PI 的值

Math.atan2(-1, -1) // -2.356194490192345 负四分之三PI 的值

Math.atan2(1, -1) // 2.356194490192345 四分之PI 的值

Math.atan2(0, -1) // 3.141592653589793 x轴负方向 值为 PI

Math.atan2(Math.sqrt(3), 1) // 1.0471975511965976 y为根号三,x为1,这是与x轴正方向60°的角

Math.atan2(Math.sqrt(3), -1) // 2.0943951023931957 y为根号三,x为-1, 这是与x轴正方向120°的角
```

atan 和 atan2 的区别

  1. 我参考的是百度百科

完结撒花!!!

目录
相关文章
|
2月前
17.求圆周率PI: PI/4 = 1- 1/3 + 1/5 -1/7 +.....
17.求圆周率PI: PI/4 = 1- 1/3 + 1/5 -1/7 +.....
19 0
|
2月前
Math常用方法,什么是math?
Math常用方法,什么是math?
23 0
|
2月前
总结一些Math的常规用法,什么是math?
总结一些Math的常规用法,什么是math?
72 1
|
10月前
Math方法的使用
Math方法的使用
31 0
|
11月前
|
数据挖掘
math与floor的关系与作用
math与floor的关系与作用
87 0
|
11月前
|
算法 数据挖掘 Python
math与random的关系与作用
math与random的关系与作用
65 0
零基础VB教程061期:常用数学函数第一节 弧度/ abs/sin/cos/tan/atn/exp/log等
零基础VB教程061期:常用数学函数第一节 弧度/ abs/sin/cos/tan/atn/exp/log等
NPAPI最简单的代码
NPAPI最简单的代码
65 0
4.2、Math数学对象(floor、random、sqrt、pow、abs)
4.2、Math数学对象(floor、random、sqrt、pow、abs)
149 0
|
开发者 Python
Math 模块的使用 | 学习笔记
快速学习 Math 模块的使用
91 0