Math.atan2求角度解析
我们求角度的时候,
第一反应应该是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

证明:
- 先记住几个数:¼PI、¾PI、-¼PI、-¾PI
1/4 * Math.PI // 0.7853981633974483 第一象限
3/4 * Math.PI // 2.356194490192345 第四象限
-1/4 * Math.PI // -0.7853981633974483 第二象限
-3/4 * Math.PI // -2.356194490192345 第三象限
- 接下来我们求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 的区别
完结撒花!!!
Math.atan2求角度解析的更多相关文章
- JS如何使用Math.atan2获取两点之间角度的实践案例
本文主要介绍使用如何实现手动拖拽旋转元素的效果. 1.简述 最近在研究如何实现手动控制元素的旋转效果,在网上找了很多,都没有找出类似的实现,因此经过一些调研和计算,最终完美实现效果,在这里记录下来. ...
- 数学API Math.atan() 和Math.atan2() 三角函数复习
今天在学习贝塞尔曲线看到需要结合三角函数 以及两个不认识的Api :API Math.atan() 和Math.atan2() 先看下三角函数 正切函数图:(180为一个周期 即45=45+180) ...
- 转:Math: Math.atan() 与 Math.atan2() 计算两点间连线的夹角
我们可以使用正切操作将角度转变为斜率,那么怎样利用斜率来转换为角度呢?可以利用斜率的反正切函数将他转换为相应的角度.as中有两个函数可以计算反正切,我们来看一下. 1.Math.atan() Math ...
- js math atan2
在双十二活动中,视觉要求实现一个鼠标跟随运动的的效果,就像“觉”的那个效果类似 其实原理很简单,看鼠标从哪个方向进的及从哪个方向出的,然后区块里绝对定位的浮层就可以根据鼠标方向 运动; 如:在鼠标进入 ...
- Math.Atan2 方法
返回正切值为两个指定数字的商的角度. public static double Atan2 ( double y, double x ) 参数 y 点的 y 坐标. x 点的 x 坐标. 返回值 角 ...
- 【转】Math.Atan2 方法
原文网址:https://msdn.microsoft.com/zh-cn/library/system.math.atan2.aspx 返回正切值为两个指定数字的商的角度. 命名空间: Syste ...
- Ceres 自动求导解析-从原理到实践
Ceres 自动求导解析-从原理到实践 目录 Ceres 自动求导解析-从原理到实践 1.0 前言 2.0 Ceres求导简介 3.0 Ceres 自动求导原理 3.1 官方解释 3.2 自我理解 4 ...
- Processing平台之PVector求角度
问题:在processing 平台,通过给定三个PVector向量,如何求他们之间的夹角,同时确定是在左侧还是右侧? 如图所示,在processing 平台中,PVector表示点的坐标是以原点为起点 ...
- 从源码的角度解析View的事件分发
有好多朋友问过我各种问题,比如:onTouch和onTouchEvent有什么区别,又该如何使用?为什么给ListView引入了一个滑动菜单的功能,ListView就不能滚动了?为什么图片轮播器里的图 ...
- HDU 2080 夹角有多大II (数学) atan(y/x)分类求角度
夹角有多大II Problem Description 这次xhd面临的问题是这样的:在一个平面内有两个点,求两个点分别和原点的连线的夹角的大小.注:夹角的范围[0,180],两个点不会在圆心出现. ...
随机推荐
- Net5学习笔记
IOC 容器IServiceCollection 什么是Ioc 把对象的统一创建交给第三方容器来创建 如何使用内置IOC ServerCollection 1.在Starup中的ConfigurSer ...
- qrcode根据本地数据生成二维码第一次显示跨页面后显示异常
最近写二维码的时候,突然想起之前项目遇到过的一个问题,网上也没有这方面解答,想到大家今后可能也会遇到这类问题,在此记录下来,希望对你们有所帮助,大佬们不喜勿喷,qrcode配合画布canvas本地生成 ...
- 一款基于 .NET MVC 框架开发、功能全面的MES系统
前言 今天大姚给大家分享一款基于 .NET MVC 框架开发.功能全面的离散型零部件制造管理系统(MES):EasyMES. 项目介绍 EasyMES一款基于 .NET 6 MVC 框架开发.开源免费 ...
- 小程序:支付的时候缺少参数:total_fee,支付失败
最开始的参数是这样写的 param: { "nonce_str": "", "package": "606eb3de10e0602 ...
- Spring 事务管理 基于配置文件
事务概念: 原子性:要么都成功,有一个失败都失败 一致性:总量不变(A有100元,B有100元,总量是200元.A把100元转给B,B就有了200元,总量还是200元) 隔离性:两人操作同一条数据,不 ...
- Mac安装thrift因bison报错的解决办法
安装thrift时,报错: Bison version 2.5 or higher must be installed on the system! 使用brew install bison 安装新版 ...
- Qt安卓开发经验001-010
pro中引入安卓拓展模块 QT += androidextras . pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android 指定引入安卓特定目 ...
- Redis 源码简洁剖析 01 - 环境配置
fork Redis 源码 在 GitHub 上找到并 fork Redis 源码 https://github.com/redis/redis,然后在本地 clone 自己 fork 出来的源码项目 ...
- 解决git clone 速度慢的问题
解决git clone 速度慢的问题 1.原因 git clone特别慢是因为github.global.ssl.fastly.net域名被限制了. 只要找到这个域名对应的ip地址,然后在hosts文 ...
- CDS标准视图:维护通知原因数据 I_MaintNotificationCauseData
视图名称:维护通知原因数据 I_MaintNotificationCauseData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'INOTIFCAU ...