直线的斜率
在数学上,直线的斜率(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度夹角)*/