计算两个矩形之间的重叠面积

2024-01-14

我想计算红色和蓝色矩形之间的重叠区域“灰色区域”。

每个矩形由其四个角坐标定义。重叠面积的结果单位是单位正方形。

我无法想象我该怎么做?

任何有创意的评论将不胜感激。


这种类型的交集很容易通过“最大值的最小值”和“最小值的最大值”的想法来完成。为了将其写出来,需要对矩形有一个特定的概念,并且,为了使事情清楚,我将使用一个命名元组:

from collections import namedtuple
Rectangle = namedtuple('Rectangle', 'xmin ymin xmax ymax')

ra = Rectangle(3., 3., 5., 5.)
rb = Rectangle(1., 1., 4., 3.5)
# intersection here is (3, 3, 4, 3.5), or an area of 1*.5=.5

def area(a, b):  # returns None if rectangles don't intersect
    dx = min(a.xmax, b.xmax) - max(a.xmin, b.xmin)
    dy = min(a.ymax, b.ymax) - max(a.ymin, b.ymin)
    if (dx>=0) and (dy>=0):
        return dx*dy

print area(ra, rb)
#  0.5 

如果您不喜欢命名元组表示法,您可以使用:

dx = max(a[0], b[0]) - min(a[2], b[2])

等等,或者任何你喜欢的符号。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算两个矩形之间的重叠面积 的相关文章

随机推荐

  • 具有不同布局的分段 RecyclerView

    我有一个场景 我需要创建一个包含 3 个部分的 RecyclerView名为 First 的第一部分应显示 3 行 每行包含 TextView 和 EditText名为 Second 的第二部分应包含 2 行 每行显示一个 TextView
  • 模块无法初始化 zf3 已在互联网上搜索

    我收到以下错误Zend 框架 3 应用程序 致命错误 未捕获的 Zend ModuleManager Exception RuntimeException 模块 服务 无法初始化 我知道有一些答案 但似乎没有一个指向 zf3 我已经扫描了它
  • 仅当附加文本时 JTextArea 滚动到底部

    我正在尝试创建一个JTextArea每次将文本附加到该文本区域时 它都会滚动到底部 否则 用户应该能够滚动顶部并查看上一条消息 我使用了这段代码 JTextArea terminalText new JTextArea JPanel ter
  • Flutter SocketException:操作系统错误:没有到主机的路由,errno = 113,地址 = xxxx,端口 = 42376

    我收到这个错误 Unhandled Exception SocketException OS Error No route to host errno 113 address my url api port 42392 尝试使用以下代码访问
  • 如何清理函数中的错误处理?

    我正在看别人写的代码 一些大函数很混乱 整个函数中的许多点都对错误处理进行了更改 有多种On Error Goto ErrHandler On Error Goto 0 On Error Resume Next 当您执行该函数时 完成并清理
  • 函数 mcrypt_get_iv_size() 在 Laravel 4 上已弃用

    我在 L4 这是我的 app php
  • 一起编写 ModbusClient 和 ModbusServer 时出现问题

    关于本准则 我在用EasyModbus Nuget在 C 窗口窗体应用程序中 我正在尝试使用 RTU 实时更新 获取更改后的保持寄存器的地址值ModbusServer 下面的代码连接到服务器 void Connect ModbusClien
  • 为什么 CLOCKS_PER_SEC 不是每秒的实际时钟数?

    我刚刚编写了这个简短的 C 程序来近似每秒的实际时钟滴答数 include
  • 如何从react-firebase获取有效令牌以进行节点js服务器验证

    我有一个reactJS Web应用程序 我正在使用react redux firebase进行身份验证 并且它工作正常 现在我想添加一个自己的nodejs服务器 后面有一个小数据库 我读到我可以使用react webapp登录中的fireb
  • 有没有办法在 Puppeteer for Firefox 中使用代理?

    有没有办法将 Puppeteer 配置为在 Firefox 中使用代理 而无需手动调整操作系统的代理设置 我可以通过使用命令行参数在 Chrome 中完成此操作args proxy server http 0 0 0 0 0000 但是Fi
  • 使用 C# Web api 和备用内容类型

    我是 web api 的新手 我需要为客户端创建一个服务器 我无法控制客户 无法改变任何事情 客户端在 POST 正文中发送 html 封装的 json 请求 但是 内容类型可能会有所不同 我需要做什么才能让我的 ApiController
  • 单击按钮时如何播放 Web URL 中的声音文件

    我有这个声音文件http www example com sound mp3 如何使用媒体播放器在单击按钮时播放它 Example b setOnClickListener new View OnClickListener Override
  • 随机数的分布

    我有两个代码选项 Option 1 int myFunc return new Random nextInt Or Option 2 private static final Random random new Random int myF
  • 如何在用户控件可见后调用方法

    我用 C 创建了一个带有两个用户控件的 Windows 应用程序 当表单加载时 第一个用户控件被加载 并显示 当我单击 下一步 时 我加载第二个用户控件 现在 我希望在用户控件可见时调用该用户控件的方法 我做不到 如果我从 Load 事件调
  • 如何从二维数组构建图表?

    我正在尝试学习图结构和算法 从概念上讲 我理解 DFS BFS 并且我可以通过提供图来实现它们 但是图传统上是如何组成的 通常 我将它们视为以边为指针的节点列表 具有它们连接的节点的边列表或二维矩阵 其中两个 arr node a node
  • Windows 7 上的 .NET 源调试

    我们正在尝试通过调试SQL Server 紧凑型 http en wikipedia org wiki SQL Server Compact运行 Windows 7 Enterprise RTM 64 位 桌面上的问题 NET http e
  • 安装时如何检查我的产品是否已安装?

    我想在导入步骤中执行部分代码 前提是产品本身尚未安装 我尝试使用快速安装工具的 listInstalledProduct 方法 但是 这将返回所有已安装的产品 但不会返回我自己的产品 如何检查我的产品是否已安装在网站中 在 Anne Wal
  • 在 C# 中使用 Linq 中的内部查询创建列表

    我正在尝试使用 Linq 创建一个子列表 但不明白其中的错误 我不认为我做错了 但我认为其他人的眼睛会帮助我解决这个问题 var dataList File ReadAllLines inputFile dataList from line
  • Docker Swarm 无法与自定义覆盖网络上的其他节点通信

    我的集群中有4个节点 其中两个在香港 其他在美国 我在群中创建了 4 个服务 Service Location foo USA bar HK haha USA hehe HK 这些服务使用相同的覆盖网络 当我尝试时ping foo or p
  • 计算两个矩形之间的重叠面积

    我想计算红色和蓝色矩形之间的重叠区域 灰色区域 每个矩形由其四个角坐标定义 重叠面积的结果单位是单位正方形 我无法想象我该怎么做 任何有创意的评论将不胜感激 这种类型的交集很容易通过 最大值的最小值 和 最小值的最大值 的想法来完成 为了将