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

2023-11-25

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

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

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

Thanks!


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

这几乎不需要任何成本。

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

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

  • 继承SFML中的Transformable和Drawable

    我试图继承 SFML 中的 Transformable 和 Drawable 以使我的对象 嗯 可变形和可绘制 我正在制作一个简单的突破游戏 但也许我的做法是错误的 这是我的代码 include
  • 2d 球未正确碰撞

    我只是想编写一个漂亮的物理游戏 球碰撞看起来不错 但如果球碰撞太慢 它们就会 粘 在一起 我不知道他们为什么这样做 这是我的碰撞函数 private void checkForCollision ArrayList
  • Java 内置函数 Collections.Frequency(list, element) 的复杂度是多少?

    下面的代码是针对 String 的 ArrayList 的 我想知道这个问题的复杂度是多少Collections frequency 功能 List
  • 需要帮助以更有效的方式设计搜索算法

    我有一个涉及生物领域的问题 现在我有4个非常大的文件 每个有1亿行 但结构相当简单 这些文件的每一行只有2个字段 都代表一种基因 我的目标是 设计一种有效的算法 可以实现以下目标 在这 4 个文件的内容中找到一个圆圈 圆定义为 field
  • 使用 Pygame 检测碰撞点

    我正在用 Pygame 制作游戏 对于这个游戏 我不仅需要能够检测到两个矩形发生碰撞 还需要能够检测到它们之间的碰撞点 我查看了文档 但似乎找不到任何答案 这样的事情可能吗 您可以使用Rect clip https www pygame o
  • 与有向边的最大加权二分匹配

    我知道计算最大加权匹配的各种算法加权 无向二分图 即分配问题 例如 匈牙利算法 贝尔曼 福特算法甚至 Blossom 算法 适用于一般图 即非二分图 但是 如果二分图的边是 如何计算最大加权匹配加权和定向 我希望能够提供具有多项式复杂度的算
  • 这个函数是 O(N+M) 还是 O(N*M)?

    def solution M A result 0 M maxCount 0 setAll 0 for i in range 0 len A if A i M 1 setAll maxCount maxCount 0 result 0 M
  • 确定递归函数的复杂性(大 O 表示法)

    我明天有计算机科学期中考试 我需要帮助确定这些递归函数的复杂性 我知道如何解决简单的情况 但我仍在努力学习如何解决这些更困难的情况 这些只是我无法解决的一些示例问题 任何帮助将不胜感激 并对我的学习有很大帮助 谢谢 int recursiv
  • 为什么 pygame 上两个移动物体之间的碰撞不起作用?

    我正在用 pygame 做一个蛇游戏 游戏中有两条蛇 我想检测蛇头何时与另一条蛇身体碰撞 对两者都执行此操作 以及当两个头碰撞时的特殊情况 我目前正在做蛇头和另一条蛇身体之间的碰撞 如果其中一条蛇被冻结而另一条蛇在移动 则碰撞效果很好 但如
  • 3d 表面的凸包算法 z = f(x, y)

    我有一个以一组三元组 x i y i z i 形式给出的 3D 表面 其中 x i 和 y i 大致位于网格上 并且每个 x i y i 都有一个关联的 z i 值 典型的网格是20x20 我需要在给定的公差范围内找到哪些点属于曲面的凸包
  • 我可以检查子序列是否比 O(n*n) 更快

    所以我的问题是主题的名称 是否存在一种算法可以比 O N 2 更快地检查 B 是否是 A 的子序列 例如 O NlogN 或简单的 O N 找到的唯一方法是简单的暴力 for int i 0 i lt a Length b Length i
  • 快速移动的球与鼠标控制的球拍的碰撞检测问题

    在统一中 我有一个应该击球的球拍 并且球拍直接由鼠标控制 即鼠标使用鼠标轴移动球棒并使用 translate 函数移动球拍 我预计 Unity3d 的物理特性不会直接通过鼠标正确地转换球拍的运动并相应地影响球 我必须编写一些自定义的内容 结
  • Unity3D 播放器在石头上行走

    大家好 我的玩家正在石头上行走并穿过石头 名为 Champ 的玩家有一个 Box Collider 而 Stone 有一个 Mesh Collider 玩家也有刚体 我尝试了我发现的一切 但没有任何帮助我解决我的问题 MovePlayer
  • 旅行商问题中 NP 难问题和 NP 完全问题的混淆

    旅行商优化 TSP OPT 是一个NP难题 旅行商搜索 TSP 是NP完全问题 然而 TSP OPT 可以简化为 TSP 因为如果 TSP 可以在多项式时间内求解 那么 TSP OPT 1 也可以 我认为要将 A 简化为 B B 必须与 A
  • LibGDX - 正确使用 Polygon 类

    我创造了Polygon包裹我的飞机的物体 飞机的大小TextureRegion是 256x74 但在游戏中这个尺寸是 70x20 所以 TextureRegion texRegsAirplane TextureRegion split te
  • 递归和大O

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

    我有这个验证密码的方法 Checks if the given password is valid param password The password to validate return code true if the passwo
  • 在 Javascript 中检测 Flash 文件何时完成播放

    我正在使用 Javascript 将 Flash 文件嵌入到网站中 然后需要在播放完成后将其删除 有没有办法用普通的 Javascript 来做到这一点 或者是否需要将回调类型的函数添加到 Flash 文件本身 我该如何编码 JavaScr
  • 在哪里可以找到Python内置序列类型的时间和空间复杂度

    我一直无法找到此信息的来源 无法亲自查看 Python 源代码来确定这些对象是如何工作的 有谁知道我可以在网上找到这个吗 结帐时间复杂度 http wiki python org moin TimeComplexitypy dot org
  • jQuery 生成 div 和碰撞检测

    所以我的学校作业项目快要结束了 我只是错过了两件我似乎无法弄清楚的主要事情 1 如何生成具有随机位置的间隙的管道障碍物 以便鸟可以飞过 尝试使用一个函数来更改间隙位置的管道 div 的 css right attr 并在以下情况下移除管道它

随机推荐

  • 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 游戏 我有一个关卡 其中填充了可以与图块以及彼此交互的对象 检查与图块地图的碰撞相当容易 并且可以对具有线性复杂度的所有对象完成 但现在我必须检测对象之间的碰撞 现在我必须对照每个其他对象检查每个对象