当前位置: 首页 > 知识库问答 >
问题:

给定几个点和几个圈,我如何分辨哪个点在哪个圈里?

魏鸿
2023-03-14

给定少量的点和圆(比方说在100以下),我如何分辨哪个点在哪个圆里?圆圈可以相交,所以一个点可以位于多个圆圈中。

共有1个答案

华福
2023-03-14

如果点和圆的数目是那么少,你可能会逃脱暴力强迫它。圆点交叉点相当便宜,并且100*100检查一帧应该不会损害性能。

如果您完全确定此例程是瓶颈,需要优化,请继续阅读。

您可以尝试使用限制卷层次结构的变体。

边界卷层次结构是一个树,其中每个节点覆盖两个子卷的整个卷(如果您决定使用更高程度的树,则覆盖更多个子卷)。必须进行交叉测试的卷/对象总是树的叶节点。

插入、删除和交集查询的平均运行时间为O(log n)。但是,您必须更新树,因为您的对象是动态的,这是通过删除和重新插入无效节点(不再完全包含叶子节点的节点)来完成的。更新完整树需要O(n logn)的最坏情况时间。

应当注意,在插入时,应当将节点插入到子树中,从而使子树体积增加最少。

这里是Randy Gaul的一篇很好的博客文章,它很好地解释了动态边界层次结构。

您将不得不使用圆作为包围体,除非您能找到一种方法在除叶节点之外的所有节点中使用AABB,并且圆作为叶节点。AABB更加精确,并且应该给出一个构造得更好的树。

 类似资料:
  • 本文向大家介绍Kafka中有哪几个组件?相关面试题,主要包含被问及Kafka中有哪几个组件?时的应答技巧和注意事项,需要的朋友参考一下 答:Kafka最重要的元素是: 主题:Kafka主题是一堆或一组消息。 生产者:在Kafka,生产者发布通信以及向Kafka主题发布消息。 消费者:Kafka消费者订阅了一个主题,并且还从主题中读取和处理消息。 经纪人:在管理主题中的消息存储时,我们使用Kafka

  • 给出一个2d点的列表和一个最大距离d,比O(n^2更好的方法是什么)找出哪些点位于每个点的d以内。我不需要解决方案,只需要一些开始的想法。

  • 给定一个加权无向图和一组节点。 给定两个节点和。 我想找到从到的两条单独的(不重叠的)路径,使两条路径的权重之和最小。我将这个问题解释为标题所描述的,即包含和的最小加权循环。 显然,从到找到第一条最小加权路径然后从图中去掉p1中的边,然后找到第二条最小加权路径是不正确的。 我怎么才能找到这样的循环呢?

  • 本文向大家介绍请谈谈你最关注互联网哪个或者哪几个细分领域?相关面试题,主要包含被问及请谈谈你最关注互联网哪个或者哪几个细分领域?时的应答技巧和注意事项,需要的朋友参考一下 AI O2O 关注AI是因为这几年很热,想去了解一下很多风口上的东西,以及确实是很容易改变世界的 关注O2O是因为和自己可能息息相关,加上喜欢研究这类的产品,也给过好多app官方反馈过一些意见,其中还有被采纳的。

  • 问题内容: 如何在几天,几小时,几周或几个月后迭代一个时间跨度? 就像是: 其中foo是一个函数,返回一个迭代器。我一直在研究日历模块,但是它仅适用于特定的一年或一个月,不适用于日期之间。 问题答案: 使用dateutil及其rrule实现,如下所示: 输出为 将“每月”替换为“每年”,“每月”,“每周”,“每天”,“每小时”,“半年”或“第二”。替换dtstart,直到您想要的任何datetim

  • 我想从 Enarticulate 文档中排除类中的几个 API 方法。 有没有办法用发音来实现它? 提前致谢