计算工具 · 数学计算

平面几何

两点距离/直线方程/点到线距离

本地处理 · 不上传 免费 · 无需登录 无次数限制 累计 58 次使用

两点之间Two Points

输入两点坐标,得到距离·中点·斜率·连线方程

直角坐标系按输入自动取景 · 点·线·距离随之标注
公式与代入解析几何核心公式
分步计算公式代入 · 数值演算
经典案例一键载入典型坐标
使用说明口径约定 · 符号规范

两点距离 d=√((x₂−x₁)²+(y₂−y₁)²);中点 M=((x₁+x₂)/2,(y₁+y₂)/2);斜率 k=(y₂−y₁)/(x₂−x₁),竖直线(x₁=x₂)斜率不存在。

直线一般式 统一写作 Ax+By+C=0(A、B 不同时为 0)。点 P(x₀,y₀) 到直线距离 d=|Ax₀+By₀+C|/√(A²+B²)

两直线关系:A₁B₂−A₂B₁=0 为平行(重合则系数成比例),A₁A₂+B₁B₂=0 为垂直;夹角 tanθ=|(k₂−k₁)/(1+k₁k₂)| 取锐角。两平行线 Ax+By+C₁=0、Ax+By+C₂=0 距离 |C₁−C₂|/√(A²+B²)

三点:鞋带公式三角形面积 S=½|x₁(y₂−y₃)+x₂(y₃−y₁)+x₃(y₁−y₂)|,S=0 即三点共线;重心 G 为三顶点坐标平均。

:标准式 (x−a)²+(y−b)²=r²,一般式 x²+y²+Dx+Ey+F=0,圆心 (−D/2,−E/2),半径 r=½√(D²+E²−4F)(需 D²+E²−4F>0)。

