平面几何

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

414 次访问

平面几何计算器

11 类常见图形 · 周长 面积 对角线 内外接圆 SVG 可视化
图形示意 单位长度

完整属性

公式速查

经典案例

一键载入常见图形数据

概念速查

周长(Perimeter):图形所有边长之和;曲线图形(圆/椭圆)则指闭合曲线的弧长。

面积(Area):图形所占平面区域的大小,单位为长度的平方。

对角线(Diagonal):连接两个非相邻顶点的线段;矩形/正方形/菱形的对角线长可由勾股或菱形对角公式求出。

海伦公式:已知三角形三边 a、b、c,半周长 s = (a+b+c)/2,则面积 S = √(s(s−a)(s−b)(s−c)),对所有三角形通用。

外接圆 / 内切圆:外接圆经过所有顶点,半径 R = abc / (4S);内切圆与所有边相切,半径 r = S / s。

重心 / 形心:三角形三条中线的交点,到三顶点距离之和最小;坐标为三顶点坐标的平均值。

正多边形:所有边等长、所有内角相等的凸多边形;内角 = (n−2)·180°/n,中心角 = 360°/n。

扇形 / 弓形:扇形由两条半径和一段弧围成;弓形由一条弦和一段弧围成(扇形减去三角形)。

椭圆周长:无初等公式,常用拉马努金二阶近似式 C ≈ π[3(a+b) − √((3a+b)(a+3b))],相对误差 ≪ 0.0001%。

离心率 e:椭圆形状参数,e = c/a(c 为焦距半长),e=0 时为圆,e→1 时趋于扁平。

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

📐

CAD 辅助校验

机械制图员在 AutoCAD 中绘制零件图时,需要频繁验证两孔中心距、直线边到基准面的垂直距离。本工具输入坐标点即可秒算两点距离与点到线距离,无需在绘图软件中手动拉尺寸线,减少因目测误差导致的图纸返工,尤其适合批量校验多个尺寸的工况。

🎯

无人机航线规划

植保无人机飞手在规划矩形地块的喷洒路径时,需计算地块边界直线方程,并确保航线与边界保持固定偏移(如 2 米安全距离)。本工具输入边界两点坐标生成直线方程,再输入偏移量算点到线距离,快速得到平行航线坐标,避免无人机撞杆或漏喷。

🏗️

工地放样复核

施工员在工地上用全站仪测出三个控制点坐标后,需判断桩位是否落在设计轴线上。本工具输入桩位坐标与轴线两端点坐标,立即得到点到线距离——若距离 < 5mm 即合格,否则需调整。省去手算解析几何公式的耗时,现场直接出结果。

📊

物流仓储布局

仓库规划师在货架布局中,需要确保叉车通道中心线到货架边缘的距离 ≥ 3.5 米(安全转弯半径)。本工具输入通道两端点坐标与货架角点坐标,计算点到线距离,快速验证所有货架是否在安全距离内,替代手动拉卷尺或 CAD 量距,提升布局调整效率。

🎮

游戏碰撞检测

独立游戏开发者实现 2D 射击游戏时,需检测子弹(点)是否命中敌人身体(线段)。本工具输入子弹坐标与敌人身体两端坐标,计算点到线距离——若距离 < 敌人半宽则判定命中。省去自己写向量叉积求距离的调试时间,直接复用计算结果。

🧭

地图标注校准

GIS 数据录入员在电子地图上标注 POI 点时,需判断某建筑物是否落在道路红线范围内。本工具输入建筑物角点坐标与道路中心线两端坐标,计算点到线距离,并与道路半宽比对——若距离 > 半宽则建筑越界,需重新定位。替代在 GIS 软件中手动拉辅助线,批量校验更快。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具GeoGebra (在线版)传统纸笔/公式计算
数据隐私纯浏览器,零上传需上传至 GeoGebra 服务器完全离线,无数据流动
处理速度1 秒内1-3 秒(含页面加载)数分钟(取决于计算复杂度)
离线可用完全离线(浏览器打开后)需联网完全离线
输入方式直接输入坐标数值图形界面拖拽点/输入坐标手动抄写公式并代入数值
结果呈现纯数值结果数值 + 动态图形纯数值结果
适用场景快速验证单一计算教学演示、几何探索考试、无电子设备环境

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例7 个典型场景,覆盖常规、边界与易错

