判断一个点是否在多边形区域内--C算法

c语言实现点在多边形内部,判断点在多边形内算法的C++实现 [TOC]1. 算法思路判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况。该算法的思路很简单,就是从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。如下图所示: 算法步骤如下: 已知点point(x,y)和多边形Polygon的点有序集合(x1,y1;x2,y2;….xn,y... 阅读详情

/*
函数的输入:
(1)当前点的坐标p
(2)区域顶点数组pt[];
(3)顶点数nCount
 输出: 在区域内返回TRUE,否则返回FALSE。
 
 Point类型是一个结构:
 struct Point
 {
    类型 x;//此处类型根据采用的经纬度类型决定。
    类型 y;
 };
*/
BOOL PtInPolygon(Point p, Point pt[], int nCount)
{
   int nCross = 0;
   for (int i = 0; i < nCount; i++)
   {
      Point p1 = pt[i];
      Point p2 = pt[(i + 1) % nCount];
      if (p1.y == p2.y)
      {
         if (p.y == p1.y && p.x >= min(p1.x, p2.x) && p.x <= max(p1.x, p2.x))
            return true;
         continue;
      }
      if (p.y < min(p1.y, p2.y) || p.y > max(p1.y, p2.y))
         continue;
     double x = (double)(p.y - p1.y) * (double)(p2.x - p1.x) / (double)(p2.y - p1.y) + p1.x;

     if (x > p.x)
           nCross++;
     else if (x == p.x)
        return true;
   }
    if (nCross % 2 == 1)
       return true;
     return false;
}


 

建议转换成整形,因为浮点形的比较可能会出现边界问题
C语言判断点是否在多边形内 阅读详情

相关推荐

判断一个坐标点是否在不规则多边形内部

引射线法:从目标点出发引一条射线,看这条射线和多边形所有边的交点数目。如果有奇数个交点,则说明在内部,如果有偶数个交点,则说明在外部。 引射线法是项目中的常用算法,其他判断一个坐标点是否在不规则多边形内部还有: 面积和判别法:判断目标点与多边形的每条边组成的三角形面积和是否等于该多边形,相等则在多边形内部。 夹角和判别法:判断目标点与所有边的夹角和是否为360度,为360度则在多边形内部。 主要说引射线法,因为项目中有应用到,其它两个方法也好理解。 引射线法的具体做法:将测试点的Y坐标与多边形的每一个点进行

Fekerkk的博客 3503

判断点是否在多边形内的算法和C语…

判断点是否在多边形内的算法和C语言程序 判断点是否在凸多边形内,有多种方法,方法简单,计算速度也快。 但实际问题中遇到的多边形不一定是凸多边形,它可能是凹多变形,或几何形状复杂如同迷宫般的多边形。 判断一个点在多边形内或多边形外,比较可靠,也容易理解的方法是射线法。 射线法,把多边形理解为一个有围墙的大院,一个人从院外越过一道墙,他就进了大院,如果他再越过一道墙,就出了大院。无论大院的形状

rxm1989的专栏 1246

扫线法快速判断凹多边形相交

简介: 首先给出我的Github页面:ConcaveIntersection 这个开源库基于Unity开发,主要实现了凹多边形之间的相交判断,当然也可以应用于顶点与凹凸包、线段与凹凸包、凸包与凸包之间的相交判断,也就是说,这个方案基本可以解决前面两则文章中的所有多边形判断,效率也非常高,复杂度几乎接近O(n),下面解释原理。 一、扫线法概念 扫线法其实是一种常用的平面空间算法思路,在很多算法...

Andrew的游戏世界 4842

C语言中实现点在多边形内的算法

C语言中实现 点在多边形内 算法 本文是采用射线法判断点是否在多边形内的C语言程序。多年前,我自己实现了这样一个算法。但是随着时间的推移,我决定重写这个代码。参考周培德的《计算几何》一书,结合我的实践和经验,我相信,在这个算法的实现上,这是你迄今为止遇到的最优的代码。  这是个C语言的小算法的实现程序,本来不想放到这里。可是,当我自己要实现这样一个算法的时候,想在网上找个现成的,考察下来竟然一个符

QQ772045617的专栏 1202

C语言实现的PNPoly算法代码例子

主要介绍了C语言实现的PNPoly算法代码例子,PNPoly算法j是判断一个坐标点是否在不规则多边形内部的算法,需要的朋友可以参考下

如何在R中高效安装ropls及其依赖包

本文详细介绍了在R语言中高效安装ropls包及其依赖的完整流程。作为Bioconductor生物信息学分析包,ropls的安装需通过BiocManager管理器进行。文章提供了标准安装步骤、跨系统避坑指南及安装后验证方法,帮助用户解决R版本、编译环境和网络镜像等常见问题,确保代谢组学数据分析工具顺利部署。

efc123456的博客 907

判断一个点是否在指定区域内

using System.Drawing; private int IsLeft(Point P1, Point P2, Point P0) { int abc = 0; try { abc = ((P2.X - P1.X) * (P0.Y - P1.Y) -

llw01的专栏 3250

在MCUXpresso上通过J-link烧写KW45

背景: KW45B是nxp 的ble npi产品,其使用的IDE为MCUXpressso或者IAR,MCUXpressso有一些bug,但是由于MCUXpressso阅读查找代码相对IAR容易,所以我经常使用的MCUXpressso进行开发。当然IAR也有其优势,比如编译、烧写速度相对MCUXpressso更快,是比较通用的一个平台,而MCUXpressso是NXP独有的。 Kw45有两种烧写方式,一是使用MCUlink,二是使用Jlink。NXP ble 产品线提供的IDE资料里有最新的15.0版本的

weixin_41889258的博客 2859

如何判断一个点在多边形内

将多边形划分为若干区域,二分地去查询落在哪个子区域,判断是落在哪个子区域内后判断是否落在该区域的三角形内,若是则在多边形内,若不是则在多边形外。同上面三角形的判断方法一样,对凸多边形逆时针取向量,那么P点必然在这些向量的左侧。同上面三角形的判断方法一样,可以将点P与多边形所有顶点连线构成子三角形,判断这些子三角形的面积之和是否等于多边形面积之和。同上面三角形的判断方法一样,将多边形划分成若干三角形,然后用重心坐标性质判断。将P点与多边形各个顶点连线,环绕多边形一周,内角和为360°说明在多边形内。...

qq_42987967的博客 8126

ZEMAX学习第7天-手机镜头光学系统设计全过程案例

接下来对系统微调,依次缩小CRA和畸变,首先对CRA进行依次递减(39°、38°、37°、36°、35°),目前CRA角度40度,每次下降一度进行优化,利用MAXX加OPLT一起控制,控制小于35°。可以看出在标注的三个地方镜头曲率变化,导致PY=1的光线走向奇特,因此需要对矢高进行调整,按照标注的地方依次调整(从右到左)至传函变好,越靠近右边对其余视场影响越小。3.圆锥系数值较大,透镜形状怪异;一、第1,3镜子偏厚,第4镜子偏薄,45镜子间隔边缘偏小,第5片镜子中心厚度与边缘厚度相差较大,需要控制;

liningliwei的博客 1065

AIR780E二次开发点灯(LuatOS)

Air780E的LuatOS点灯教程,二次开发教程,可用于所有ec618平台,无需SDK

rootuseres的博客 1万+

射线法判断地图上点是否在多边形内

1. 射线法介绍 在地图应用上,我们会经常需要判断一个点是否位于多边形区域内,这里介绍下采用射线法如何实现。 算法思想:从待判断的点向某一个方向引射线,计算和多边形交点的个数,如果个数是偶数或者0,则点在多边形外,如果是奇数,则在多边形内,如下图: 这里有两种情况需要特殊处理: 1) 射线经过顶点:当射线经过顶点时,判断就会出现异常情况。 2) 点在边上:这种

提笔写忧伤 7398

超级详细的H3C模拟器HCL的交换机Telnet服务配置过程(图文)

VC++2017 MFC关于一个电话机房配线架进线出线节点数据库管理的程序 机房数据库原来是一个EXCEL表,查询,输入数据不方便。现用access数据库ODBC访问。平常没编过程序,编个程序练练手。记录一下学习中的问题,和解决方法,供大家分享,讨论,以便共同进步。希望多提宝贵意见,携手提高代码水平。 程序写的很不规范,代码冗余,显得程序臃肿,代码重用性差。发表这篇博客的目的也是为了改进这个程序。CListCtrl 单元格可以编辑,有Combo Box下拉列表功能。使用PreTranslateMe

techcai的博客 1万+

判断一个点是否在不规则图形中

本文转自https://www.cnblogs.com/anningwang/p/7581545.html(转载只为保存方方便之后查看) 判断一个点是否在多边形内部 - 射线法思路 比如说,我就随便涂了一个多边形和一个点,现在我要给出一种通用的方法来判断这个点是不是在多边形内部(别告诉我用肉眼观察……)。 首先想到的一个解法是从这个点做一条射线,计算它跟多边形边界的交点个数,如果交点个数为奇数,...

u014421970的博客 5726

uniapp | 基于高德地图实现位置选择功能(安卓端)

在uni-app项目中实现地图位置选择功能的解决方案。由于uni.chooseLocation功能受限,采用高德地图API自主开发。系统由父组件poiMap.vue(负责展示和跳转)和子组件poiBox.vue(核心地图逻辑)构成,通过父子组件通信传递位置数据。关键技术包括:1)使用AMapLoader动态加载地图SDK;2)集成PositionPicker实现拖拽选点;3)异步加载AMapUI插件;4)通过事件监听获取位置详情(地址/经纬度)。

