直线的斜率

在数学上,直线的斜率(slope)或称梯度(gradient),是描述与度量该线“方向”和“陡度”的数字,常用 m 表示;斜率也用来计算斜坡的斜度(倾斜程度)。透过代数和几何能计算出直线的斜率。

比如编程中,我们可以使用斜率来画线条。


📐 数学公式

θ 为倾斜角,若直线 l 经过点 G(x0, y0)], 斜率为 m, 设点 P(x, y) 是任意一点,则:
m = tanθ = (y - y0) ÷ (x - x0)

由于 y = tanx, 反正切 y = atanx, 推导出 x = atan(tanx)
也可以写成 arctan(tan𝜃) = 𝜃


设直线上两点为 P1(x1,y1), P2(x2, y2),其中 x1 ≠ x2, y1 ≠ y2, 直线的两点方程为:
 (y - y1) ÷ (y2 - y1) = (x - x1) ÷ (x2 - x1)

📌 JavaScript

参考代码:index.js


/**
 * 使用斜率计算两个点的角度值
 * @param {Object} p1 - 点的坐标
 * @param {Object} p2 - 点的坐标
 * @returns {Number} 返回角度值
 */
export function getSlopeAngle(p1, p2) {

    /* 计算斜率, m 也可以写成 (p1.y - p2.y) / (p1.x - p2.x) */
    const m = (p2.y - p1.y) / (p2.x - p1.x);

    /* 由于 Math.tanθ = m */
    const radians = Math.atan(m);

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

    return degrees;
}

测试:test.js

import { getSlopeAngle } from './index';


console.log( getSlopeAngle({x:0, y:0}, {x:15, y:25}) );
/* 输出: 59.03624346792648 (坐标系中这两个点接近60度夹角)*/