如果直线垂直,如何计算直线的斜率?

How to calculate slope of line if lines are perpendicular?

有两点lastPointprePoint。他们确定一条线。 我尝试使用以下方法计算这条线的斜率:

    let kbase = (lastPoint.Y - prePoint.Y) / (lastPoint.X - prePoint.X);
    let bbase = lastPoint.Y - kbase * lastPoint.X; //y = kx + b -> y - kx;
    let ybase = `${kbase} * x + ${bbase}`;

所以,如果Y等于则kbase为零,这意味着直线方程是y = b

之后我尝试计算垂直线与第一条线的斜率,但出现错误,因为 1 / kbase 其中 kbase == 0.

    let kh = -1 * (1 / kbase);
    let bh = startPoint.Y - kh * startPoint.X;
    let yh = `${kh} * x + ${bh}`;

直线方程y = b如何求垂线的斜率?

线性方程的显式形式,y = mx + p 不允许表示垂直线,因为斜率是无限的。

为了您的目的,您可以使用隐式形式,ax + by + c = 0,它没有这个问题。正交线可以给出方程 bx - ay + d = 0.

正如其他人所说,垂直线的斜率是不确定的。这就是它在数学上的工作方式,你的代码没有问题,你的数学是正确的。正如您已经意识到的那样,水平线是一个遵循 y = ox+b 形式且斜率为 0 的函数。水平线的垂直线导致垂直线不是函数。这意味着有多个 y 值对应于一个 x 值。这就是为什么这很重要。

计算斜率的一般方法是 y 的变化超过 x 的变化。 因为垂直线不是函数,所以一个 x 有多个 y。这是一个例子。假设我们有方程 x=5。这里有一些点:(5,1),(5,2),(5,3)(5,7)。如果您使用前两点计算斜率,则结果为 (2-1)/(5-5),即 1/0,如果您使用最后两点计算斜率, 它会导致 (7-3)/(5-5) 即 4/0。如果继续这样做,垂直线的斜率将有无数个未定义的值。请记住,1/0 不一定等于 2/0 或 6/0.Even 如果您试图找到一条水平线并取倒数,您将无法找到定义的值.

例如,如果斜率是 y 的变化与 x 的变化之比,则倒数将为 -1 * x 的变化与 y 的变化之比。假设我们有水平线 y = 0x + 5。x 或斜率的系数为 0。四个点将是 (5,5)、(9,5)、(3,5) (6,5) , 而垂直线的斜率的两个斜率计算将是 4/0 和 3/0 导致与上次相同的情况。

总而言之,回答您的问题“如果直线方程为 y = b,如何求垂直线的斜率?”就是垂直线的斜率没有定义值,你用的代码肯定找不到。