大胆尝试,小心实践 731

深入C++学习还必须掌握的一基础知识精讲

施磊C++语言基础提高课程笔记,包括了new/delete;malloc/free;引用和指针;const,指计和引用的结合;函数重载,inline的数,参数带默认值的函数;函数模板等知识点

GeniusAng的博客 1477

判断地图上一个点是否在多边形内部--射线法

比如说,我就随便涂了一个多边形和一个点,现在我要给出一种通用的方法来判断这个点是不是在多边形内部(别告诉我用肉眼观察……)。 首先想到的一个解法是从这个点做一条射线,计算它跟多边形边界的交点个数,如果交点个数为奇数,那么点在多边形内部,否则点在多边形外。 这个结论很简单,那它是怎么来的?下面就简单讲解一下。 首先,对于平面内任意闭合曲线,我们都可以直观地认为,曲线把平面分割成了内、外两部分,其中“内”就是我们所谓的多边形区域。 基于这一认识,对于平面内任意一条直线,我们可以得出下面这些结

岩的博客 1049

智能硬件产品 App 全球发布 第 1 章:全球 App 发布战略设计

本章阐述智能硬件 App 全球发布战略,涵盖市场分析、竞争格局、用户画像及资源配置。通过制定可执行的全球化推广路径,整合地区法规合规、渠道分发策略与营销活动设计,助力团队快速进入主流商店并确立品牌影响力。同时构建可量化的 KPI 监控体系,指导项目进度追踪与效果复盘,确保产品迭代持续优化,降低运营总成本。

