使用方法
- 在「端点 P₁」的两个框里填第一个点的坐标,示例 x₁ = 2、y₁ = 4。四个坐标必须同一单位,一半厘米一半米算出来的中点没有意义。
- 在「端点 P₂」的两个框里填第二个点的坐标,示例 x₂ = 8、y₂ = 10。改动任意一个框都会立刻重算,不需要再点按钮。
- 「内分比例 t」填 0 到 1 之间的小数,示例 0.25,读作「从 P₁ 朝 P₂ 走全程的 25%」。t = 0.5 时内分点就是中点本身,t = 0 得到 P₁、t = 1 得到 P₂。
- 看结果区四格:中点坐标、线段长度、斜率、内分点坐标;下方说明行会写出这次用到的 Δx 与 Δy,方便和手算对一遍。
- 在任一输入框里按裸 Enter 也能触发计算;想回到默认值就点「载入示例」,它填的是 2 / 4 / 8 / 10 / 0.25 这一组。
这个中点计算器能解决什么问题
第一类场景是图纸与加工:两个孔、两个定位点之间要找对称位置,或者要在两个既有孔中间再补一个孔,中点就是唯一的几何解,用尺规量不如直接代值。
第二类场景是图形与界面布局:把一段线、一个矩形按中心对齐或做缩放时,先求中点再平移,比「先平移再目测居中」少一步试错。前端里常见的是拿两个元素的坐标算中心点,再决定浮层放哪儿。
第三类场景是会合与调度:平面上两个人各报一个坐标,取中点作为碰面点。要注意这里用的是平面直角坐标,不是经纬度——地球是球面,两地的「中点」要用大圆中点,本页不做。
第四类场景是复核作业与手算:把 Δx、Δy 打出来看一眼,就知道是不是把 x 和 y 填串行了;中点坐标的两个分量必须分别落在两个端点之间,超出区间就说明填错了。
这个中点计算器不做的事也说清楚:不处理三个及以上点(那是重心 / 质心,不是中点),不处理球面经纬度中点,不计算面积与周长,也不做单位换算——单位要你自己先统一。
原理与规则说明
核心就一条中点公式:M = ((x₁+x₂)/2, (y₁+y₂)/2),两个分量各自取算术平均,互不影响。内分点是把同一个思路推广:P = P₁ + t·(P₂ − P₁),展开就是 (x₁ + t·Δx, y₁ + t·Δy);t = 0.5 时它退化回中点,所以中点只是内分点在 t = 0.5 时的特例。
线段长度本页调用的是 Math.hypot(Δx, Δy),而不是手写 Math.sqrt(Δx*Δx + Δy*Δy)。这不是风格问题:平方这一步会先溢出。取 Δx = Δy = 1e200,Math.sqrt(1e200*1e200 + 1e200*1e200) 得到 Infinity,而 Math.hypot(1e200, 1e200) 给出 1.414213562373095e+200——hypot 内部按量级缩放后再开方,避开了中间平方的溢出。本页坐标上限是 1e12,正常用不到这条,但选函数时就得按最坏情况选。
斜率是 k = Δy / Δx。Δx = 0 时分母为零,本页不显示 Infinity,而是显示「竖直」;Δy = 0 时 k = 0.0000,读作水平。这两个是几何事实,不是报错。
遵循的标准有两条:坐标系是笛卡尔平面直角坐标系(x 向右为正、y 向上为正);数值按 IEEE 754 双精度浮点,它的安全整数上限是 2^53 = 9007199254740992,坐标绝对值超过这个数就不再能精确表示。举一个实测的例子:1e16 与 1e16+2 求和再除以 2,得到 10000000000000000 而不是 10000000000000002——不是公式错了,是这个量级上 +2 已经被浮点吃掉了。量纲一致性按 ISO 80000-2 对数学符号与量纲的要求:参与同一条公式的量必须同量纲,x 用米、y 用厘米时中点和斜率都不成立。
输入到输出的完整链条是:trim 掉首尾空格 → Number() 转数值 → 有限性与范围校验 → 算 Δx = x₂ − x₁、Δy = y₂ − y₁ → 中点取算术平均 → 长度走 hypot → 斜率走除法 → 内分点走加权平均 → 每个结果 toFixed(4) 后输出。
最常见的误用是拿它算三个点。三个点的等权平均是重心:示例 (2,4)、(8,10)、(5,3) 的平均是 (5.0000, 5.6667),它不是任何一条边的中点,本页也拒绝把它叫中点。第二个误用是坐标系搞反:屏幕坐标 y 轴向下,同一对端点 (2,4)、(8,10) 在屏幕坐标下斜率变成 −1.0000,而数学坐标下是 1.0000,符号相反但中点的 y 值不变。
完整示例(数值仅作演示)
默认输入是 P₁ = (2, 4)、P₂ = (8, 10)、t = 0.25,这组数字同时出现在表单默认值和下方对照表的第 1 行(x₂ = 8),三处咬合。
- Δx = 8 − 2 = 6,Δy = 10 − 4 = 6;
- 中点 M = ((2+8)/2, (4+10)/2) = (5.0000, 7.0000);
- 线段长度 = hypot(6, 6) = 8.4853;
- 斜率 k = 6 ÷ 6 = 1.0000;
- 内分点 t = 0.25 → (2 + 0.25×6, 4 + 0.25×6) = (3.5000, 5.5000);
- 换成 t = 0.75 → (2 + 0.75×6, 4 + 0.75×6) = (6.5000, 8.5000),与 0.25 的那一点关于中点对称;
- 校验:M 到 P₁ 是 4.2426,M 到 P₂ 也是 4.2426,两段相等,说明它确实把线段平分。
再换一组看趋势:把 P₂ 拉到 (20, 10),Δx 变成 18,中点走到 (11.0000, 7.0000),长度升到 18.9737,斜率降到 0.3333——y 不变而 x 拉远时,中点沿水平方向平移,斜率按 1/Δx 衰减,这条反比关系在对照表里一行一行都能对上。
输入范围与对照表
四个坐标框接受 −1000000000000 到 1000000000000 之间的任意数值,允许负号与小数;内分比例 t 只接受 0 到 1,步长 0.01。下面这张表固定 P₁ = (2, 4)、y₂ = 10,让 x₂ 从 8 走到 30,用来观察「端点拉远时中点和斜率各自怎么变」。
| 项目 | 取值 | 说明 |
|---|---|---|
| 固定端点 | P₁=(2, 4),y₂=10 | 与表单默认值一致 |
| 扫描区间 | x₂:8 → 30 | 步长 2,共 12 行 |
| 中点区间 | (5, 7) → (16, 7) | 横坐标每次 +1,纵坐标恒为 7 |
| 长度区间 | 8.4853 → 28.6356 | 随 Δx 单调增 |
| 斜率区间 | 1.0000 → 0.2143 | 随 Δx 单调减 |
| 第 1 行 | x₂ = 8 | 即默认示例所在行 |
| 加载更多 | x₂:32 → 50 | 再补 10 行,共 22 行 |
点「加载更多」把表补到 22 行;点「导出对照表 CSV」下载带 BOM 的表格文件(Excel 双击打开中文不乱码);点「复制对照表 TSV」把整张表复制成制表符分隔文本,可直接粘进表格软件。
边界与精度说明
两点重合(Δx = Δy = 0)是合法输入,不是错误:长度算出 0.0000,斜率显示「—」并在说明行注明「两点重合,斜率无定义」。本页不会把这种输入改成报错,因为几何上它就是一条退化线段。
Δx = 0 而 Δy ≠ 0 时,长度正常,斜率显示「竖直」;Δy = 0 而 Δx ≠ 0 时斜率显示 0.0000,读作水平。这两处都不走「除以零得 Infinity」的默认路径。
三条会真的拒收并给具体文案的路径:坐标绝对值超过 1e12(提示确认量级与单位)、t 超出 0 到 1(提示外分点不在本页范围)、填了非数字或留空(提示是哪个框、允许什么范围)。拒收时结果区保留上一次的有效结果,不会被清零。
精度方面,所有结果统一保留 4 位小数,这是本工具的输出约定;再往后是浮点噪声而不是精度。例如长度 8.485281… 显示为 8.4853。要强调的是:只有显示层四舍五入,参与下一次运算的仍是完整双精度值,所以「先算中点、再以内分点公式反推」不会因为显示位数产生累积误差。
还有一条与浮点有关的边界:坐标绝对值超过 2^53 = 9007199254740992 后整数不再能精确表示,本页虽然允许填到 1e12,但如果你把坐标写成 1e16 量级,结果的末位就不可信了,请把单位换成更大的量级(比如把毫米换成千米)再填。
常见问题
中点和「平均数」是一回事吗?
中点是两个端点的几何中点,公式是算术平均;但它只对两个点定义。把一组数据的平均值叫中点是不对的,那是均值,二者在三个点以上就分道扬镳。
三个点能不能用这个页面算中点?
不能。三个点的等权平均是重心,示例 (2,4)、(8,10)、(5,3) 的平均是 (5.0000, 5.6667),它不落在任何一条边的中点上。请拆成两条边分别求中点。
斜率显示「竖直」是什么意思?
表示 Δx = 0,也就是两个端点 x 坐标相同,线段垂直于 x 轴。这时 k = Δy/0 在数学上无定义,本页不用 Infinity 表示,因为 Infinity 会让人误以为斜率「很大」。
为什么长度用 Math.hypot 而不是直接开方?
因为先平方会溢出。Δx = 1e200 时 Δx*Δx 已经是 Infinity,sqrt 后仍是 Infinity;hypot 内部先按量级缩放再开方,同样输入给 1.414213562373095e+200。
四个坐标单位不一致会怎样?
页面不会拦你,但结果没有物理意义。x 用米、y 用厘米时,中点坐标的两个分量量纲不同,斜率也变成「米每厘米」这种混合单位。请先换算成同一单位。
屏幕坐标算出来的斜率为什么是负的?
屏幕坐标系 y 轴向下。同一对端点 (2,4)、(8,10) 在数学坐标下斜率 1.0000,在屏幕坐标下是 −1.0000。中点的 y 值不受影响,只有斜率与方向相关的量会反号。
内分比例 t 填 1.5 会怎样?
会被拒收并提示「内分比例 t 只能在 0 到 1 之间」。t > 1 或 t < 0 得到的是外分点,落在整条线段的延长线上,属于另一种构造,本页不做。
输入的坐标会被上传吗?
不会。四个坐标只参与页面内存里的加减乘除与 hypot 调用,不发任何网络请求;在开发者工具的 Network 面板里除了页面自身资源不会出现新请求,刷新页面后输入即清空。
相关工具
中点计算器只负责平面两点的算术平均这一件事,坐标要统一单位、要在图上量取,都有各自的页面。