输入输出说明
点A(1,2),点B(4,6)距离: 5.00典型场景:计算两点间直线距离
点A(0,0),点B(3,4)距离: 5.00典型场景:原点与点(3,4)的勾股距离
点A(0,0),点B(0,0)距离: 0.00边界 case:两点重合,距离为零
点A(1e6,1e6),点B(1e6+1,1e6+1)距离: 1.41边界 case:大坐标值,验证浮点精度
点A(1,2),点B(1,5)距离: 3.00典型场景:垂直直线上的两点
点A(1,2),点B(4,2)距离: 3.00典型场景:水平直线上的两点
点A(0,0),点B(0,0.0001)距离: 0.0001边界 case:极短距离,验证小数精度

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 两点坐标顺序颠倒导致斜率符号错误

错误
A(1,2), B(3,4) → 代入公式时 A 的 y 减 B 的 y,A 的 x 减 B 的 x 混用
修复
统一用 (y₂ - y₁) / (x₂ - x₁),如 (4-2)/(3-1)=1

斜率公式要求分子分母的减数顺序一致;混用会导致符号相反,直线方向判断错误。

2. 点到直线距离公式中未将直线化为一般式

错误
点 (1,2) 到直线 y=2x+3 的距离直接代入 y=2x+3
修复
先将直线化为一般式 2x - y + 3 = 0,再代入 |2·1 - 1·2 + 3| / √(2²+(-1)²) = 3/√5

点到直线距离公式只适用于一般式 Ax+By+C=0;斜截式、点斜式必须先转换。

3. 分母为零时未处理垂直线/水平线

错误
输入 A(1,2), B(1,5) 求斜率时直接计算 (5-2)/(1-1) 报错
修复
判断 x₁=x₂ 时直接输出「斜率不存在,直线为 x=1」

垂直线斜率公式分母为零,数学上无定义;工具应提前检测并返回特殊结果而非崩溃。

4. 用浮点数比较判断三点共线时忽略精度误差

错误
if (slopeAB === slopeAC) 判定共线
修复
改用 |slopeAB - slopeAC| < 1e-10 或面积法 |x₁(y₂-y₃)+x₂(y₃-y₁)+x₃(y₁-y₂)| < 1e-9

浮点数运算有舍入误差(如 0.1+0.2≠0.3),直接相等判断会漏掉理论上共线但计算有微小偏差的情况。

5. 直线方程参数输入了无效的系数组合

错误
输入 A=0, B=0, C=5 表示直线
修复
A 和 B 不能同时为 0;此时应提示「A 和 B 不能全为零,否则不是直线」

一般式 Ax+By+C=0 要求 A、B 不同时为零;全零时方程退化为 C=0,无意义。

6. 计算中点坐标时用了端点坐标的和而非平均值

错误
中点 = ((x₁+x₂), (y₁+y₂)) 得到 (4,6)
修复
中点 = ((x₁+x₂)/2, (y₁+y₂)/2) 得到 (2,3)

中点坐标是两端坐标的算术平均,不是简单求和;初学者容易漏掉除以 2。

7. 混淆「点到直线距离」与「两点间距离」

错误
求点 (1,2) 到直线 y=x 的距离时,计算点 (1,2) 到原点 (0,0) 的距离
修复
用公式 |1·1 - 1·2 + 0| / √(1²+(-1)²) = 1/√2

点到直线距离是垂线段长度,不是到直线上任意一点的距离;常见错误是误用两点距离公式。

8. 输入坐标时混用不同坐标系单位

错误
点 A 用米 (1,2),点 B 用厘米 (300,400) 直接计算
修复
统一单位后再输入,如都换算为米:A(1,2), B(3,4)

工具默认所有坐标在同一单位下运算;混用单位会导致结果完全错误,且工具无法自动检测单位。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

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

变量说明

  • d — 两点间的直线距离
  • x₁, y₁ — 第一个点的坐标
  • x₂, y₂ — 第二个点的坐标

