题目描述:

在图形开发过程中,需要求最小闭合区域,当获得了所有的闭合区域后,有一部分区域是重叠的,现设计算法将重叠的区域删除。(此算法类似于 删除无序数组中重复的元素)

//去除重叠的图形
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++)相关推荐

  1. matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域

    plt.savefig() 输出图片完美去除旁边的空白区域 plt.savefig("test.png",bbox_inches='tight',pad_inches = -0.1 ...

  2. cad一键标注闭合区域lisp_CAD快捷键大全,你值得学会!

    最新版 表格版: 版本1: 版本2: 版本3: 工具名称快捷键功能说明绘图工具直线L画图用得最多的工具,用法也很简单,由于直线等命令使用频率最高但键位操作却很不方便,所以我们有必要更改它.构造线XL无 ...

  3. matlab寻找闭合,MatLab求取多个闭合区域的轮廓、面积和bbox

    问题描述 要对如下所示的二值标签图做如下处理: 获取每一个闭合小区域的轮廓曲线坐标 获取每一个闭合小区域的面积 获取每一个闭合小区域的 bounding box 处理方法 问题一: 获取每一个闭合小区 ...

  4. python 使用 plt.savefig() 保存图片去除旁边的空白区域

    论文绘图,不希望图片有太多的空白区域,网上搜了一些方法,下面这个方法简单有效: 只需要在plt.savefig()函数中,加入一个参数.即plt.savefig("path", b ...

  5. CAD开发__识别相交线之间闭合区域

    概述     在设计过程中,用户需要从一堆相交的线中去找出所有的闭合区域,然后统计面积或者做其他标注.CAD自带的BO命令可以生产面域,但只能一个个操作,显得比较繁琐.为此,给用户开发一个框选线识别闭 ...

  6. 框选N条(线段,多段线),求不重合闭合区域问题

    需求:选择图中所有线条,求所有不重合的闭合区域(根据本人研究,该功能,AutoCAD并未完美实现) 解决方案: 第一步:求解图中所有Line和Pline的交点及端点(记为arPoint),并按照交点将 ...

  7. C语言去除图像的离散区域,Visual C++数字图像实用工程案例精选

    第1章  数字图像处理技术  1 1.1  图像的常见格式  1 1.1.1  BMP文件格式  2 1. BMP文件头  2 2. BMP文件信息头  3 3. BMP文件调色板  4 4. BIT ...

  8. 【Matlab】去除图片周围空白区域(plot subplot)

    1. 原理 figure如同一张画布,axes是坐标轴用来控制所画图的位置和大小. 在matlab的帮助文档中Graphics->Formatting and Annotation->Co ...

  9. cad一键标注闭合区域lisp_自从用了这个CAD神器,我下班总比别人早

    说到CAD,不管你学建筑的,景观的,规划的,室内的 还是做方案的,画施工图的 不管你是实习生,还是总监,都难逃CAD的魔爪 因此我们在设计院大楼里,经常看到有人通宵画CAD 所以为了让大家可以早点下班 ...

最新文章

  1. 老男孩IT教育在线3期新学员司毅的计算机的基础知识
  2. centos配置oracle自启,centos 下配置oracle11gR2开机自启
  3. mysql中存储引擎是啥_mysql中的存储引擎
  4. 【Verilog HDL】语句的并发执行
  5. r包调用legend函数_R语言实现基于朴素贝叶斯构造分类模型数据可视化
  6. Linux下弹出CDROM的程序(参考网上程序)
  7. MySQL注释(转)
  8. 霍夫直线检测python_python+opencv实现霍夫变换检测直线的方法
  9. 米思齐_米思齐公益培训之交互式图形设计与数据分析圆满落幕
  10. Nginx源码阅读 ---- 模块的初始化过程,工作进程中初始化事件模块
  11. Composer + thinkphp5.1安装与使用
  12. java mdt_java – MST映射到当前是MDT的joda中的Denver时区.这是joda DateTimeZone中的错误吗?...
  13. 远程桌面连接设置详细步骤
  14. C中code定义的数据要存储在ROM程序存储区基于8051单片机C语言编程实例100例都用CODE定义数组。因为51单片机RAM128字节汇编语言标号代表指令所在ROM地址标号+DB定义数据在ROM
  15. U3D手游《苍穹变》性能优化经验谈
  16. STM32J-LINK下载教程
  17. AI时代——人工智能技术图谱,它来啦(机器学习+深度学习学习路线)
  18. 如何在VMware Workstation虚拟机上安装苹果系统(Mac OS)
  19. open cv均值 中值 高斯 双边高斯 滤波及模糊
  20. 文献翻译:Social LSTM: Human Trajectory Prediction in Crowded Spaces

热门文章

  1. 朋友高考没考好怎么安慰的话
  2. 自定义圆形进度条,金额百分比
  3. 二手车数据分析-task2数据分析
  4. mysql dump csv_利用mysqldump命令导出为csv格式文件
  5. 彻底搞清楚Java的位运算(位实现加减乘除)
  6. Bootstrap的文本内容之Reboot
  7. 怎么打开计算机开机启动菜单,启动项,教您电脑开机启动项怎么设置
  8. 非科班程序员与科班程序员的区别在哪里?
  9. 【追光者系列】HikariCP连接池监控指标实战
  10. 随手记投资安全吗?随手记所合作的广发银行成功入围首批银行存管白名单。