避免碰撞检测的 O(n^2) 复杂度

2023-11-25

我正在开发一个简单的基于图块的 2D 游戏。我有一个关卡,其中填充了可以与图块以及彼此交互的对象。检查与图块地图的碰撞相当容易,并且可以对具有线性复杂度的所有对象完成。但现在我必须检测对象之间的碰撞,现在我必须对照每个其他对象检查每个对象,这会导致平方复杂性。

我想避免平方复杂性。是否有任何众所周知的方法可以减少对象之间的碰撞检测调用。是否有任何易于维护并允许一次拒绝许多冲突的数据结构(可能像 BSP 树)。

例如,关卡中的对象总数约为 500 个,屏幕上一次会看到大约 50 个......

Thanks!


为什么不让图块存储有关哪些对象占用它们的信息。然后,只要将对象移动到新图块,就可以通过查看该图块是否已包含另一个对象来检测碰撞。

这几乎不需要任何成本。

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

避免碰撞检测的 O(n^2) 复杂度 的相关文章

  • 为什么 O(2n^2) 和 O(100 n^2) 的算法复杂度与 O(n^2) 相同?

    我是算法分析领域的新手 我在 Stack Overflow 问题中读到这里 Big O 符号的简单英语解释是什么 https stackoverflow com questions 487258 plain english explanat
  • 如何在 Three.js 中根据对象位置和旋转来正确旋转 raycaster

    我有 8 个从 Object3D 到不同方向的光线投射器用于碰撞检测 我想根据对象旋转来旋转它们指向的方向 我已经遵循了解决方案here https github com mrdoob three js issues 1606 光线投射器开
  • 蚂蚁的战斗策略

    这个问题是指谷歌赞助的人工智能挑战 http aichallenge org 每隔几个月举行一次的竞赛 参赛者需要提交一个能够自主与其他机器人玩家玩游戏的机器人 刚刚结束的比赛名为 蚂蚁 您可以阅读其所有规范here http aichal
  • 错误:获取临时地址 [-fpermissive]

    我已经研究了这个问题几个小时 但毫无结果 基本上我有 struct rectangle int x y w h rectangle player RegionCoordinates Region Coord rectangle temp t
  • 计算三角形内的格点

    我有一个大三角形的点 我们称之为 a b c a x y 等 现在我想统计这个三角形围成的区域内有多少个积分点 所以我首先看一下皮克定理 我考虑的第二种方法是生成一个以三角形的最大值 最小值为界的点列表 然后检查每个点是否位于三角形内部 我
  • 两个复杂度 O((2n + 1)!) 和 O(n!) 相等吗?

    这可能是一个幼稚的问题 但我对 Big O 表示法和复杂性的概念很陌生 无法找到任何答案 我正在处理一个算法 2n 1 次检查条件 我可以说问题的复杂度是 O n 还是复杂度是 O 2n 1 Use 斯特林近似 http en wikipe
  • SIFT 描述符的计算复杂度?

    The SIFT描述符 http www aishack in tutorials sift scale invariant feature transform introduction 是 David Lowe 提出的局部描述符 该描述符
  • 2d 球未正确碰撞

    我只是想编写一个漂亮的物理游戏 球碰撞看起来不错 但如果球碰撞太慢 它们就会 粘 在一起 我不知道他们为什么这样做 这是我的碰撞函数 private void checkForCollision ArrayList
  • 查找数组中是否缺少元素的复杂性

    我正在尝试编写一个函数 用 C 语言 来检查数组是否包含所有元素 0 和 size 1 之间 例如 如果数组的大小为 3 则它应该具有 0 1 2 以任何顺序 问题是 在没有额外数组的情况下执行此操作的最有效的复杂性是多少 我的尝试的复杂性
  • Pygame 根据位置重叠精灵(绘制顺序)

    总的来说 我对 Pygame 和 Python 还比较陌生 所以希望这不是太陌生 I m making a top down RPG and I have two Sprite objects with images that look f
  • 稳定的比较排序,时间复杂度为 O(n * log(n)),空间复杂度为 O(1)

    在经历的同时维基百科的排序算法列表 https secure wikimedia org wikipedia en wiki Sorting algorithm Comparison of algorithms我注意到没有稳定的比较排序 h
  • Java 中 switch 的 McCabe 循环复杂度

    我使用的 switch 语句有 13 个案例 每个案例只有一行返回值 麦凯布将其涂成红色 有没有更简单的方法来编写一个大的 switch 语句 读起来似乎并不复杂 但我不喜欢默认设置变成红色 如果其他人在我的代码上使用相同的工具并看到红色的
  • Dictionary.Keys 返回的 KeyCollection 操作有多快? (。网)

    IDictionary
  • 教科书上的长除法如何是 O(n^2) 算法?

    Premise This 维基百科页面 http en wikipedia org wiki Computational complexity of mathematical operations建议 的计算复杂度 教科书 长除法 http
  • 基于欧几里德距离的 3D 连接点标记

    目前 我正在开发一个项目 该项目尝试通过将连通性指定为最小欧几里德距离来对数据集中的 3d 点进行分组 我现在的算法只是简单的洪水填充的 3D 改编 size t PointSegmenter growRegion size t seed
  • 这段用于确定圆和线段是否相交的代码正确吗?

    显然很难找到一条线是否存在的答案segment和圆相交 例如 如果你用谷歌搜索 你会发现这个问题 https stackoverflow com questions 1073336 circle line segment collision
  • 什么是 AABB - 碰撞检测?

    嗨 我正在制作一个体素游戏Java在研究我需要学习的所有不同东西时 我注意到很多游戏都使用AABB用于碰撞检测 然后我记得看到AABB在 我的世界 中也有 但是当我用谷歌搜索什么时AABB也就是说 它只是提出了其他人的代码 或者历史书上的某
  • 编辑距离(Levenshtein距离)递归自上而下实现的复杂性

    I have been working all day with a problem which I can t seem to get a handle on The task is to show that a recursive im
  • 厚壁二维迷宫中的碰撞检测

    我必须使用 Windows Forms 为学校制作一个游戏 我的游戏包括用户必须穿过迷宫 我试图阻止我的用户使用碰撞检测直接穿过墙壁 但由于用于表示墙壁的矩形形状不同而陷入困境 这是游戏的图像 https i stack imgur com
  • 递归和大O

    我最近正在完成一项涉及递归和大 O 表示法的计算机科学作业 我相信我很好地理解了这一点 虽然当然不是完美的 但是有一个问题给我带来了最多的问题 奇怪的是 一看就知道是作业上最简单的一个 使用大哦符号提供最佳增长率来解决以下递归问题 T 1

