检索包含指定点的矩形集

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(使用前将#替换为@)

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

  • 如何确定字符串的最小公约数?

    我在面试时被问到以下问题 并被它难住了 我遇到的部分问题是要下定决心要解决什么问题 起初我并不认为这个问题在内部是一致的 但后来我意识到它要求你解决两个不同的问题 第一个任务是弄清楚一个字符串是否包含另一个字符串的倍数 但第二个任务是在两个
  • Twitter api - 搜索太复杂?

    知道为什么 Twitter 会抛出这个错误吗 GET https search twitter com search json q Middle 20Tennessee 20State 20Blue 20Raiders 20Florida
  • 创建将 n 个用户放入 k 个组的所有可能方法

    给定 n 个用户 u 1 u 2 u n 和 k 个组 g 1 g 2 g k 创建所有组的所有可能组合 基本上 最后每个组合都是一个Map 其中第一个Integer是用户ID 第二个Integer是组ID 例如 u 1 g 1 u 2 g
  • java 谷歌自定义搜索API

    我正在尝试使用Google 自定义搜索 api 的 java 客户端 http javadoc google api java client googlecode com hg apis customsearch index html但在网
  • 带孔的多边形三角剖分

    我正在寻找一种算法或库 更好 将多边形分解为三角形 我将在 Direct3D 应用程序中使用这些三角形 最好的可用选项是什么 这是我到目前为止发现的 本 迪斯科的笔记 http www vterrain org Implementation
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 找到一个恰好出现了 N/2 次的数字

    这是我的面试问题之一 给定一个包含 N 个元素的数组以及元素出现的位置正好 N 2次 其余 N 2 个元素是unique 您如何找到运行时间更好的元素 请记住 元素未排序 您可以假设 N 是偶数 例如 input array 10 2 3
  • 为每个英文单词生成唯一序列号的算法

    对于应用程序 我需要为每个英语单词生成唯一的序列号 最好的方法是什么 一个限制是序列号生成算法应该在普通台式计算机中非常有效 Thanks 你有所有可能的单词的列表吗 如果是 则从第一个字的 0 开始 每个字将序列号加 1 如果不是 那么保
  • 从数字列表中生成所有唯一对,n 选择 2

    我有一个元素列表 假设是整数 我需要进行所有可能的两对比较 我的方法是 O n 2 我想知道是否有更快的方法 这是我在java中的实现 public class Pair public int x y public Pair int x i
  • 将球面坐标转换为笛卡尔坐标然后再转换回笛卡尔坐标并不能给出所需的输出

    我正在尝试编写两个函数来将笛卡尔坐标转换为球面坐标 反之亦然 以下是我用于转换的方程式 也可以在此找到维基百科页面 https en wikipedia org wiki Spherical coordinate system And 这是
  • 线性问题和非线性问题之间的区别?点积和核技巧的本质

    核技巧将非线性问题映射为线性问题 我的问题是 1 线性问题和非线性问题的主要区别是什么 这两类问题的差异背后的直觉是什么 核技巧如何帮助在非线性问题上使用线性分类器 2 为什么点积在这两种情况下如此重要 Thanks 当人们说到分类问题的线
  • 如何发现“贪婪”算法?

    我正在读一本关于 贪婪 算法 但我很难发现它们解决真正的 顶级程序员 问题 If I know给定的问题可以用 贪婪 算法来解决 因此编写解决方案非常容易 然而 如果我没有被告知这个问题是 贪婪的 我就无法发现它 用 贪婪 算法解决的问题有
  • 期望最大化算法的数值示例[重复]

    这个问题在这里已经有答案了 由于我不确定给出的公式 有人可以提供 EM 算法的简单数字示例吗 一个非常简单的具有 4 或 5 个笛卡尔坐标的坐标就可以了 那这个呢 http en wikibooks org wiki Data Mining
  • 如何改进 PHP 分页算法?

    我正在研究 PHP 中的分页算法 我可以猜测它需要改进的空间 所以我想对如何改进它有一些想法 无论是从 UI UX 的角度清理代码本身 还是你能想到的任何其他东西 该算法应输出如下所示的分页 1 2 3 6 7 8 97 98 99 or
  • 以编程方式分解大量数字

    好吧 所以我有一个巨大的数字f 实际上 这个数字只有 100 多位数字长 我知道这些因子的大小大致相同 如果我的资源和时间有限 我应该使用什么语言和算法 我包括在限制时间内编写算法的时间长度 想法 编辑 我所说的有限是指在尽可能短的时间内
  • 将两个大数作为字符串相除,而不使用java中的Bignumbers

    我需要在不使用 Biginteger 的情况下划分两个大整数 因为数字不能存储在原始类型中 因为我需要从给定的字符串中逐个字符地执行此操作 我已经创建了一个名为 BigNumber 的类 用这个类我可以 Add multiply 比较两个内
  • 动态规划的复杂组合条件

    我正在探索动态规划设计方法如何与问题的底层组合属性相关 为此 我正在查看的规范实例硬币找零问题 Let S d 1 d 2 d m and n gt 0是请求的金额 我们可以用多少种方式相加n仅使用中的元素S 如果我们遵循一个动态规划如果要
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 颜色渐变算法

    给定两种 RGB 颜色和一个矩形 我可以创建一个基本的线性渐变 这博客文章 https bsou io posts color gradients with python关于如何创建它给出了很好的解释 但我想在这个算法中添加一个变量 角度
  • 缓存感知树的实现

    I have a tree where every node may have 0 to N children 用例是以下查询 给定指向两个节点的指针 这些节点是否位于树的同一分支内 Examples q 2 7 gt true q 5 4

随机推荐