碰巧自己前段时间处理过类似的数据,讲一下自己的解决思路。
题主问题:
解答:
根据题主的描述,GPS坐标映射到网格上,或者说想要知道网格的ID以及网格内的每个GPS坐标点,都可以抽象成一个问题,如何判断点是否正六边形的蜂窝网格内。
自己当时找到的解决思路如下:
下图以2个顶点在Y轴为例:
要判断点P是否在该正六边形(边长a)内,由于只需判断是否在内,与象限无关,所以先将点P坐标取绝对值x,y
1.首先判断P是否在正六边形的外包矩形内,若 y>=a || x>=(√3)a/2 则不在内部,否则继续下一步判断
2.若MP>MN则P在内部,否则不在内部,等于则在边线上。即判断 a-y>x/(√3)是否成立。
根据以上抽象问题的解决办法,可以进行进一步定制化处理,达到题主所说的系统。
高效判断点是否在正六边形蜂窝内的方法
我们要判断一个点 ( P ) 是否在边长为 ( a ) 的正六边形内。这个问题可以分为两个步骤来解决:
通过这两个步骤,我们就可以高效地判断点是否在正六边形内部。首先检查外包矩形,然后使用基于正六边形几何的简单不等式。这个方法既简单又有效,避免了复杂的几何计算。