示例

计算 A(1, 2) 与 B(4, 6) 的距离:d = √[(4-1)² + (6-2)²] = √[9 + 16] = √25 = 5。

适用范围

适用于欧几里得平面直角坐标系中任意两点。不适用于球面或曲面距离计算(如地球表面需用 Haversine 公式)。

原理图

输入坐标点A(x₁,y₁) 点B(x₂,y₂)或直线方程参数浏览器内计算两点距离公式直线方程 / 点到线距离展示结果距离值 / 方程垂足坐标纯前端处理流程所有计算在浏览器内完成,数据不上传服务器支持离线使用,无隐私泄露风险
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import math

# 两点距离
def distance(p1, p2):
    return math.hypot(p2[0] - p1[0], p2[1] - p1[1])

# 直线方程(一般式 Ax + By + C = 0)
def line_from_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, line):
    A, B, C = line
    x, y = point
    return abs(A * x + B * y + C) / math.hypot(A, B)

# 示例
p1, p2 = (1, 2), (4, 6)
print(f"两点距离: {distance(p1, p2)}")  # 5.0
line = line_from_points(p1, p2)
print(f"直线方程: {line[0]}x + {line[1]}y + {line[2]} = 0")  # 4x + -3y + 2 = 0
print(f"点到直线距离: {point_to_line_distance((0, 0), line)}")  # 0.4
package main

import (
	"fmt"
	"math"
)

type Point struct{ X, Y float64 }
type Line struct{ A, B, C float64 }

func distance(p1, p2 Point) float64 {
	dx, dy := p2.X-p1.X, p2.Y-p1.Y
	return math.Sqrt(dx*dx + dy*dy)
}

func lineFromPoints(p1, p2 Point) Line {
	return Line{
		A: p2.Y - p1.Y,
		B: p1.X - p2.X,
		C: p2.X*p1.Y - p1.X*p2.Y,
	}
}

func pointToLineDistance(p Point, l Line) float64 {
	return math.Abs(l.A*p.X+l.B*p.Y+l.C) / math.Sqrt(l.A*l.A+l.B*l.B)
}

func main() {
	p1, p2 := Point{1, 2}, Point{4, 6}
	fmt.Printf("两点距离: %.1f\n", distance(p1, p2)) // 5.0
	line := lineFromPoints(p1, p2)
	fmt.Printf("直线方程: %.0fx + %.0fy + %.0f = 0\n", line.A, line.B, line.C)
	fmt.Printf("点到直线距离: %.1f\n", pointToLineDistance(Point{0, 0}, line)) // 0.4
}
// 两点距离
const distance = ([x1, y1], [x2, y2]) =>
  Math.hypot(x2 - x1, y2 - y1);

// 直线方程(一般式 Ax + By + C = 0)
const lineFromPoints = ([x1, y1], [x2, y2]) => {
  const A = y2 - y1;
  const B = x1 - x2;
  const C = x2 * y1 - x1 * y2;
  return { A, B, C };
};

// 点到直线距离
const pointToLineDistance = ([x, y], { A, B, C }) =>
  Math.abs(A * x + B * y + C) / Math.hypot(A, B);

// 示例
const p1 = [1, 2], p2 = [4, 6];
console.log(`两点距离: ${distance(p1, p2)}`); // 5.0
const line = lineFromPoints(p1, p2);
console.log(`直线方程: ${line.A}x + ${line.B}y + ${line.C} = 0`);
console.log(`点到直线距离: ${pointToLineDistance([0, 0], line)}`); // 0.4

常见问题

9 个高频疑问

