【发布时间】:2017-06-21 23:33:27
【问题描述】:
所以我有一个有界平面(X 轴范围 0-1000,Y 轴范围 0-2000)。
其中有多个点(x,y)和一个矩形(构成矩形的4个点)。有些点在矩形中,有些不在。像这样:
矩形能够随时间移动并改变其大小。而这些点是静态的,不会改变。更改后,我需要检查矩形内的哪些点。
问题:
给一个矩形,里面有什么点?
Set<Point> getPointsInsideRectangle(Rectangle rec);
我的幼稚解决方案:
每个点
- 检查它是否在矩形内,如果是,将点添加到点集
返回点集
我的想法:
似乎每次矩形更改时迭代所有点似乎在 CPU 使用量大的情况下效率极低(有很多点)。有些东西告诉我要使用 HashMap 但由于矩形是 X 范围和 Y 范围(而不仅仅是 1 个值),我似乎无法使用它。
我的问题:
1.有没有java数据结构可以处理这种情况?
2. 如果没有,有什么想法如何实现一个包含所有点的数据结构,并给出一个矩形,返回其中的点?
【问题讨论】:
-
嗯,你有多少积分?您确定遍历所有点实际上会很慢吗?
-
将您的域划分为多个单元格,大小可能约为 25x25。每个单元格都可以有自己的一组点。然后,要找到矩形中的点,确定哪些单元格(i)完全在矩形内,(ii)部分在矩形内,(iii)在矩形外。那么您只需要检查类别(ii)中的单元格中的各个点。
标签: java data-structures