社区
图形处理/算法
帖子详情
把不规则多边形分割成矩形的问题
bdxxxx
2011-11-07 04:56:43
有一个由多个矩形重叠成的不规则图形,要重新分割成多个矩形不重叠组成的图形,求思路或者算法,自己写了很多次不是太麻烦就是太局限就是考虑不周到。。。
分割的结果类似下图
...全文
1769
17
打赏
收藏
把不规则多边形分割成矩形的问题
有一个由多个矩形重叠成的不规则图形,要重新分割成多个矩形不重叠组成的图形,求思路或者算法,自己写了很多次不是太麻烦就是太局限就是考虑不周到。。。 分割的结果类似下图
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caozl
2011-11-10
打赏
举报
回复
[Quote=引用 12 楼 bdxxxx 的回复:]
引用 11 楼 caozl 的回复:
如果任一分法都可以的话 是不是这样认为呢
既然是由多个矩形重叠成的不规则图形 那就一个一个的把矩形给累加上去
两个矩形的并结果最多可以分成三个矩形。然后再把下一个矩形与这些结果分别做并。
两个矩形有重叠部分 最一般的结果不是3个矩形,而是一个矩形和2个L型多边形
[/Quote]
我的意思并不是求交 而是指X轴方向或Y轴方向上切开并运算的结果 这样可以得到3个矩形吧
然后就是不断的添加矩形与当前存在的矩形去运算。把运算结果取出再重新添加
bdxxxx
2011-11-10
打赏
举报
回复
[Quote=引用 11 楼 caozl 的回复:]
如果任一分法都可以的话 是不是这样认为呢
既然是由多个矩形重叠成的不规则图形 那就一个一个的把矩形给累加上去
两个矩形的并结果最多可以分成三个矩形。然后再把下一个矩形与这些结果分别做并。
[/Quote]
两个矩形有重叠部分 最一般的结果不是3个矩形,而是一个矩形和2个L型多边形
caozl
2011-11-10
打赏
举报
回复
如果任一分法都可以的话 是不是这样认为呢
既然是由多个矩形重叠成的不规则图形 那就一个一个的把矩形给累加上去
两个矩形的并结果最多可以分成三个矩形。然后再把下一个矩形与这些结果分别做并。
caozl
2011-11-10
打赏
举报
回复
[Quote=引用 15 楼 bdxxxx 的回复:]
引用 14 楼 caozl 的回复:
我对这个问题的基本思路是:
定义CRECT类 在这个类里有一个方法:
bool CRECT::AddRect(CRect& rect, std::vector<CRect>& rectResults);
当两个矩形相交或者可以合并为一个矩形的时候,这个方法返回true, 并把合并的结果传出
输入为一个std::……
[/Quote]
不需要整理 因为
bool CRECT::AddRect(CRect& rect, std::vector<CRect>& rectResults);
当两个矩形相交或者可以合并为一个矩形的时候,这个方法返回true, 并把合并的结果传出
如果生成的矩形可以和相邻的矩形合并的话 在添加进结果数组的时候就会合并了。
peterormike
2011-11-10
打赏
举报
回复
沿着凹点分割,递归处理。以9楼的图形为例:
http://hi.csdn.net/attachment/201111/10/2530173_1320907025RRCC.jpg
bdxxxx
2011-11-10
打赏
举报
回复
[Quote=引用 14 楼 caozl 的回复:]
我对这个问题的基本思路是:
定义CRECT类 在这个类里有一个方法:
bool CRECT::AddRect(CRect& rect, std::vector<CRect>& rectResults);
当两个矩形相交或者可以合并为一个矩形的时候,这个方法返回true, 并把合并的结果传出
输入为一个std::vector<CRect> rectInput;
输出为……
[/Quote]
应该是可以 但是这会导致分块越来越小,矩形越来越多,还需要在分成小块之后进行整理
caozl
2011-11-10
打赏
举报
回复
我对这个问题的基本思路是:
定义CRECT类 在这个类里有一个方法:
bool CRECT::AddRect(CRect& rect, std::vector<CRect>& rectResults);
当两个矩形相交或者可以合并为一个矩形的时候,这个方法返回true, 并把合并的结果传出
输入为一个std::vector<CRect> rectInput;
输出为一个std::vector<CRect> rectOutput;
把rectInput里的矩形分别与rectOutput中的矩形做AddRect运算 如果返回TRUE 就把返回的结果给push_back到rectInput的后面。并把rectOutput中的这个矩形给删除。
bdxxxx
2011-11-09
打赏
举报
回复
呃 看来没人有兴趣啊
laviewpbt
2011-11-07
打赏
举报
回复
利用WINDOWS的GDI函数GetRegionData 的话可以得到如下的四个矩形。
谁是我的谁的谁
2011-11-07
打赏
举报
回复
不要瞎出主意了 典型的图形学2维几何(可以中空-有孔) 运算(并)问题
用户 昵称
2011-11-07
打赏
举报
回复
[Quote=引用 6 楼 bdxxxx 的回复:]
引用 2 楼 jennyvenus 的回复:
可不可以这样
把边界的线段提取出来,一定要提取到最短的线段,不能再分,然后找共有线段。
然后判断如果没有共有线段的话,某个矩形是不是一个矩形
这个样子分出来的矩形是不是太小了。。。
[/Quote]
不知道啊,俺所能想像的就是这个了
bdxxxx
2011-11-07
打赏
举报
回复
[Quote=引用 2 楼 jennyvenus 的回复:]
可不可以这样
把边界的线段提取出来,一定要提取到最短的线段,不能再分,然后找共有线段。
然后判断如果没有共有线段的话,某个矩形是不是一个矩形
[/Quote]
这个样子分出来的矩形是不是太小了。。。
bdxxxx
2011-11-07
打赏
举报
回复
[Quote=引用 3 楼 bhybhybhy2 的回复:]
查 图形学 2维图形的几何运算
代码到cgal里面找
[/Quote]
多谢
bdxxxx
2011-11-07
打赏
举报
回复
[Quote=引用 1 楼 happyparrot 的回复:]
你所画的只是一个很简单的特例,能选择的拆分方法只有一种。而对于复杂的重叠情况,可能能够满足条件的拆分方法并不止一种,你如何要求哪种是正确的,或者任何一种都可以呢?
[/Quote]
我画的却是是很简单的,实际情况是还有可能是中空的, 满足拆分条件的都任一分法都可以
谁是我的谁的谁
2011-11-07
打赏
举报
回复
查 图形学 2维图形的几何运算
代码到cgal里面找
用户 昵称
2011-11-07
打赏
举报
回复
可不可以这样
把边界的线段提取出来,一定要提取到最短的线段,不能再分,然后找共有线段。
然后判断如果没有共有线段的话,某个矩形是不是一个矩形
快乐鹦鹉
2011-11-07
打赏
举报
回复
你所画的只是一个很简单的特例,能选择的拆分方法只有一种。而对于复杂的重叠情况,可能能够满足条件的拆分方法并不止一种,你如何要求哪种是正确的,或者任何一种都可以呢?
C#实现
不规则
图形
分割
成
多个
矩形
组合可视化工具, 核心是一个找最大内切
矩形
的算法
C#代码,
不规则
图形
分割
成
多个
矩形
,可视化工具, 核心是一个找最大内切
矩形
的算法 牵涉到的知识点: 1. 图片的加载和像素解析,绘制到pictureBox上 2.控制pitctureBox缩放(ctrl+滚轮)和移动 3.动态生
成
bitmap,...
python实现根据给定坐标点生
成
多边形
mask的例子
今天小编就为大家分享一篇python实现根据给定坐标点生
成
多边形
mask的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
特效-
多边形
特效/PS高端辅助/动态人像速
成
特效 [精品推荐]
设计这种
多边形
效果时,如果纯粹的使用PS去实现的话,是一件很让人蛋疼的事情,那么采用本课的
多边形
特效生
成
器,带你装逼,带你飞,能很大程度的节省了你谈恋爱的时间,还在等神马,快动起来,打开你的电脑,马上开...
高分辨率影像分类提取建筑物轮廓的优化方法
分类法提取建筑物因易受到错误检测的影响而存在边缘锯齿、形状
不规则
等
问题
。提出了一种利用符合建筑物轮廓及轴向的最佳外接
矩形
和Hausdorff距离综合优化建筑物轮廓的方法。首先利用偏移阴影
分割
分类方法提取建筑物,...
一款非常好的WPF编程宝典2010 源代码
20.1.3 打印不显示的元素 578 20.1.4 打印文档 579 20.1.5 在文档打印输出中 控制页面 582 20.2 自定义打印 584 20.2.1 使用可视化层中的类 进行打印 584 20.2.2 自定义多页打印 587 20.3 打印设置和管理 ...
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章