当前位置: 首页 > news >正文

Qt5.14.2 多边形与多边形求交集

利用Qt5.14.2 中自带的QPolygonF类的intersected()函数求两个多边形的交集多边形。

inline QList<QPolygonF> getPolygonIntersectedWithPolygon(QPolygonF polygon1, QPolygonF polygon2){QList<QPolygonF> outval;//此处求出的intersection可能包含多个子区域,需要进一步处理QPolygonF intersection = polygon1.intersected(polygon2);//交集点数量int pCount = intersection.count();if(pCount == 0) return outval;  //如果没有交集,返回一个空列表QVector<QPointF> plst;  //子区域点列表QPointF curP = (QPointF)intersection.at(0); //首点plst.append(curP);//搜索小块分区for(int j = 1; j < pCount; j++){QPointF tp = (QPointF)intersection.at(j);if(curP == tp){//首尾点一致,则说明一个子区域搜索完毕plst.append(tp);//有时会出现第二个点与倒数第2个点相同,此时可以去掉首尾点while(plst.count() >= 4&& (plst[1] == plst[plst.count() - 2])){plst.removeFirst();plst.removeLast();qDebug() << "去掉多余点";}//创建当前子区域的多边形QPolygonF _poly(plst);if(plst.count() > 2){outval.append(_poly);}plst.clear();   //清空子区域列表if(j < pCount - 1){//将下一个点设置为首点curP = (QPointF)intersection.at(j + 1);plst.append(curP);  //将下一个点加入列表j++;}continue;}else{plst.append(tp);    //当前点加入列表}}return outval;  //返回交集多边形列表}

欢迎交流学习!


http://www.mrgr.cn/news/6729.html

相关文章:

  • AI大模型独角兽 MiniMax 基于 Apache Doris 升级日志系统,PB 数据秒级查询响应
  • 常微分方程的项源(source term)
  • 【Docker】Docker学习02 | docker-cli的基本命令
  • Application实际在云原生中的应用
  • 在Logback中配置`requestId`进行日志追踪的实践与应用
  • Github 2024-08-24 Rust开源项目日报 Top10
  • Linux数据相关第1个服务_备份服务rsync
  • Spring Boot 全局异常@ControllerAdvice和@RestControllerAdvice的区别
  • 【Hot100】LeetCode—98. 验证二叉搜索树
  • 2024河南萌新联赛第五场 A日历游戏(SG函数)
  • MyBatis 源码解读:MyBatis 核心架构与模块总览
  • 手机录音怎么降噪提取人声?四种高效提取人声的软件介绍!
  • C++ | Leetcode C++题解之第368题最大整除子集
  • idea git使用
  • 探索大语言模型在DNA 分析到表达预测以及生物信息学应用
  • Tutorial:Deep Learning for Remote Sensing Data
  • TD学习笔记————中级教程总结(上)
  • P2P 文件共享:现代网络中的高效文件传输
  • Leetcode 104. 二叉树的最大深度 C++实现
  • 哈夫曼树编码实现