[计算几何]-去除重叠的闭合区域(C++)
题目描述:
在图形开发过程中,需要求最小闭合区域,当获得了所有的闭合区域后,有一部分区域是重叠的,现设计算法将重叠的区域删除。(此算法类似于 删除无序数组中重复的元素)
//去除重叠的图形
std::vector<std::vector<CLine>> removeOverlapArea(vector<vector<CLine>> ClosedArea)
{
//<vector<CLine>> 表示一个闭合区域,有多条线段围成
//vector<vector<CLine>> 表示闭合区域的集合unsigned int nSize = ClosedArea.size();if (nSize < 2) //只有一個閉合區域{return ClosedArea;}//去除重叠的区域size_t n = ClosedArea.size();size_t j = 0;for (size_t i=0; i < n; i++){for(size_t j=0;j<i;j++){//if(arr[i]==arr[j])if(IsOverlap(ClosedArea[i],ClosedArea[j])){n--;for (size_t k=i; k<n; k++){ClosedArea[k]=ClosedArea[k+1];}i--; }}}vector<vector<CLine>>::iterator it1,it2;it1 = ClosedArea.begin() + n;it2 = ClosedArea.end();ClosedArea.erase(it1,it2);return ClosedArea;
}
//判断是否是重合的图形
bool IsOverlap(vector<CLine> AreaLeft,vector<CLine> AreaRight)
{for (unsigned int i = 0;i < AreaLeft.size(); i++){CLine m_lineLeft = AreaLeft[i];bool bEqualLine = false;for (unsigned int j = 0;j < AreaRight.size();j++){if (m_lineLeft.isEqual(AreaRight[j])){bEqualLine = true;}}if (bEqualLine == false){return false; //只要有一条线段不相同,必然不重合}}return true;
}
[计算几何]-去除重叠的闭合区域(C++)相关推荐
- matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
plt.savefig() 输出图片完美去除旁边的空白区域 plt.savefig("test.png",bbox_inches='tight',pad_inches = -0.1 ...
- cad一键标注闭合区域lisp_CAD快捷键大全,你值得学会!
最新版 表格版: 版本1: 版本2: 版本3: 工具名称快捷键功能说明绘图工具直线L画图用得最多的工具,用法也很简单,由于直线等命令使用频率最高但键位操作却很不方便,所以我们有必要更改它.构造线XL无 ...
- matlab寻找闭合,MatLab求取多个闭合区域的轮廓、面积和bbox
问题描述 要对如下所示的二值标签图做如下处理: 获取每一个闭合小区域的轮廓曲线坐标 获取每一个闭合小区域的面积 获取每一个闭合小区域的 bounding box 处理方法 问题一: 获取每一个闭合小区 ...
- python 使用 plt.savefig() 保存图片去除旁边的空白区域
论文绘图,不希望图片有太多的空白区域,网上搜了一些方法,下面这个方法简单有效: 只需要在plt.savefig()函数中,加入一个参数.即plt.savefig("path", b ...
- CAD开发__识别相交线之间闭合区域
概述 在设计过程中,用户需要从一堆相交的线中去找出所有的闭合区域,然后统计面积或者做其他标注.CAD自带的BO命令可以生产面域,但只能一个个操作,显得比较繁琐.为此,给用户开发一个框选线识别闭 ...
- 框选N条(线段,多段线),求不重合闭合区域问题
需求:选择图中所有线条,求所有不重合的闭合区域(根据本人研究,该功能,AutoCAD并未完美实现) 解决方案: 第一步:求解图中所有Line和Pline的交点及端点(记为arPoint),并按照交点将 ...
- C语言去除图像的离散区域,Visual C++数字图像实用工程案例精选
第1章 数字图像处理技术 1 1.1 图像的常见格式 1 1.1.1 BMP文件格式 2 1. BMP文件头 2 2. BMP文件信息头 3 3. BMP文件调色板 4 4. BIT ...
- 【Matlab】去除图片周围空白区域(plot subplot)
1. 原理 figure如同一张画布,axes是坐标轴用来控制所画图的位置和大小. 在matlab的帮助文档中Graphics->Formatting and Annotation->Co ...
- cad一键标注闭合区域lisp_自从用了这个CAD神器,我下班总比别人早
说到CAD,不管你学建筑的,景观的,规划的,室内的 还是做方案的,画施工图的 不管你是实习生,还是总监,都难逃CAD的魔爪 因此我们在设计院大楼里,经常看到有人通宵画CAD 所以为了让大家可以早点下班 ...
最新文章
- npm i和npm install的区别
- 6678EVM调试K1_STK_v1.1例程中GE_test的时候报错:DDR3 leveling has failed, STATUS = 0x40000064的解决办法
- Mono,CLR,.net,Net Framework之间的关系
- 最全的Pycharm debug技巧
- Delphi如何获取本机IP地址
- HTML示例07---图像与超链接
- 计算机在生活中应用视频,计算机在腐蚀防护中的应用教学视频
- php mysql 任务队列_PHP+MySQL实现消息队列步骤详解
- 输入字符串按照单词逆序输出
- 【礼仪大赛策划方案常识】 什么是正装
- 栈-剑指 Offer 30. 包含min函数的栈
- 【资源分享】《软件工程-原理、方法与应用(第3版)》(顺便分享查找资料小技巧)
- Firemonkey
- energy plus matlab,Energyplus教程系列1—Energyplus到底能干啥.ppt
- 芝诺数解|【三】前程未可量,奋发而为之——国产动画电影探索之路
- git 找回删除的文件
- linux下搜狗输入法wps无法使用,搜狗输入法能在WPS下使用,但其他地方不能输入...
- Linux性能优化之 CPU 篇
- VUE中toast的使用与开发
- vscode源代码管理不显示修改的文件夹