输入两个点坐标后,工具是怎么算出直线方程的?公式是什么?
工具使用标准两点式公式计算直线方程。给定点 A(x₁, y₁) 和 B(x₂, y₂),斜率 k = (y₂ − y₁) / (x₂ − x₁),然后代入点斜式 y − y₁ = k(x − x₁) 得到方程。当 x₁ = x₂ 时(两点连线垂直),斜率不存在,工具直接输出 x = x₁ 作为方程。所有计算在浏览器内完成,不涉及任何外部调用,结果保留6位小数。
为什么我算出来的点到直线距离,和工具显示的结果不一样?
常见原因是直线方程输入格式不对。工具要求直线按 'Ax + By + C = 0' 的标准形式输入 A、B、C 三个系数。如果用了斜截式(y = kx + b)或两点式直接输入,结果会错。例如直线 y = 2x + 1 应转为 2x − y + 1 = 0,即 A=2, B=−1, C=1。另外检查坐标值是否有空格或多余符号,工具只接受纯数字(含负号和小数点)。
输入三点坐标后,工具显示 '不构成三角形',什么情况下会这样?
当三个点共线(在同一条直线上)时,工具判断为不构成三角形。判断依据是三点中任意两点的斜率相等(或都用面积法:三点围成三角形面积为0)。常见场景:三点在水平线(y相同)或垂直线上(x相同),或沿同一斜线分布。如果确实需要计算非三角形情况(如退化三角形的距离),可以分开用两点距离和点到线距离功能逐一算。
这个工具能算三维空间中的两点距离或直线方程吗?
不能。本工具只处理二维平面(x, y 坐标系)的几何计算。三维空间(x, y, z)需要单独的三维几何计算工具,因为公式不同——三维两点距离要加 z 轴平方项,直线方程要用参数形式。如果误输入三维坐标(如三个数),工具只会读取前两个数作为 x 和 y,忽略第三个,结果不准确。推荐使用本站的「三维几何」工具。
工具支持输入分数或根号吗?比如点坐标是 (1/2, √3)?
不支持直接输入分数(如 1/2)或根号(如 √3)。坐标输入框只接受十进制小数和整数。分数需要先转为小数(如 1/2 = 0.5),根号近似值(如 √3 ≈ 1.73205)。工具内部计算也使用浮点小数,结果保留6位小数。如果对精度有严格要求(如数学作业需要精确分数/根号表达),建议使用支持符号计算的软件(如 GeoGebra、Mathematica)。
工具算出来的距离精确到几位?误差有多大?
结果默认保留6位小数。由于浏览器 JavaScript 使用 IEEE 754 双精度浮点数(约15-17位有效数字),一般计算误差在 1e-10 以内。但极端情况(如两点距离极近或极远,坐标值相差超过 1e15 倍)时,浮点数运算可能导致精度损失。日常使用(坐标值在 −10000 到 10000 之间)结果完全可靠。如果发现明显偏差,先检查输入坐标是否输反(x 和 y 顺序)。
输入点坐标时,能用度分秒格式吗?比如经纬度那种?
不能。工具坐标输入只接受十进制数字(如 116.397),不接受度分秒(如 116°23′49″)或度分(如 116°23.8′)格式。如果数据是度分秒,需要先手动转换为十进制:十进制 = 度 + 分/60 + 秒/3600。例如 116°23′49″ = 116 + 23/60 + 49/3600 ≈ 116.39694。另外注意:工具不区分经纬度,所有坐标视为平面直角坐标,不适合直接用于地球球面距离计算。
这个工具和手机上的『几何计算器』App 有什么区别?
核心区别:本工具是纯网页版,无需安装,所有计算在浏览器本地完成,不联网也能用(加载后断网刷新仍可用)。手机 App 通常需要下载安装,且部分 App 会联网上传数据用于广告或统计。功能上,本工具专注两点距/直线方程/点到线距三个基础功能,没有图形绘制、角度计算、面积体积等高级功能。如果只需要快速算一个距离或直线方程,网页版更方便;如果需要可视化或综合几何计算,建议用 App。
为什么我输入了坐标,点『计算』按钮没反应?
最常见原因是输入框为空或包含非数字字符(如中文、字母、逗号)。工具要求每个输入框只能填一个数字(整数或小数)。检查:① 坐标值之间不要用逗号分隔——两个点要分别填入独立的输入框,不是合在一个框里写 '(1,2)(3,4)'。② 如果有小数点,确保用的是英文句点 '.' 而不是中文句号 '。'。③ 如果用了科学计数法(如 1e5),部分浏览器可能不识别,建议直接写 100000。
选择 打开 +新窗口 esc关闭