题目描述:

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

//去除重叠的图形
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. npm i和npm install的区别
  2. 6678EVM调试K1_STK_v1.1例程中GE_test的时候报错:DDR3 leveling has failed, STATUS = 0x40000064的解决办法
  3. Mono,CLR,.net,Net Framework之间的关系
  4. 最全的Pycharm debug技巧
  5. Delphi如何获取本机IP地址
  6. HTML示例07---图像与超链接
  7. 计算机在生活中应用视频,计算机在腐蚀防护中的应用教学视频
  8. php mysql 任务队列_PHP+MySQL实现消息队列步骤详解
  9. 输入字符串按照单词逆序输出
  10. 【礼仪大赛策划方案常识】 什么是正装
  11. 栈-剑指 Offer 30. 包含min函数的栈
  12. 【资源分享】《软件工程-原理、方法与应用(第3版)》(顺便分享查找资料小技巧)
  13. Firemonkey
  14. energy plus matlab,Energyplus教程系列1—Energyplus到底能干啥.ppt
  15. 芝诺数解|【三】前程未可量,奋发而为之——国产动画电影探索之路
  16. git 找回删除的文件
  17. linux下搜狗输入法wps无法使用,搜狗输入法能在WPS下使用,但其他地方不能输入...
  18. Linux性能优化之 CPU 篇
  19. VUE中toast的使用与开发
  20. vscode源代码管理不显示修改的文件夹

热门文章

  1. 一名25岁的董事长给大学生的18条忠告
  2. eclipse拼接sql mysql_链接Eclipse和SQL SEVER_MySQL
  3. java判断字符串是否全部由数字,大小写字母,特殊符号组成
  4. windows10无法正常关机的解决方法
  5. HTML5学习笔记2
  6. 编译原理MOOC部分习题答案+解读(逐渐更新..
  7. 【JZOJ4231】寻找神格
  8. 顺序栈十进制转八进制C语言,顺序栈实现十进制跟八进制之间的转换
  9. c++中stringstream常见用法
  10. 【Java】ArrayList用法详解