方位角

我们熟知了常用的三角函数,有一个变种的三角函数,可以根据点的坐标直接求解。它就是atan2(点的反正切),也称之为方位角。函数于 1961 年首次出现在编程语言 Fortran 中。它最初是为了在从笛卡尔坐标转换时为角度 θ 返回一个正确且明确的值 (x, y) 到极坐标 (r, θ)。

在计算和数学中,函数 atan2 是 2 元反正切值,它在编程运算中使用起来也非常方便,当然,你也可以完全通过正弦余弦函数来达到目的。

atan2 方法返回一个 -pi 到 pi 之间的数值,表示点 (x, y) 对应的偏移角度。这是一个逆时针角度,以弧度为单位,正 X 轴和点 (x, y) 与原点连线 之间。注意此函数接受的参数:先传递 y 坐标,然后是 x 坐标。


📐 数学公式

atan2(y,x)atan2(-y,-x)
atan2(y,x) = atan(y ÷ x)

📌 JavaScript

参考代码:index.js


/*
 * 计算一个点的瞄准角度
 *
 * @param {Number} role  - 角色点的y坐标和x坐标,记作(y1, x1)
 * @param {Number} target  - 目标点的y坐标和x坐标,记作(y2, x2)
 * @returns {Number} 返回角度值
 */
export function pointDeg( role, target ) {

    /* 给定点的反正切,返回一个弧度 */
    const radians = Math.atan2(target.y - role.y, target.x - role.x);

    /* 转化为度数 */
    const degrees = radians * 180 / Math.PI;

    return degrees;
}


测试:test.js

import { pointDeg } from './index';

/* 假设你站在某个点,瞄准了某个点,要计算这两点之间的角度。注意atan2中y和x的位置,不要颠倒  */
console.log(pointDeg({y:0, x:0}, {y:30, x:15}));

/* 输出:
63.43494882292201 度(想象一下坐标轴点的位置,即可推断角度)
*/