You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何计算两个矩形间的水平距离?

计算同一行两个矩形的水平距离

没问题,我来帮你理清楚同一行两个矩形的水平距离怎么算——先明确坐标规则,再结合你的例子一步步拆解:

先明确坐标定义(关键前提)

首先默认你的矩形坐标是左上角顶点为(x, y),w是宽度,h是高度(这是GUI/图像领域非常常用的定义方式)。基于这个规则,我们可以先算出每个矩形的核心边界:

  • 左边界:L = x
  • 右边界:R = x + w
  • 上边界:T = y
  • 下边界:B = y + h

第一步:判断是否属于“同一行”

所谓“同一行”,本质是两个矩形在垂直方向(y轴)有重叠区域(或者完全包含)。判断方法很简单:

计算两个矩形垂直范围的交集,如果交集不为空,就是同一行。

用公式表示就是:
max(T1, T2) < min(B1, B2)

  • max(T1, T2):两个矩形上边界的最大值(重叠区域的顶部)
  • min(B1, B2):两个矩形下边界的最小值(重叠区域的底部)
    如果这个不等式成立,说明垂直方向有重叠,属于同一行。

第二步:计算水平距离

确定是同一行后,分两种情况计算水平距离:

情况1:水平方向重叠/接触

如果两个矩形在水平方向有重叠(或者刚好挨在一起),水平距离为0。判断重叠的公式:
max(L1, L2) <= min(R1, R2)

  • max(L1, L2):两个矩形左边界的最大值
  • min(R1, R2):两个矩形右边界的最小值
    如果这个不等式成立,说明水平方向有重叠或接触。

情况2:水平方向不重叠

如果两个矩形水平方向没有重叠,距离就是左边矩形的右边界到右边矩形的左边界的差值。用公式可以统一写成:
max(0, max(L1, L2) - min(R1, R2))
这个公式会自动处理两种情况:重叠时返回0,不重叠时返回实际间隙。


结合你的例子计算

我们把你的矩形参数代入:

矩形R1参数

x=515, y=942, w=525, h=954

  • L1=515,R1=515+525=1040
  • T1=942,B1=942+954=1896

矩形R2参数

x=382, y=938, w=508, h=960

  • L2=382,R2=382+508=890
  • T2=938,B2=938+960=1898

1. 判断是否同一行

max(942, 938) = 942,min(1896, 1898)=1896
因为942 < 1896,所以两个矩形属于同一行。

2. 计算水平距离

max(515, 382)=515,min(1040, 890)=890
因为515 < 890,说明水平方向有重叠,所以水平距离为0。


内容的提问来源于stack exchange,提问作者AzkaGilani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 10:13:46