社区
数据结构与算法
帖子详情
【求算法】 求一组重叠矩形区域,对应的非重叠矩形组
god_fish
2008-04-14 04:53:57
设有一组矩形R1~Rn,可能重叠,求出对应的非重叠矩形组T1~Tm
例如:
输入:矩形组R1(0,0,100,100),R2(50,50,100,100)
对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50)
P.S.矩形用R(x,y,w,h)表示
...全文
295
14
打赏
收藏
【求算法】 求一组重叠矩形区域,对应的非重叠矩形组
设有一组矩形R1~Rn,可能重叠,求出对应的非重叠矩形组T1~Tm 例如: 输入:矩形组R1(0,0,100,100),R2(50,50,100,100) 对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50) P.S.矩形用R(x,y,w,h)表示
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
K_s_G
2009-06-16
打赏
举报
回复
?
tailzhou
2008-07-14
打赏
举报
回复
计算不重合部分可以这样;
若要添加的矩形 跟某已添加矩形有重叠;
1)某已添加矩形 完全包含 要添加的矩形;不用再添加;
2)要添加的矩形 完全包含 某已添加矩形 ;将要添加的矩形 分解成4个新的矩形,分别添加;
3)其他情况 ;将要添加的矩形 分解成2个新的矩形,分别添加;
tailzhou
2008-07-14
打赏
举报
回复
如果只要求结果不重合;
那么有一个比较简单的方法;
依次添加矩形;
计算“要添加的矩形”跟“已添加矩形集合”的不重合部分;
每一个不重合的部分都当作一个矩形添加到“已添加矩形集合”里去;
tailzhou
2008-07-14
打赏
举报
回复
不过结果可以不唯一;
T1(0,0,100,50),T2(0,50,150,50),T3(50,100,100,50) 可以
T1(0,0,100,100),T2(100,50,50,50),T1(50,100,50,100) 也可以
甚至分成7个50*50的都可以;
任意一个输出都可以?
tailzhou
2008-07-14
打赏
举报
回复
看错,原来是w,h
tailzhou
2008-07-14
打赏
举报
回复
"输入:矩形组R1(0,0,100,100),R2(50,50,100,100)
对应输出:T1(0,0,100,50),T2(0,50,150,50),T1(50,100,100,50) "
怎么会出来150的坐标的?
god_fish
2008-07-14
打赏
举报
回复
UP还未解决
hyram
2008-05-21
打赏
举报
回复
mark
食人族哲学家
2008-05-19
打赏
举报
回复
踩个脚印,有空帮你想想,要是得到一个rgn还好整
UltraBejing
2008-05-01
打赏
举报
回复
以后需再关注,现在先帮你顶一下
knowledge_Is_Life
2008-05-01
打赏
举报
回复
好像没那么简单,呵呵.
meiZiNick
2008-05-01
打赏
举报
回复
没遇到过这种情况.
大王派我去巡山
2008-04-16
打赏
举报
回复
用扫描的方法可以很好地解决这个问题,想像一条垂直扫描线从左往右移动,途中经过了所有的矩形。
首先把矩形的表示方式改一下,改成(l,t.r.b)的形式,其中:
l=x;
t=y;
r=x+w;
b=y+h
其实就是改成了(左,上,右,下)的形式,这样更方便判断矩形是否相交,也便于描述一些。
然后将n个矩形中的l和r值(一共2*n个数据)混合在一起由低到高排序(如果出现值相等的情况,那就根据y值或b值小到大的顺序来判断谁前谁后)。注意这里用的是结构数据,不但要记录l和r的数值,还要记清楚这个值来自哪个矩形。
排序之后,将这2*n个值看作是“事件点”,后面的算法就是基于“事件点”来进行调度的。
我们用一个集合S来记录目前这条垂直扫描线穿过了哪些矩形,初始化的时候S是个空集。
遍历所有的事件点,有两种情况:
1)如果事件点是左边界l,则将对应的矩形插入S;
2)如果事件点是右边界r,则将对应的矩形从S中删除。
整个遍历的过程就好比是扫描线从左往右扫描了一遍,经过了所有的矩形。
两个相邻事件点之间,如果这时S不为空的话,就切出了一个个小矩形,当然纵向上还有一个判断矩形是否交叉去除重复的过程。
整个算法的复杂度是O(n^2),如果对S做一些优化(主要是便于优化和查找),还有进一步优化的余地。
不够完善的地方是最后出来的结果可能并不是最“简洁”的,也就是说,结果中有些矩形还可以合并成一个。如果想追求完美的话,最后再把最终结果(出来之后就是已经排好序的小矩形集合)扫描处理一遍就可以了。
god_fish
2008-04-15
打赏
举报
回复
UP
矩形
面积计算:
重叠
区域
处理详解
本文介绍了计算两个与坐标轴平行的
矩形
覆盖总面积的方法。通过计算两
矩形
面积之和减去
重叠
区域
面积来得到结果。。
【
算法
】
重叠
矩形
,
求
重叠
位置最多的,以及
重叠
个数
如果两个或者多个
矩形
有公共
区域
则认为它们是相互
重叠
的(不考虑边界和角落)。请你计算出平面内
重叠
矩形
数量最多的地方,有多少个
矩形
相互
重叠
。平面内有n个
矩形
,第i个
矩形
的左下角坐标为。
矩形
总面积计算器:计算两个
矩形
的总面积,包括
重叠
区域
本文介绍了一个简单而高效的
算法
,用于计算两个
矩形
的总面积(包括
重叠
区域
)。通过计算各自的面积,以及
重叠
区域
的面积,我们可以轻松地得到两个
矩形
的总面积。这个
算法
思路清晰,并且在时间复杂度上
非
常高效。希望本文能够帮助读者理解如何计算两个
矩形
的总面积,并在实际应用中提供指导。如有任何疑问或建议,请随时提出。
leetcode:
非
重叠
矩形
中的随机点选取
题目来源:力扣 题目描述: 给定一个
非
重叠
轴对齐
矩形
的列表 rects,写一个函数 pick 随机均匀地选取
矩形
覆盖的空间中的整数点。 提示: 整数点是具有整数坐标的点。
矩形
周边上的点包含在
矩形
覆盖的空间中。 第 i 个
矩形
rects [i] = [x1,y1,x2,y2],其中 [x1,y1] 是左下角的整数坐标,[x2,y2] 是右上角的整数坐标。 每个
矩形
的长度和宽度不超过 2000。...
矩形
重叠
--
矩形
重叠
个数问题
平面内有n个
矩形
, 第i个
矩形
的左下角坐标为(x1[i], y1[i]), 右上角坐标为(x2[i], y2[i])。 如果两个或者多个
矩形
有公共
区域
则认为它们是相互
重叠
的(不考虑边界和角落)。 请你计算出平面内
重叠
矩形
数量最多的地方,有多少个
矩形
相互
重叠
。 输入描述: 输入包括五行。 第一行包括一个整数n(2 <= n <= 50), 表示
矩形
的个数。 第二行包括n个...
数据结构与算法
33,025
社区成员
35,334
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章