工地放线验算
施工员在基坑边用全站仪测出两个控制点坐标,需要快速判断第三根桩位是否落在设计轴线上。用本工具输入两点坐标求直线方程,再把第三点坐标代进点到线距离公式,算出偏差值。如果偏差超过 5mm 的允许范围,当场调整桩位,不用等内业复核。
输入两点坐标,得到距离·中点·斜率·连线方程
两点距离 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)。
纸上画好两点,想验证距离算得对不对;或者已知直线方程,要快速代点看是否在线上——这类检查在几何作业和图纸复核中反复出现。输入坐标或系数,工具直接输出两点间距离、直线一般式、点到直线距离,结果保留四位小数。所有计算在浏览器内完成,坐标和方程数据不会离开本地。
施工员在基坑边用全站仪测出两个控制点坐标,需要快速判断第三根桩位是否落在设计轴线上。用本工具输入两点坐标求直线方程,再把第三点坐标代进点到线距离公式,算出偏差值。如果偏差超过 5mm 的允许范围,当场调整桩位,不用等内业复核。
自动化产线调试时,机械臂末端需要从点 A 直线移动到点 B,但中间有一台设备凸出。用两点距离算出移动总长,再用点到线距离公式计算设备凸出点离 AB 连线的垂直距离。如果这个距离小于机械臂末端夹具半径(比如 80mm),说明有碰撞风险,必须改路径。
建筑师拿到地块的红线坐标后,需要快速验证拟建建筑的一个角点是否满足「距道路红线 15 米」的退线要求。用本工具输入红线两端的坐标求出直线方程,再输入建筑角点坐标,点到线距离直接算出实际退距。如果算出来是 14.3 米,当场标记为不合格,修改方案。
植保无人机按规划航线(直线 AB)飞行,飞控日志显示某一时刻的 GPS 坐标。用本工具把该点与航线 AB 做点到线距离计算,得到偏航距离。如果偏航超过 2 米(农药喷洒精度要求),判定该架次飞行不合格,需要补喷或重飞。
在 200 平米展厅部署 UWB 定位基站,需要三个锚点覆盖全场。先在地图上取三个候选位置坐标,用本工具依次计算两两之间的距离,确保锚点间距不超过 30 米(UWB 有效测距范围),同时用点到线距离验证角落盲区是否在任意两个锚点连线的 5 米范围内。
| 维度 | 本工具 | 在线公式计算器 | 传统手工计算 |
|---|---|---|---|
| 速度 | 输入即出,无网络延迟 | 需加载页面、提交表单,有网络往返 | 手动代入公式、逐项计算,耗时数分钟 |
| 隐私 | 数据在浏览器内处理,不上传服务器 | 数据需发送至服务器端计算 | 完全离线,无数据外泄风险 |
| 离线可用 | 支持离线使用(PWA 或本地页面) | 必须联网才能访问 | 纸笔即可,无需任何设备 |
| 输入灵活性 | 支持坐标、方程参数等多种输入格式 | 通常只接受固定格式(如两点坐标) | 可处理任意几何问题,但需自行推导 |
| 结果可视化 | 即时显示方程、距离等结果,无图形 | 部分工具附带坐标图 | 需手动绘制坐标系 |
| 适用场景 | 快速验证答案、日常作业检查 | 学习参考、多步骤推导 | 考试、无电子设备环境 |
| 输入 | 输出 | 说明 |
|---|---|---|
| 点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。
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。
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.8package 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.8fn 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
}两点距离公式是 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 的符号。
不能,本工具仅支持二维平面(笛卡尔坐标系)计算。如果输入三维坐标(如三个数值),工具会忽略第三个值或报错。需要三维距离计算请使用本站「空间几何」分类下的工具。二维场景适用于地图坐标、平面图形、工程制图等。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。