判断一个坐标点是否在 任意给定边界顶点集的不规则多边形 内部

本文介绍了判断一个坐标点是否位于由边界顶点集定义的不规则多边形内的算法。首先确定包含多边形的最小矩形,然后通过检查点在矩形内的位置及水平射线与边界的交点数(奇数表示点在内,偶数表示点在外)来确定点的位置。核心思想是利用线段与水平射线的交点计数法。
摘要由CSDN通过智能技术生成

基本流程和思想

  1. 首先根据已知给定多边形边界顶点集求得其最小x值Xmin、最小y值Ymin、最大x值Xmax和最大y值Ymax,根据这4个值可以确定包含该不规则多边形的水平放置的最小矩形,在此前提下,输入一个任意位置的测试点(x_test,y_test),判断该点是否在矩形中,如果不在这个矩形中,那一定不被包含在多边形里,如果在矩形里,执行下一步操作进行进一步的判断。判断的逻辑也很简单:如果Xmin<x_test<Xmax && Ymin<y_test<Ymax,则点(x_test,y_test)在矩形内,反之则不在。
    根据边界顶点的坐标值确定包含该多边形的最小水平放置的矩形区域
  2. 进一步的判断方法
    代码部分转自reference: 核心部分的代码来源
    核心部分的实现

我的理解

可以看到,这段代码基于一个主要的思想:以测试点(test_x,test_y)为起始点做水平射线,,看与边界有多少个交点,如果交点的个数为奇数,则该点在多边形内,如果为偶数,则在多边形外。(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值