检索包含指定点的矩形集

2023-12-06

我不知道如何以表演的方式实现这一点,所以我决定问你们。

我有一个矩形列表 - 实际上只是 atm 正方形,但稍后我可能必须迁移到矩形,所以让我们坚持使用它们并使其更通用 - 在二维空间中。每个矩形由两个点指定,矩形可以重叠,我不太关心设置时间,因为矩形基本上是静态的,并且有一些空间可以预先计算任何设置内容(例如构建树,排序,预先计算附加向量,无论如何等等)。哦,如果有任何问题的话,我正在使用 JavaScript 进行开发。

对于我的实际问题:给定一个点,如何获得包含该点的所有矩形的集合?

线性方法的性能不够好。所以我寻找比 O(n) 性能更好的东西。我读了一些东西,比如边界体积层次结构和类似的东西,但无论我尝试什么,矩形可以重叠(而且我实际上想要得到所有它们,如果点位于多个矩形内)似乎总是妨碍我。

有什么建议吗?我错过了一些明显的事情吗? BVH 是否适用于可能重叠的边界?如果是这样,我如何构建这样一个可能重叠的树?如果没有,我还能用什么?边界是内部的、外部的还是不确定的,我并不关心。

如果有人能提出任何有用的东西,比如链接或咆哮我使用 BVH 而不是 Some_Super_Cool_Structure_Perfectly_Suited_For_My_Problem 是多么愚蠢,我真的很感激!

Edit:好吧,我玩了一下 R-Trees,这正是我想要的。事实上我目前正在使用 RTree 实现http://stackulator.com/rtree/正如 endy_c 所建议的。它的性能非常好,完全满足您的要求。非常感谢各位的支持!


你可以看看 R-Trees

Java代码

还有一个 wiki,但只能发布一个链接;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检索包含指定点的矩形集 的相关文章

  • 将整数列表划分为总和相等的 K 个子列表

    类似的问题还有1 https stackoverflow com questions 27322804 partition of a set into k disjoint subsets with equal sum and 2 http
  • 给定一个点向量(可能无序),找到多边形(不是凸包)

    我目前有一个点向量 vector
  • 图像算法上的物体计数

    我又接到学校任务了 这次 我的老师给我的任务是创建算法来计算图片上有多少只鸭子 该图与此类似 我想我应该使用模式识别来搜索上面有多少只鸭子 但我不知道每只鸭子适合哪种图案 我认为你可以通过分割鸭嘴并计算鸭嘴的数量来解决这个问题连接的组件 h
  • 计算具有 3 个循环的算法的复杂度

    我尝试解决以下练习 以下代码片段最坏情况运行时间的增长顺序是什么 作为 N 的函数 int sum 0 for int i 1 i lt N i for int j 1 j lt i i j for int k 1 k lt j j k s
  • 运行时间为 O(n) 且就地排序的排序算法

    有没有运行时间为O n 并且还分类到位 在某些情况下 最好的情况是 O n 但这可能是因为项目集合已经排序 你正在看 O nlogn 一些较好的平均值 话虽如此 排序算法的 Wiki 还是相当不错的 有一个表格比较了流行的算法 说明了它们的
  • 如何检查无向图是否有奇数环

    我试图找到一个 O V E 时间算法来检查是否已连接 无向图有或没有奇数环 我正在考虑对图进行广度优先搜索 并尝试将顶点标记为黑色和白色 以便没有两个标记为相同颜色的顶点相邻 是否有任何已知的更简洁的算法可以在线性时间内解决这个问题 你的方
  • Bing 搜索 API 和 Azure

    我正在尝试以编程方式在 Microsoft Bing 搜索引擎上执行搜索 这是我的理解 有一个 Bing Search API 2 0 很快就会被替换 2012 年 8 月 1 日 新的 API 称为 Windows Azure Marke
  • 在 3d 网格中转发(绘制)线

    我需要类似 Bresenham 算法的东西 但是 对于 3d 网格空间来说不完全是这样 我需要 3d 单元网格 边缘尺寸 1 0 从 S 点开始 前进到 K 点 接触 该线接触的所有单元格 即使只有边缘 点被触摸我需要触摸所有 8 个单元
  • 关于Marching Cubes算法的澄清

    关于Marching Cubes 我对其算法和实现有一些疑问 我已经阅读了 Marching Cubes 的 Paul Bourke 优秀文章以及网站上可用的源代码 但是 我在理解以及如何以自己的方式实现算法方面仍然遇到了一些问题 问题如下
  • 检查有效的 IMEI

    有人知道如何检查有效的 IMEI 吗 我找到了一个可以检查此页面的功能 http www dotnetfunda com articles article597 imeivalidator in vbnet aspx http www do
  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • 在任意时间范围内找到最佳日/月/年间隔的算法?

    如果您有时间表 请说 March 19 2009 July 15 2011 是否有一种算法可以将该时间范围分解为 March 19 2009 March 31 2009 complete days April 1 2009 December
  • 是否有一种算法可以在线性时间内计算数组反转?

    我知道有多少倒转 en wikipedia org wiki Inversion 28discrete mathematics 29 in an n 元素数组可以在 O n log n 操作使用增强型归并排序 http www geeksf
  • 球体表面上(经度、纬度)点的凸包

    标准凸包算法不适用于 经度 纬度 点 因为标准算法假设您需要一组笛卡尔点的包 纬度 经度点是not笛卡尔坐标系 因为经度在反子午线处 环绕 180 度 即 东经 179 度以东 2 度为 179 因此 如果您的点集恰好横跨反子午线 您将错误
  • Python 旅行商贪婪算法 [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 因此 我为旅行推销员问题创建了一种排序 并按 x 坐标和 y 坐标进行排序 我正在尝试实施贪婪搜索 但无法做到 此外 每
  • 坐标算法 - 绕中心旋转

    通过查看这张图片 我想您会很好地理解我的问题 图片已删除 网址不再有效 现在返回广告 所以基本上我想要一个函数 它接受一个对象作为参数 并根据我之前添加的对象数量为该对象提供正确的坐标 假设我将所有这些对象添加到一个数组中 objectAr
  • 总和不小于 key 的数组的最小子集

    给定一个数组 假设为非负整数 我们需要找到最小长度子集 使得元素之和不小于 K K 是作为输入提供的另一个整数 是否有可能找到时间复杂度为 O n n 的大 oh 的解决方案 我目前的想法是这样的 我们可以在 O n log n 中对数组进
  • 在树结构的 Big-O 表示法中:为什么有些来源引用 O(logN),有些来源引用 O(h)?

    在研究遍历二叉搜索树的任何算法的复杂性时 我看到两种不同的方式来表达同一件事 版本 1 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O h 版本 2 最坏情况下的遍历算法对树的每个高度进行一次比较 因此复杂度是O logN
  • 无法理解Peterson算法的正确性

    我在这里讨论彼得森算法的一个场景 flag 0 0 flag 1 0 turn P0 flag 0 1 turn 1 while flag 1 1 turn 1 busy wait
  • 在一个区域中拟合二维多边形的算法?

    这有标准吗 算法名称 说 我有 10 个不同大小的多边形 我有一个特定大小的区域 我想知道如何填充该区域中的最多多边形 以及它们是如何拟合的 笔记 多边形可以根据限制集进行旋转 一个可能的名称是包装问题 http en wikipedia

随机推荐