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

Qt之判断一个点是否在多边形内部(射线法)

算法思想:
以被测点Q为端点,向任意方向作射线(一般水平向右作射线),统计该射线与多边形的交点数。如果为奇数,Q在多边形内;如果为偶数,Q在多边形外。计数的时候会有一些特殊情况。这种方法适用于任意多边形,不需要考虑精度误差和多边形点给出的顺序,时间复杂度为O(n) 。
某些特殊的情况下需要单独考虑,如下图所示:

在图A中,射线与多边形的顶点相交,这时交点只能计算一个;在图B中,射线与多边形顶点的交点不应被计算;在图C中,射线与多边形的一条边重合,这条边应该被忽略不计。
为了统一起见,射线可设定为水平向右,设点P的纵坐标与Q相同,P的横坐标为一大的整数,则可用QP代替射线。
判断算法描述如下:首先,对于多边形的水平边不做考虑;其次,对多边形的顶点和射线相交的情况,如果该顶点是其所属的边上纵坐标较大的顶点,则计数,否则忽略该点;最后,对于Q在多边形边上的情形,直接可以判断Q属于多边形。

#include <QCoreApplication>
#include <QVector>
#include <QPointF>
#include <QMatrix>
#include <QDebug>// 判断点P在多边形内-射线法
bool insidePolygon(QVector&
http://www.lryc.cn/news/264670.html

相关文章:

  • 压力测试过程中内存溢出(堆溢出、栈溢出、持久代溢出)情况如何解决
  • 【工业智能】音频信号相关场景
  • (PC+WAP)装修设计公司网站模板 家装公司网站源码下载
  • 使用opencv实现图像中几何图形检测
  • 补题与周总结:leetcode第 376 场周赛
  • js指纹库,可跟踪用户唯一性
  • Shell三剑客:awk(内部变量)
  • JVM中的虚拟机栈的动态链接部分存放到底是什么
  • Leetcode 55 跳跃游戏
  • 构建陪诊预约系统:技术实战指南
  • windows和linux将文件删除至回收站【C++】【Go】语言实现
  • 10 Vue3中v-html指令的用法
  • 华为数通方向HCIP-DataCom H12-831题库(多选题:181-200)
  • DC-磁盘管理
  • 使用Docker运行镜像文件与设置端口
  • Centos 8.5 Oracle12c安装
  • Apache Tomcat httpoxy 安全漏洞 CVE-2016-5388 已亲自复现
  • ChatGLM3-6B 的调用参数说明,chat 与stream_chat 接口函数的参数说明
  • Vuex的学习-2
  • 智慧安防视频监控EasyCVR如何通过回调接口向第三方平台推送RTSP视频通道离线通知
  • Scrum项目管理流程及免费敏捷工具
  • 大型医院PACS系统源码,影像存储与传输系统源码,支持多种图像处理及三维重建功能
  • HDFS NFS Gateway(环境配置,超级详细!!)
  • nginx 离线安装 https反向代理
  • Linux Centos 配置 Docker 国内镜像加速
  • 中心下标-----来自力扣
  • 手写单链表(指针)(next域)附图
  • 关于with torch.no_grad:的一些小问题
  • 大创项目推荐 深度学习 机器视觉 人脸识别系统 - opencv python
  • 【PostGIS】空间数据库-常用空间函数