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

Python实现从轴对齐矩形两个对角点推导全部四顶点坐标

Python 轴对齐矩形四点坐标生成方案

核心逻辑

轴对齐矩形的四个顶点本质是两个对角点的x坐标取值、y坐标取值的全部二元组合,不管输入的两个对角点是哪一组(左上+右下/右上+左下),都可以通过提取x、y的两个取值直接生成全部顶点,不需要额外的逻辑判断。

适配你的输入格式

你当前的存储格式为[(x0, x1, y0, y1)],即单个元组嵌套在列表中,元组依次存储第一个点x坐标、第二个点x坐标、第一个点y坐标、第二个点y坐标,以下是两种最优实现:

方案1:无依赖手动实现(推荐轻量场景)

固定生成4个点,时间复杂度O(1),没有任何额外依赖,性能拉满:

# 你的原始输入示例
raw_rect = [(2, 8, 1, 6)]
x0, x1, y0, y1 = raw_rect[0]

# 直接生成四个顶点
four_vertices = [(x0, y0), (x0, y1), (x1, y0), (x1, y1)]

如果需要按固定顺序输出(比如顺时针从左上到左下),可以先做极值排序再生成:

raw_rect = [(2, 8, 1, 6)]
x0, x1, y0, y1 = raw_rect[0]
x_min, x_max = sorted([x0, x1])
y_min, y_max = sorted([y0, y1])

# 顺时针顺序:左上、右上、右下、左下
ordered_four_vertices = [(x_min, y_max), (x_max, y_max), (x_max, y_min), (x_min, y_min)]

方案2:用itertools生成(推荐批量处理场景)

如果需要批量处理大量矩形,用标准库的笛卡尔积方法代码更简洁,可读性更高:

import itertools

raw_rect = [(2, 8, 1, 6)]
x0, x1, y0, y1 = raw_rect[0]
four_vertices = list(itertools.product([x0, x1], [y0, y1]))

方案优势

  • 没有冗余计算,全程都是常数级操作,性能最优
  • 兼容任意对角点输入顺序,不需要提前判断两个对角点的相对位置
  • 代码简洁易懂,后期维护成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:08