设计中,用到需要判断点是否在正六边形内,先是在网上搜了好几篇文章,发现都搞的挺复杂的,往往要使用向量运算计算面积夹角距离方向等,或者是射线法算交点,或者是切分三角形,这种思路通用于任意多边形。我考虑到正六边形的特殊性,发现这个问题其实可以很讨巧的超简单解决,而且算法简单到连小学生都能理解,核心只要比较两个线段的长度。
Bing搜了一下“判断点是否在正六边形内”,头两条都是关于此问题的,搜到的豆瓣和魅族论坛里的帖子,里面讨论到的方法都不够简洁。
常用蜂窝网格单元的排列方式有2种,一种是相对2个顶点在Y轴,另一种是相对2个顶点在X轴,判断方式是一样的。
下图以2个顶点在Y轴为例。
要判断点P是否在该正六边形(边长a)内,由于只需判断是否在内,与象限无关,所以先将点P坐标取绝对值x,y
1.首先判断P是否在正六边形的外包矩形内,若y>=a || x>=(√3)a/2 则不在内部,否则继续下一步判断
2.若MP>MN则P在内部,否则不在内部,等于则在边线上。即判断 a-y>x/(√3)是否成立。
上述是判断指定点是否在指定正六边形内,实际开发者更常见的另一种是判断指定点在一组正六边形蜂窝结构的哪一个单元格中,也可以借鉴这个来判定。
分享到:
相关推荐
使用matlab仿真正六边形蜂窝网络模型图
六边形蜂窝自动建模插件,能在abaqus中自动建立蜂窝模型(Hexagonal honeycomb automatic modeling plug-in)
MATLAB学习人群
生成19个六边形分布的网格模型,每个六边形的中心点即为BS的位置,默认1号为原点。在一号BS范围内,生成随机的UE,通过筛选,让所有生成的点落在1号的六边形区域内。
可配置大小,间距。 放入vue项目可直接运行
无线传感器网络中,蜂窝正六边形分簇方法,增强相邻网格通信能力希望大家踊跃下载
Android好看的蜂窝布局 自定义的六边形图形加重写viewgroup亲情打造
为解决六边形孔蜂窝梁畸变相关屈曲的问题,采用参数研究的方法,提出了一个有效的非线性有限元模型,在有限元模型中充分考虑了几何非线性和材料非线性,并且该有限元和已有的试验资料进行了对比分析,结果表明,该有限元...
电子政务-弧角正六边形蜂窝状玻璃钢电缆保护管.zip
用Matlab画任意中心任意边长的正六边形,在这个六边形内随机撒点
ArcGIS生成蜂窝六边形网格的工具,其实GIS也有工具可以实现,只不过需要根据面积去推算边长,而这个工具可以直接根据边长生成六边形网格
正六边形demo 超简单正六边形demo 超简单正六边形demo 超简单正六边形demo 超简单正六边形demo 超简单
arcgis 制作蜂窝六边形图层工具箱
在仿真 蜂窝网小区物理位置配置时用到的,传上来分享一下。
用不同方法绘制六边形,组成蜂窝图,程序通过MATLAB7.1测试过
CSS3六边形自适应网格布局
HTML5 CSS3图片修饰特效源码,将图片修饰成蜂窝状的六边形来显示,图片不做任何改动,只要在演示页面中调用后,CSS3 就会自动为图片加上蜂窝状的修饰,而且紧密的排列在一起,本效果中还加入了响应式的鼠标悬停提示...
纯css3画正六边形
该资源包的执行效果查看地址:https://blog.csdn.net/m0_60387551/article/details/123184049 “地图之家”专栏中的“97.(cesium篇)cesium蜂巢图(六边形)”。如下载有问题,可联系博主。 解压密码:cesium
六边形蜂窝自动建模插件,能在abaqus中自动建立蜂窝模型