随机推荐

  • StructureMap IRegistrationConvention 注册非默认命名约定?

    我目前有一堆像这样的存储库 我的存储库I另一个存储库 它们都继承自 IRepository 如果这有帮助的话 如何获取结构图以使用 IRegistryConvention 扫描仪来注册名为的具体类型 SQLMyRepositorySqlAn
  • 更改 Word 文档中所有链接的来源 - 范围错位

    我研究这段代码是为了更改 Word 模板中所有链接字段 图表 的来源到启动它的工作簿 I had 常用领域 and charts 它们存储在InlineShapes 所以每个模板都有 2 个循环 这些循环有时会卡住For Each 并继续循
  • 好处和。本地托管 jQuery 的陷阱 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我们目前正在从 google CDN 中提取 jQuery 和 jQueryUI 以及 jQueryUI CSS 库 我喜欢这个 因为我可以打电话google load jque
  • 如何创建均值和标准差data.table 中的列

    以下代码 结果让我困惑为什么 data table 对于mean函数而不是sd函数返回NA library data table test lt data frame id c 1 2 3 4 5 A seq 2 9 length 5 B
  • 为什么 std::map 重载运算符 < 不使用 Compare

    From http www cplusplus com reference map map operators 我注意到 请注意 这些操作都没有考虑任一容器的内部比较对象 而是直接比较 value type 类型 元素 这就是说重载运算符
  • navigator.onLine 并不总是有效

    我的 navigator onLine 属性有问题 我正在从 WAMP 上运行的本地信息亭运行一个简单的网站 当我在我的笔记本电脑上测试它时 它可以工作 我关闭 WiFi 然后出现警告框 在运行 WAMP 软件的信息亭上断开互联网连接不会产
  • 无法将 line_profiler 与 Cython 一起使用

    根据以下问题的答案这个问题我试图使用线路分析器具有 cythonized 功能 关于上述问题 已接受的答案为我们提供了如何将其与 jupyter Notebook 一起使用的示例 但是 当我尝试构建pyx使用 disutils 文件它不起作
  • 根据角色隐藏链接

    我是 ASP MVC 新手 我正在尝试开发一个门户来维护员工数据 在我的系统中 只有 经理 有权创建员工 如何在经理登录时启用该链接并在员工登录时禁用该链接 谢谢 My View model IEnumerable
  • 如何检索 WinForms PictureBox 的缩放系数?

    我需要鼠标指针在 PictureBox 上的精确位置 我使用 PictureBox 的 MouseMove 事件 在此 PictureBox 上 我使用 缩放 属性来显示图像 获取鼠标在原始 未缩放 图像上的位置的正确方法是什么 有没有办法
  • 从不同文件夹导入文件

    我有这个文件夹结构 application app folder file py app2 some folder some file py 我如何导入函数file py 从内部some file py 我试过 from applicati
  • 在部分视图中使用部分

    在我的共享布局中 我希望有一个 脚本 部分来填充页面功能所需的所有脚本 布局 cshtml Scripts jquery 2 0 3 js type text javascript gt RenderSection Scripts requ
  • 如何在 Eloquent 中删除多态关系?

    我有一个这样的模型
  • 将 html 表单输入保存到 json 文件

    div class email section class subscribe div class subscribe pitch div section div
  • 供应商标识符和 iOS6

    The identifierForVendor需要 iOS 6 如果我的应用程序当前支持 iOS 4 因此我无法使用它 因为我的更新应该始终满足我的应用程序之前的最低要求 要求 你可以使用这个 NSString udid if SYSTEM
  • Android:无法构建 APK。发现多个文件具有独立于操作系统的路径“META-INF/android.arch.lifecycle_runtime.version”

    突然间 我在构建 APK 时遇到此错误 Error Execution failed for task app transformResourcesWithMergeJavaResForDevDebug gt More than one f
  • std::array 的嵌套聚合初始化[重复]

    这个问题在这里已经有答案了 我想知道 为什么要声明std arr下面的代码会产生错误 而c arr编译良好 struct S int a b S c arr 1 2 3 4 OK std array
  • 在哪里可以设置 crontab 将使用的环境变量?

    我每小时运行一个 crontab 运行它的用户在以下位置具有环境变量 bash profile当用户从终端运行作业时 它会起作用 但是 显然这些在运行时不会被 crontab 获取 我尝试过将它们设置为 profile and bashrc
  • pandas:如何根据所有列的总和选择行?

    如何根据 pandas 中的列总和选择行 假设我想选择列总和大于 0 的所有行 Use sum并设置axis 1 param In 59 df pd DataFrame a randn 10 b randn 10 c randn 10 df
  • FB.XFBML.parse() 对单个元素不执行任何操作

    我有一个大页面 底部有一个 加载更多 按钮 每次点击 加载更多 都会通过 AJAX 加载更多内容 该内容的一部分是类似 Facebook 的按钮 div class fb like div 加载附加内容后 我可以要求 Facebook 重新
  • 避免碰撞检测的 O(n^2) 复杂度

    我正在开发一个简单的基于图块的 2D 游戏 我有一个关卡 其中填充了可以与图块以及彼此交互的对象 检查与图块地图的碰撞相当容易 并且可以对具有线性复杂度的所有对象完成 但现在我必须检测对象之间的碰撞 现在我必须对照每个其他对象检查每个对象