moton2017的博客 155

实现多边形区域侦测功能,判断算法返回矩形区域是否在任意多边形区域内

define POLYGON_REGION_POINT_NUM_MAX (6) /* 最大区域点数。@brief 缩小各边长,取九个点坐标,判断是否包含在多边形内。1.建立polygonregion.c文件,实现功能函数。2.建立polygonregion.h头文件。@param polyNum 多边形点个数。@param inRect 输入矩形位置。@param poly 多边形点坐标。围成区域的所有点坐标 */业务中最多规则数量 */

小小英 1163

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

【转】2019春季阿里笔试算法题——判断一个点是否在多边形内部

题目描述: 自己任意输入几个点构造一个多边形,然后再随机输入一个点,判断该点是否在多变形里面,如果不在,那么该点离多变形的最短距离是多少。 思路一: 下面是几个比较基本的方法: (1)面积法:将这个点与多边形的所有顶点连线,将所形成的所有三角形面和求和,如果和多边形面积相等则点在多边形内部 (2)夹角法:将这个点与多边形的所有顶点连线,如果夹角和为360°则点在多边形内部 (3)射线...

Jinlong_Xu的博客 1041

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【转】【数学】判断一个点是否在一个多边形里面

“判断一个点是否在一个多边形里”,一开始以为是个挺难的问题,但Google了一下之后发现其实蛮简单,所用到的算法叫做“Ray-casting Algorithm”,中文应该叫“光线投射算法”,这是维基百科的描述:[维基百科] 简单地说可以这么判断:从这个点引出一根“射线”,与多边形的任意若干条边相交,累计相交的边的数目,如果是奇数,那么点就在多边形内,否则点就在多边形外。 如图,A点引一条射线...

kakarrot2009的专栏 201

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

android判断点击范围,Android如何判断一个点在不在多边形区域内

有人问我,怎么判断一个点是不是在多边形内,本来想着把这个多边形分成一个又一个三角形,如图,然后判断这个点是不是在某个三角形中,如果在,那就肯定在这个多边形中,那问题接下来就转化成判断这个点是不是在三角形中了,只要这个点D和三角形的三个点A、B、C组合的三角形a、b、c的面积之和等于这个三角形的面积,就说明这个点在三角形中,如图。代码如下:public boolean isInTriangle(Po...

weixin_42404983的博客 448

C++ 点在多边形内算法——判断一个点是否在一个复杂多边形的内部

转自:http://blog.youkuaiyun.com/hjh2005/article/details/9246967 新页面(new page)介绍了将样条曲线添加到此技术的内容。也可以访问多边形内最短路径页(shortest-path-through-polygonpage)! 图 1 图1显示了一个具有14条边的凹多边形。我们要判断红色点是否在多边形内。 解决

Gabriel的专栏 1万+

android判断点在图形内,Android如何判断一个点在不在多边形区域内

有人问我,怎么判断一个点是不是在多边形内,本来想着把这个多边形分成一个又一个三角形,如图,然后判断这个点是不是在某个三角形中,如果在,那就肯定在这个多边形中,那问题接下来就转化成判断这个点是不是在三角形中了,只要这个点D和三角形的三个点A、B、C组合的三角形a、b、c的面积之和等于这个三角形的面积,就说明这个点在三角形中,如图。代码如下:public boolean isInTriangle(Po...

weixin_39569112的博客 286
上一篇: ActiveX开发详解
下一篇: 获取网卡地址
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值