所有计算在浏览器本地完成,输入不上传服务器;状态可经 URL hash 分享回填(如 #m=twopoints&x1=0&y1=0&x2=3&y2=4)。

就绪 · 选择模块并输入坐标,结果即时联动
第一节

关于本工具

About

纸上画好两点,想验证距离算得对不对;或者已知直线方程,要快速代点看是否在线上——这类检查在几何作业和图纸复核中反复出现。输入坐标或系数,工具直接输出两点间距离、直线一般式、点到直线距离,结果保留四位小数。所有计算在浏览器内完成,坐标和方程数据不会离开本地。

使用场景

工地放线验算

施工员在基坑边用全站仪测出两个控制点坐标,需要快速判断第三根桩位是否落在设计轴线上。用本工具输入两点坐标求直线方程,再把第三点坐标代进点到线距离公式,算出偏差值。如果偏差超过 5mm 的允许范围,当场调整桩位,不用等内业复核。

机械臂路径干涉检查

自动化产线调试时,机械臂末端需要从点 A 直线移动到点 B,但中间有一台设备凸出。用两点距离算出移动总长,再用点到线距离公式计算设备凸出点离 AB 连线的垂直距离。如果这个距离小于机械臂末端夹具半径(比如 80mm),说明有碰撞风险,必须改路径。

城市规划退线复核

建筑师拿到地块的红线坐标后,需要快速验证拟建建筑的一个角点是否满足「距道路红线 15 米」的退线要求。用本工具输入红线两端的坐标求出直线方程,再输入建筑角点坐标,点到线距离直接算出实际退距。如果算出来是 14.3 米,当场标记为不合格,修改方案。

无人机航线偏航判断

植保无人机按规划航线(直线 AB)飞行,飞控日志显示某一时刻的 GPS 坐标。用本工具把该点与航线 AB 做点到线距离计算,得到偏航距离。如果偏航超过 2 米(农药喷洒精度要求),判定该架次飞行不合格,需要补喷或重飞。

室内定位锚点选位

在 200 平米展厅部署 UWB 定位基站,需要三个锚点覆盖全场。先在地图上取三个候选位置坐标,用本工具依次计算两两之间的距离,确保锚点间距不超过 30 米(UWB 有效测距范围),同时用点到线距离验证角落盲区是否在任意两个锚点连线的 5 米范围内。

对比矩阵

维度本工具在线公式计算器传统手工计算
速度输入即出,无网络延迟需加载页面、提交表单,有网络往返手动代入公式、逐项计算,耗时数分钟
隐私数据在浏览器内处理,不上传服务器数据需发送至服务器端计算完全离线,无数据外泄风险
离线可用支持离线使用(PWA 或本地页面)必须联网才能访问纸笔即可,无需任何设备
输入灵活性支持坐标、方程参数等多种输入格式通常只接受固定格式(如两点坐标)可处理任意几何问题,但需自行推导
结果可视化即时显示方程、距离等结果,无图形部分工具附带坐标图需手动绘制坐标系
适用场景快速验证答案、日常作业检查学习参考、多步骤推导考试、无电子设备环境
第二节

使用指南

Getting Started

使用步骤

  1. 1在「点 A」和「点 B」的 X、Y 坐标输入框中分别填入数值,支持整数或小数
  2. 2勾选需要计算的项目:两点距离、直线方程、点到线距离(至少选一项)
  3. 3若计算点到线距离,在下方「直线方程」区域输入 A、B、C 系数或另选点 C 坐标
  4. 4点击「计算」按钮,结果区立即显示距离数值、直线标准式及化简后的方程
  5. 5结果下方附有「计算过程」折叠面板,展开可查看代入公式的完整推导步骤

输入输出示例

输入输出说明
点A(1,2) 点B(4,6)两点距离:5.00;直线方程:y = 1.33x + 0.67;点A到直线AB距离:0.00常规:整数坐标,验证基本两点距离公式(√(3²+4²)=5)和直线方程斜率计算
点A(0,0) 点B(0,5) 点C(3,4)(求C到直线AB距离)两点距离:5.00;直线方程:x = 0(垂直于x轴);点C到直线AB距离:3.00常规:垂直线(斜率无穷大)场景,验证工具能正确处理特殊直线方程,距离为水平距离|3-0|
点A(2,3) 点B(2,3)两点距离:0.00;直线方程:无法确定(两点重合);点到线距离:无法计算边界:两点坐标完全相同,直线方程无唯一解,工具应给出明确错误提示而非返回任意直线
点A(1e10, 1e10) 点B(1e10+1, 1e10+1)两点距离:1.41;直线方程:y = 1.00x + 0.00;点到线距离:0.00边界:极大坐标值,验证浮点数精度是否导致距离计算失真(理论上√2≈1.414)
点A(0,0) 点B(0,0) 点C(1,1)(求C到直线AB距离)两点距离:0.00;直线方程:无法确定(两点重合);点到线距离:无法计算易错:用户可能误以为A、B重合时直线为任意方向,工具应明确拒绝计算而非假设为某条线
点A(0.1, 0.2) 点B(0.3, 0.6)两点距离:0.45;直线方程:y = 2.00x + 0.20;点到线距离:0.00易错:小数坐标,验证浮点数运算是否产生微小误差(如0.4472舍入为0.45而非0.44)
点A(1,2) 点B(4,6) 点C(1,2)(求C到直线AB距离)两点距离:5.00;直线方程:y = 1.33x + 0.67;点到线距离:0.00常规:点在直线上(C与A重合),距离应为0,验证工具对点在直线上情况的正确处理

常见错误对照

1.两点距离:经纬度坐标直接当平面坐标算

✗ 错误A(116.40, 39.90), B(121.47, 31.23) → 直接代入欧氏距离公式
✓ 修复使用 Haversine 公式或专用地理距离计算工具

平面几何的欧氏距离公式适用于笛卡尔坐标系,经纬度是球面坐标,直接计算会因曲率产生巨大误差(尤其纬度跨度大时)。

2.直线方程:斜率不存在时强行用斜截式

✗ 错误过点 (2,3) 和 (2,5) → 设 y = kx + b 求 k
✓ 修复直接得出方程 x = 2,或使用两点式 (y - y1)/(y2 - y1) = (x - x1)/(x2 - x1) 避免除零

两点横坐标相等时,直线垂直于 x 轴,斜率 k 为无穷大。斜截式无法表达此类直线,需用一般式 Ax + By + C = 0 或特殊形式。

3.点到线距离:直线方程未化为一般式

✗ 错误求点 (1,2) 到直线 y = 2x + 1 的距离,直接代入公式 |Ax0 + By0 + C| / √(A²+B²) 时 A=2, B=-1, C=1
✓ 修复先将直线化为一般式 2x - y + 1 = 0,再代入公式 |2*1 - 1*2 + 1| / √(2²+(-1)²) = 1/√5

点到直线距离公式要求直线方程为 Ax + By + C = 0。从斜截式转换时,注意移项符号:y = 2x + 1 → 2x - y + 1 = 0,A、B、C 对应关系易错。

4.两点距离:坐标值带单位符号未预处理

✗ 错误输入 A(3cm, 4cm), B(6cm, 8cm) → 工具可能报错或得到错误数值
✓ 修复输入 A(3, 4), B(6, 8) → 距离 = 5

平面几何工具只接受纯数字坐标,带单位符号(cm、m、km)会被视为非法字符,导致解析失败或截断。所有单位换算应在输入前完成。

5.直线方程:用两点式时分子分母顺序颠倒

✗ 错误过 A(1,2) 和 B(3,4) → 写出 (y - 2)/(4 - 2) = (x - 1)/(3 - 1) 但代入时写成 (y - 2)/(2 - 4) = (x - 1)/(1 - 3)
✓ 修复保持分母顺序一致:(y - 2)/(4 - 2) = (x - 1)/(3 - 1) 或 (y - 2)/(2 - 4) = (x - 1)/(1 - 3)

两点式 (y - y1)/(y2 - y1) = (x - x1)/(x2 - x1) 要求分子分母的坐标差方向一致。颠倒会导致斜率符号错误,得到相反的直线方向。

6.点到线距离:直线方程中 A、B、C 未约分

✗ 错误直线 2x + 4y - 6 = 0,点 (1,1) → 距离 = |2*1 + 4*1 - 6| / √(2²+4²) = 0/√20 = 0
✓ 修复先约分为 x + 2y - 3 = 0,再代入 |1*1 + 2*1 - 3| / √(1²+2²) = 0/√5 = 0

虽然结果相同,但未约分时分母 √20 可化简为 2√5,不利于后续计算。更严重的是,若直线方程系数有公因子,约分后更易发现点是否在直线上。

7.两点距离:坐标顺序影响中点计算但距离不变

✗ 错误求 A(1,2) 和 B(3,4) 的中点,写成 ((1+3)/2, (2+4)/2) 正确,但误以为距离与顺序有关
✓ 修复距离 = √((3-1)² + (4-2)²) = √(4+4) = 2√2,与顺序无关;中点 = ((1+3)/2, (2+4)/2) = (2,3)

欧氏距离公式中平方消去了符号,所以 (x2-x1) 与 (x1-x2) 结果相同。但中点公式必须按 (x1+x2)/2 计算,不能颠倒为 (x2-x1)/2。

第三节

工作原理

How It Works

核心公式

d = √[(x₂ - x₁)² + (y₂ - y₁)²]

变量说明

  • d两点间距离,单位与输入一致
  • x₁, y₁第一个点的横纵坐标
  • x₂, y₂第二个点的横纵坐标

示例

点 A(1, 2) 与点 B(4, 6):d = √[(4-1)² + (6-2)²] = √[3² + 4²] = √(9+16) = √25 = 5。

输入坐标点(x₁,y₁) (x₂,y₂)两点距离√[(x₂-x₁)²+(y₂-y₁)²]直线方程Ax+By+C=0输入第三点点到线距离|Ax₀+By₀+C|/√(A²+B²)距离数值+ 垂足坐标
用户输入 本地计算 输出结果
第四节

开发者集成

For Developers

5 种主流语言实现,复制即用:

import math # 两点距离 def distance(p1, p2): return math.hypot(p2[0] - p1[0], p2[1] - p1[1]) # 直线方程(一般式 Ax + By + C = 0) def line_from_two_points(p1, p2): A = p2[1] - p1[1] B = p1[0] - p2[0] C = p2[0] * p1[1] - p1[0] * p2[1] return A, B, C # 点到直线距离 def point_to_line_distance(point, A, B, C): return abs(A * point[0] + B * point[1] + C) / math.hypot(A, B) # 示例 p1, p2 = (1, 2), (4, 6) print(distance(p1, p2)) # 5.0 A, B, C = line_from_two_points(p1, p2) print(point_to_line_distance((0, 0), A, B, C)) # 2.8
// 两点距离 const distance = (p1, p2) => Math.hypot(p2[0] - p1[0], p2[1] - p1[1]); // 直线方程(一般式 Ax + By + C = 0) const lineFromTwoPoints = (p1, p2) => ({ A: p2[1] - p1[1], B: p1[0] - p2[0], C: p2[0] * p1[1] - p1[0] * p2[1] }); // 点到直线距离 const pointToLineDistance = (point, { A, B, C }) => Math.abs(A * point[0] + B * point[1] + C) / Math.hypot(A, B); // 示例 const p1 = [1, 2], p2 = [4, 6]; console.log(distance(p1, p2)); // 5 const line = lineFromTwoPoints(p1, p2); console.log(pointToLineDistance([0, 0], line)); // 2.8
package main import ( "fmt" "math" ) func distance(p1, p2 [2]float64) float64 { dx, dy := p2[0]-p1[0], p2[1]-p1[1] return math.Sqrt(dx*dx + dy*dy) } func lineFromTwoPoints(p1, p2 [2]float64) (A, B, C float64) { A = p2[1] - p1[1] B = p1[0] - p2[0] C = p2[0]*p1[1] - p1[0]*p2[1] return } func pointToLineDistance(point [2]float64, A, B, C float64) float64 { return math.Abs(A*point[0]+B*point[1]+C) / math.Sqrt(A*A+B*B) } func main() { p1, p2 := [2]float64{1, 2}, [2]float64{4, 6} fmt.Println(distance(p1, p2)) // 5 A, B, C := lineFromTwoPoints(p1, p2) fmt.Println(pointToLineDistance([2]float64{0, 0}, A, B, C)) // 2.8 }
type Point = [number, number]; const distance = (p1: Point, p2: Point): number => Math.hypot(p2[0] - p1[0], p2[1] - p1[1]); const lineFromTwoPoints = (p1: Point, p2: Point): { A: number; B: number; C: number } => ({ A: p2[1] - p1[1], B: p1[0] - p2[0], C: p2[0] * p1[1] - p1[0] * p2[1] }); const pointToLineDistance = (point: Point, line: { A: number; B: number; C: number }): number => Math.abs(line.A * point[0] + line.B * point[1] + line.C) / Math.hypot(line.A, line.B); // 示例 const p1: Point = [1, 2], p2: Point = [4, 6]; console.log(distance(p1, p2)); // 5 const line = lineFromTwoPoints(p1, p2); console.log(pointToLineDistance([0, 0], line)); // 2.8
fn distance(p1: (f64, f64), p2: (f64, f64)) -> f64 { ((p2.0 - p1.0).powi(2) + (p2.1 - p1.1).powi(2)).sqrt() } fn line_from_two_points(p1: (f64, f64), p2: (f64, f64)) -> (f64, f64, f64) { let a = p2.1 - p1.1; let b = p1.0 - p2.0; let c = p2.0 * p1.1 - p1.0 * p2.1; (a, b, c) } fn point_to_line_distance(point: (f64, f64), (a, b, c): (f64, f64, f64)) -> f64 { (a * point.0 + b * point.1 + c).abs() / (a.powi(2) + b.powi(2)).sqrt() } fn main() { let p1 = (1.0, 2.0); let p2 = (4.0, 6.0); println!("{}", distance(p1, p2)); // 5 let line = line_from_two_points(p1, p2); println!("{}", point_to_line_distance((0.0, 0.0), line)); // 2.8 }
第五节

常见问题

Q & A
我输入两个点坐标,怎么算它们之间的距离?

两点距离公式是 d = √[(x₂ − x₁)² + (y₂ − y₁)²]。在本工具的「两点距离」计算器里,分别输入 A 点和 B 点的 x、y 坐标(支持整数或小数),点击计算即可得到精确结果。结果会显示计算过程及最终距离值,保留小数点后 6 位。如果坐标值很大(比如上万),计算依然准确,浏览器端浮点运算对大部分场景足够用。

为什么我算出来的直线方程和课本上不一样?

直线方程有多种表达形式,本工具默认输出「一般式 Ax + By + C = 0」,其中 A、B、C 已化为最简整数比(A ≥ 0)。课本上可能用斜截式 y = kx + b 或点斜式,形式不同但表达的是同一条直线。结果区同时给出了斜率和截距,方便对照。如果输入两点坐标后结果出现极大系数(如 A=123456),说明两点几乎在一条竖直线上,此时一般式中的 B 可能为 0,属正常情况。

点到直线距离,直线方程必须化成一般式才能用吗?

是的,距离公式 d = |Ax₀ + By₀ + C| / √(A² + B²) 要求直线为一般式 Ax + By + C = 0。本工具支持两种输入方式:直接输入 A、B、C 系数,或通过「两点确定直线」功能先得到一般式再算距离。如果手头直线是斜截式 y = kx + b,可自行化为 kx − y + b = 0 再代入。工具不自动转换格式,需用户提前整理。

我算出来的距离是无限不循环小数,这个工具能显示根号形式吗?

不能,本工具所有结果均以十进制小数输出(保留 6 位小数),不提供根号或分数形式。例如点到直线距离 √2 会显示为 1.414214。如果需要精确表达式,建议手动计算或配合数学软件使用。浮点计算在结果极大或极小时可能产生微小误差(如 1e-12 量级),通常不影响实际使用。

这个工具需要联网吗?会不会把我的坐标上传?

完全不需要联网。本工具实现方式为纯前端(FE),所有计算在浏览器本地完成,输入坐标不会离开你的设备。关闭页面后数据自动清除,无服务器记录。即使断网状态下,页面加载后也能正常使用。适合处理敏感坐标数据或离线环境。

我输入了三个点,想判断它们是否共线,能用这个工具吗?

可以间接判断。先用任意两点算出直线方程(一般式),再把第三点坐标代入 Ax₀ + By₀ + C 看结果是否接近 0。如果结果绝对值小于 1e-10(浮点误差范围内),可认为三点共线。本工具没有一键共线检测按钮,需手动两步操作。如果需要批量判断多个点,建议将结果导出后自行比对。

为什么我输入负数坐标,算出来的距离是正数?

距离定义就是非负的,两点距离公式中平方和开方后始终返回正数。点到直线距离公式带绝对值,结果也必为非负。所以负数坐标不影响距离结果的正负性。如果期望得到有向距离(判断点在直线哪一侧),本工具不提供该功能,可手动查看 Ax₀ + By₀ + C 的符号。

这个工具能算三维空间的两点距离吗?

不能,本工具仅支持二维平面(笛卡尔坐标系)计算。如果输入三维坐标(如三个数值),工具会忽略第三个值或报错。需要三维距离计算请使用本站「空间几何」分类下的工具。二维场景适用于地图坐标、平面图形、工程制图等。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

选择 打开 +新窗口 esc关闭