博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
计算点在哪些四边形内
阅读量:6636 次
发布时间:2019-06-25

本文共 553 字,大约阅读时间需要 1 分钟。

题目:

一个平面中,有很多正四边形,大小不一,任意四边形之间可以有重叠部分,如下图所示

现在有2000个点,如何快速定位这些点分别属于哪些四边形区域?

 

解决方案:

采用区域分割+hash查找的方法。

1. 预处理阶段:

X将四边形按照左边进行排序,然后逐一按照X轴划分区域,如图:

然后,将每一个区域的左边界和右边界作为key,所包含的四边形作为value,存入哈希表中。

 

同理,Y轴也按照这个方式存储成另外一个哈希表。

 

2. 计算点所在区域:

来一个点之后,先按照X轴找到所在区域,然后按照哈希表找到可能在的四边形,例如:找到 1,3,5

再按照Y轴找到所在区域,然后按照哈希表找到可能在的四边形,例如:找到3,4

最后将二者求一个交集,就得到了所在四边形,例如:3

 

延伸:

上述分析中,存成了两个维度的哈希表。更进一步的,其实可以将两个维度合并,同时按照X,Y轴进行切分,形成一个个小四边形区域,再将这些区域所包含四边形作为value,存入哈希表即可。

 

以上是初步思考的结果,如果有更好的方法,欢迎不吝赐教。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/wangicter/archive/2012/08/24/4767324.html

你可能感兴趣的文章
送给前线码农的话 - 大牛们的经典语录
查看>>
JavaScript模式 读书笔记二
查看>>
解决solr死锁问题
查看>>
Java语法错误之-执行不到的代码(Unreachable code)
查看>>
Javascript学习笔记-01
查看>>
recent
查看>>
支付宝面试题(顶级互联网公司面试题系列)
查看>>
浅谈CSRF攻击方式
查看>>
url的编解码
查看>>
Android多渠道打包
查看>>
斯坦福NLP笔记48 —— Using Patterns to Extract Relations
查看>>
012,spring boot事务概念讲解
查看>>
javascript获取随机颜色的各种方法
查看>>
Python爬虫:认识urllib/urllib2以及requests
查看>>
结合SSH2+Maven+EasyUI+MySQL技术实战开发易买网电子商务交易平台教程
查看>>
SVN学习总结(2)——SVN冲突解决
查看>>
SDN in Action: OpenDaylight MD-SAL Programming
查看>>
ios8以上远程推送 demo
查看>>
Java8 十大新特性详解
查看>>
大型网站技术架构(六)网站的伸缩性架构
查看>>