数学 / 直线与圆 · 从方程到位置关系 / 直线方程的五种形式 待审核 2 / 6
点斜式 → 一般式

直线方程的五种形式

同一条直线可以有多种方程写法。前四种各自要求某个量存在,一般式则对全体直线成立。选择哪一种取决于题目给出什么条件,而检查答案时通常化为一般式再比较。

1 · 点斜式与斜截式

已知一点 P0(x0,y0)P_0(x_0, y_0) 与斜率 kk

yy0=k(xx0)y - y_0 = k(x - x_0)

已知斜率 kk 与纵截距 bb(即过点 (0,b)(0, b)):y=kx+by = kx + b。斜截式是点斜式取 x0=0x_0 = 0 的特例。

两式都要求斜率存在,故都写不出竖直线。「过点 (2,3)(2, 3) 且与某圆相切的直线」这类题目里,若不先讨论竖直的情形,答案就会漏掉 x=2x = 2 这一条。

2 · 两点式与截距式

已知两点 P1(x1,y1)P_1(x_1, y_1)P2(x2,y2)P_2(x_2, y_2),且 x1x2x_1 \ne x_2y1y2y_1 \ne y_2

yy1y2y1=xx1x2x1\frac{y - y_1}{y_2 - y_1} = \frac{x - x_1}{x_2 - x_1}

两个分母都不能为零,故两点式既写不出竖直线也写不出水平线。把它去分母整理成 (y2y1)(xx1)(x2x1)(yy1)=0(y_2 - y_1)(x - x_1) - (x_2 - x_1)(y - y_1) = 0 之后限制就消失了——这正是一般式。

已知横截距 aa 与纵截距 bb(直线交两轴于 (a,0)(a, 0)(0,b)(0, b)):xa+yb=1\frac{x}{a} + \frac{y}{b} = 1。截距式的限制最紧:aabb 都不能为零,因此过原点的直线没有截距式,两条坐标轴本身也没有。

图 2-1 · 五种写法轮换。可切换写法并拖动它的参数,图上是同一条直线,方程牌给出当前写法与化成的一般式;写法失效时牌上标出原因。

3 · 一般式

Ax+By+C=0(A,B 不同时为零)Ax + By + C = 0 \quad (A, B \text{ 不同时为零})

平面上任意直线都能写成这个形式,反之任意这样的方程都表示一条直线。三个系数各自的含义:B0B \ne 0 时斜率是 AB-\frac{A}{B},纵截距是 CB-\frac{C}{B}B=0B = 0 即竖直线 x=CAx = -\frac{C}{A}

代价是系数不唯一:3x+4y10=03x + 4y - 10 = 06x+8y20=06x + 8y - 20 = 0 是同一条直线,全体系数同乘一个非零数即得另一组。判断两个一般式是否表示同一条直线,不能逐个比系数,要先归一化(见 平行、垂直与距离 §4)。

4 · 实现里为什么只留一般式

core/geom.ts 内部一律以 (A,B,C)(A, B, C) 三元组存直线,四种写法都只是构造函数。这个选择不是审美:斜截式写不出竖直线,而「斜率不存在」这一支若渗进每个函数,平行判定、垂直判定、交点、距离全都要各带一套分情形。改用一般式之后,平行是 A1B2A2B1=0A_1B_2 - A_2B_1 = 0、垂直是 A1A2+B1B2=0A_1A_2 + B_1B_2 = 0,两个表达式都不含分母,也不含例外。

例 4.1 求过 (1,2)(1, 2)(1,5)(1, 5) 的直线。两点横坐标相同,两点式的分母 x2x1=0x_2 - x_1 = 0,点斜式与斜截式也都无从下手。一般式直接给出:A=y2y1=3A = y_2 - y_1 = 3B=x1x2=0B = x_1 - x_2 = 0C=(31)=3C = -(3 \cdot 1) = -3,即 3x3=03x - 3 = 0,也就是 x=1x = 1

AABB 的这两个取法就是 lineFromTwoPoints 的实现:A=y2y1A = y_2 - y_1B=x1x2B = x_1 - x_2C=(Ax1+By1)C = -(Ax_1 + By_1)。它对任意两个不重合的点都给出正确结果,重合时 AABB 同时为零,函数返回 null——「两点重合确定不了唯一直线」这件事因此在类型上就得表达,而不是靠调用方记得检查。

5 · 参考文献

  1. Linear equation. Wikipedia. 直线方程的各种形式及其相互转换。https://en.wikipedia.org/wiki/Linear_equation
  2. Intercept. Wikipedia. 截距的定义与截距式的适用条件。https://en.wikipedia.org/wiki/Y-intercept