1. 弧度
  2. 角弧度换算
  3. 常用方法
    1. Math.sin(rad)
    2. Math.cos(rad)
    3. Math.tan(rad)
    4. Math.atan(rad)
    5. Math.atan2(y, x)
    6. atan和atan2的区别
  4. 角度计算
  5. 参考

圆形运算相关知识点

弧度

角度: 圆被平分为360分(人为定义),其中的一份为 1deg, 1deg = π / 180

弧度: 圆上弧长等于半径时的圆心角, 1rad ~ 57.2958deg
51987688-08c55300-24de-11e9-81ba-e4aa61fb0446.png
整圆弧度 2π (2πr / r)

角弧度换算

弧度转角度

1
2
3
function toAngle(radian) {
return (180 / Math.PI) * radian
}

角度转弧度

1
2
3
function toRadian(angle) {
return (Math.PI / 180) * angle
}

常用方法

Math.sin(rad)

输入弧度, 返回对应弧度的正值
51987757-22ff3100-24de-11e9-8117-3533b9e644d0.gif

Math.cos(rad)

输入弧度, 返回对应的余弦值 51987766-27c3e500-24de-11e9-8871-2959e9ba460e.gif

Math.tan(rad)

输入弧度, 返回对应的正切值/斜率

Math.atan(rad)

输入正切值, 返回对应的弧度值

Math.atan2(y, x)

返回象限角对应的弧度值

参数y为纵坐标
参数x为横坐标

atan和atan2的区别

在不同象限中,atan输入值可能相同
而atan2不存在这个问题

51987773-2c889900-24de-11e9-9426-38c487740cf2.gif

角度计算

1 根据圆内点a坐标(x, y), 求点a的象限角

已知

  • 点a坐标为 (x, y)
  • 圆心点坐标为(cx, cy)

1
2
3
4
let radian = Math.atan2(y - cy, x - cx)
if (radian < 0) {
radian = radian + 2 * Math.PI
}

象限是逆时针的
51987922-69549000-24de-11e9-9e28-691a6b73e08b.png

如果需要从12点方向开始, 按顺时针计算,可以翻转y轴坐标,然后向左旋转90度 51987956-7f625080-24de-11e9-8e71-f89426d970ee.png

1
2
3
4
let radian = Math.atan2(cy - y, x - cx) + Math.PI / 2
if (radian < 0) {
radian = radian + 2 * Math.PI
}

2 已知圆上点a象限角及周长.求点a坐标 4dfd3819

圆上点y轴坐标计算公式 sin(ϴ)r
圆上点x轴坐标计算公式 cos(ϴ)r

已知

  • 象限角radian
  • 圆心坐标(cx, cy)及半径R
1
2
let x = cx  + Math.cos(radian) * r
let y = cy + Math.sin(radian) * r

参考

https://zh.wikipedia.org/wiki/弧度
https://zh.wikipedia.org/wiki/正弦 数学乐 弧度
数学乐 正弦、余弦和正切 数学乐 反正弦、反余弦和反正切 java - Find angle of point on circle - Stack Overflow
反正切函数 Math.atan() 与 Math.atan2() 的区别 · Issue #17 · o2team/H5Skills · GitHub