数学 / 直线与圆 · 从方程到位置关系 待审核 6 页

直线与圆 · 从方程到位置关系

解析几何的做法是给平面配上坐标,让每条直线、每个圆对应一个方程,于是「两条线是否垂直」「直线与圆交于几点」这类几何判断变成了系数之间的运算。本系列走的正是这条路:先把直线的各种写法与它们各自的适用范围理清,再把平行、垂直、距离三件事写成公式,最后处理圆——它的方程有两种写法,而位置关系的判据全都落在距离与半径的比较上。

两处贯穿全篇的取舍值得先说。其一是为什么内部统一用一般式:斜截式 y = kx + b 写不出竖直线,而「斜率不存在」这一支若渗进每个函数,平行判定、垂直判定、交点、距离都要各带一套分情形;改用一般式之后,平行是 A₁B₂ − A₂B₁ = 0、垂直是 A₁A₂ + B₁B₂ = 0,两式都不含分母也不含例外。其二是判定与计算的先后:弦长公式 2√(r² − d²) 在相离时开出的是负数的平方根,圆的一般式在 D² + E² − 4F < 0 时同样如此。先判分类再算数值,得到的是「无图形」这个结论;反过来先算再判,得到的是一路传下去而不抛错的 NaN

直线 · 斜率、方程与距离

倾斜角取值 [0°, 180°),每条直线都有;斜率是它的正切,竖直线没有斜率。方程的四种写法各要求某个量存在,一般式对全体直线成立。平行、垂直与距离三件事都能写成只含系数的表达式。

α ∈ [0°, 180°) · k = tan α

倾斜角与斜率

倾斜角是直线与 x 轴正方向所成的角,取值 [0°, 180°),每条直线都有;斜率是它的正切,竖直线没有斜率。两者不是线性关系,倾斜角接近 90° 时斜率急速增大。

点斜式 → 一般式

直线方程的五种形式

点斜式、斜截式、两点式、截距式各有失效的情形,一般式 Ax + By + C = 0 没有例外但系数不唯一。选哪种写法取决于题目给出的条件,最后一律可化为一般式。

系数判据 · 点到直线

平行、垂直与距离

平行判据 A₁B₂ − A₂B₁ = 0、垂直判据 A₁A₂ + B₁B₂ = 0 都不含分母,无须讨论斜率是否存在。点到直线的距离由 |Ax₀ + By₀ + C| / √(A² + B²) 给出,两平行线的距离须先归一化系数。

「斜率不存在」在浮点里没有标记

Math.tan(Math.PI / 2) 不返回 Infinity,而是 1.6331e16π/2 无法被双精度精确表示,Math.PI / 2 与它相差约 6e-17,正切在那个近似值处是个有限的大数。于是「竖直线没有斜率」这件事在数值上没有任何标记可查,拿到的只是一个很大的数。判据因此必须落在系数上——一般式的 B 是否为零、两点的横坐标是否相等——而不是看 k 的量级。倾斜角 89.99999° 对应的斜率已是 5.73e6,与真正的竖直线在图上无从分辨,但它会一路带着这个大数进入后续计算。 圆 · 方程与位置关系

标准式给出圆心与半径,一般式便于代入求解——三点定圆靠的就是它给出的线性方程组。直线与圆比较 dr,圆与圆比较圆心距与 r₁ ± r₂ 两个界;相切都是测度为零的临界情形。

配方 · D² + E² − 4F

圆的标准方程与一般方程

标准方程直接给出圆心与半径,一般方程 x² + y² + Dx + Ey + F = 0 便于代入求解。后者表示圆的条件是 D² + E² − 4F > 0,等于零是一个点,小于零无实图形。

d 与 r · 弦长与切线

直线与圆的位置关系

比较圆心到直线的距离 d 与半径 r 即得相离、相切、相交三种关系,与联立后的判别式等价。弦长为 2√(r² − d²);过圆外一点可作两条切线,切点由切点弦确定。

圆心距 · 根轴

圆与圆的位置关系

五种位置关系由圆心距 d 与 r₁ + r₂、|r₁ − r₂| 的比较给出。两圆方程相减消去平方项,得到根轴:相交时它是公共弦所在的直线,相切时是公切线。

两处必须「先判后算」的地方

弦长公式 2√(r² − d²):实测 r = 2d = 2.0000001 时被开方的量是 −4.0e-7,结果 NaN。圆的一般式:D² + E² − 4F 为负时先开方同样得 NaN。两处的正确写法都是先按符号分类,再决定要不要开这个方——相离时本就没有弦,D² + E² − 4F < 0 时本就没有图形。NaN 的麻烦在于它不抛异常、也不参与比较(与它的任何比较都是 false),一路传到绘图代码里只表现为「图形凭空消失」,看不出是哪一步出的问题。

相关链接

直线

圆与位置关系

数值实现