如何判断两条线平行

思路:

两线斜率相同,Y截距不同

在几何中,判断两条直线是否平行的一个常用方法是看它们的斜率是否相同。两条直线如果有相同的斜率,并且不是同一条直线,它们就是平行的。

假设我们有两条直线,它们分别经过 (x1, y1)(x2, y2)(x3, y3)(x4, y4) 两个点。

斜率公式:

image.png

另外,两条直线如果不仅斜率相同,而且还在同一位置(即截距相同),那么它们实际上是重合的,而不是平行的。

为了确保两条直线只是平行而不重叠,我们还需要比较它们的 截距。截距 b 的公式来自直线方程 y = mx + b,其中 m 是斜率,b 是截距。

截距公式:

截距 b 可以通过已知的点和斜率计算出来:b = y − mx

因此,判断两条线是否平行而不重叠的步骤如下:

  1. 先判断斜率是否相同。
  2. 如果斜率相同,则进一步判断截距是否不同。

完整代码

function areLinesParallel(x1, y1, x2, y2, x3, y3, x4, y4) {
  // 计算斜率时避免除以零的情况
  const slope1EqualSlope2 = (y2 - y1) * (x4 - x3) === (y4 - y3) * (x2 - x1);

  if (!slope1EqualSlope2) {
    // 斜率不相等,直接返回 false,表示不平行
    return false;
  }

  // 如果斜率相等,继续判断截距是否相等
  // 计算截距
  const intercept1 = y1 - ((y2 - y1) / (x2 - x1)) * x1;
  const intercept2 = y3 - ((y4 - y3) / (x4 - x3)) * x3;

  // 截距相同表示重叠,否则平行
  return intercept1 !== intercept2;
}

// 示例:判断 (1, 2)-(3, 4) 和 (2, 3)-(4, 5) 是否平行但不重叠
console.log(areLinesParallel(1, 2, 3, 4, 2, 3, 4, 5));  // 输出 true
console.log(areLinesParallel(1, 2, 3, 4, 1, 2, 3, 4));  // 输出 false

如何判断一个点在圆内

思路:

点到圆心距离小于圆半径