问题标签 [collision-detection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
8518 浏览

algorithm - 用于二维碰撞检测的技术资源?

您认为描述用于在 2D 环境中进行碰撞检测的算法或技术的最佳资源(书籍或网页)是什么?

我只是渴望学习不同的技术来制作更复杂、更高效的游戏。

0 投票
7 回答
19951 浏览

2d - 检测精灵之间碰撞的最佳方法?

在 2d 游戏精灵中检测碰撞的最佳方法是什么?我目前在 allegro 和 G++ 工作

0 投票
5 回答
6751 浏览

math - 3D 中的点三角形碰撞检测

如何在以下物理模拟中纠正浮点错误:

  • 原点(x,y,z),
  • 施加力后所需的点 (x', y', z')。
  • 共享边 BC 的两个三角形 (A, B, C) 和 (B, C, D)

我正在使用这种方法进行碰撞检测:

我遇到的问题是,有时该点会落入浮点数学的灰色区域,因为它非常靠近 BC 线,以至于它无法与任何一个三角形发生碰撞,即使从技术上讲它应该总是与一个或另一个发生碰撞,因为他们有共同的优势。当这种情况发生时,该点正好穿过两个共享边三角形之间。我已经用(!)标记了代码的一行,因为我相信那是我应该做出改变的地方。

在非常有限的情况下有效的一种想法是跳过边缘测试。有效地将三角形变成平面。这仅在我的网格是凸包时有效,但我计划创建凸形。

我专门使用点积和三角形法线进行所有前后测试。

0 投票
7 回答
19475 浏览

collision-detection - 有人可以解释每像素碰撞检测吗?

有人可以解释它的优缺点以及与之相关的任何数学吗?

0 投票
38 回答
356098 浏览

performance - 如何确定二维点是否在多边形内?

我正在尝试在多边形算法中创建一个快速的2D 点,用于命中测试(例如Polygon.contains(p:Point))。对有效技术的建议将不胜感激。

0 投票
5 回答
5173 浏览

data-structures - 移动物体的空间数据结构?

我想知道处理大量移动对象(球体、三角形、框、点等)的最佳数据结构是什么?我试图回答两个问题,最近邻和碰撞检测。

我确实意识到,传统上,像 R 树这样的数据结构用于最近邻查询,而 Oct/Kd/BSP 用于处理静态对象或很少移动对象的碰撞检测问题。

我只是希望那里有其他更好的东西。

我感谢所有的帮助。

0 投票
9 回答
115887 浏览

java - Java中两个图像之间的碰撞检测

我正在编写的游戏中显示了两个角色,玩家和敌人。定义为:

然后调用:

我可以用键盘移动 player(),但是在尝试检测两者之间的碰撞时我不知所措。很多人都说要使用矩形,但作为一个初学者,我看不出如何将它链接到我现有的代码中。谁能给我一些建议?

0 投票
15 回答
196559 浏览

graphics - 球对球碰撞 - 检测和处理

在 Stack Overflow 社区的帮助下,我编写了一个非常基本但有趣的物理模拟器。

替代文字

您单击并拖动鼠标来发射一个球。它会反弹并最终停在“地板”上。

我要添加的下一个重要功能是球对球碰撞。球的运动被分解为 ax 和 y 速度矢量。我有重力(每一步 y 向量的小减少),我有摩擦(每次与墙壁碰撞时两个向量的小减少)。球以令人惊讶的逼真方式诚实地移动。

我想我的问题有两个部分:

  1. 检测球对球碰撞的最佳方法是什么?
    我是否只有一个 O(n^2) 循环遍历每个球并检查每个其他球以查看其半径是否重叠?
  2. 我用什么方程来处理球对球的碰撞?物理 101
    它如何影响两个球的速度 x/y 向量?两个球朝哪个方向飞去?我如何将其应用于每个球?

替代文字

处理“墙壁”的碰撞检测和由此产生的矢量变化很容易,但我看到球碰撞更复杂。对于墙壁,我只需要取适当的 x 或 y 向量的负值,然后它就会朝着正确的方向前进。对于球,我不认为是那样的。

一些快速澄清:为简单起见,我现在可以完全弹性碰撞,而且我所有的球现在都具有相同的质量,但我将来可能会改变它。


编辑:我发现有用的资源

带有向量的 2d Ball 物理:2-Dimensional Collisions without Trigonometry.pdf
2d Ball 碰撞检测示例:添加碰撞检测


成功!

我的球碰撞检测和响应工作得很好!

相关代码:

碰撞检测:

这将检查每个球之间的碰撞但跳过冗余检查(如果您必须检查球 1 是否与球 2 碰撞,那么您不需要检查球 2 是否与球 1 碰撞。此外,它会跳过检查与自身的碰撞)。

然后,在我的球类中,我有我的 colliding() 和 resolveCollision() 方法:

源代码:球对球对撞机的完整源代码。

如果有人对如何改进这个基本的物理模拟器有一些建议,请告诉我!我还没有补充的一件事是角动量,所以球会更真实地滚动。还有其他建议吗?发表评论!

0 投票
5 回答
2628 浏览

actionscript-3 - 斜壁与球的弹性碰撞

我无法计算球撞击斜墙的反射角。我正在使用从本教程中提取的算法。它看起来像这样(在 Actionscript 3 中),p1 是当前速度向量,p2 是墙的法线:

该函数返回新的速度矢量,并且对于与垂直壁的碰撞正确,但对于倾斜的壁则不正确。球可能会从“两侧”击中墙壁(即法线可能会朝另一个方向突出)。

谁能发现我的错误?或者建议更好的算法?

0 投票
26 回答
235583 浏览

geometry - 圆-矩形碰撞检测(相交)

如何判断圆形和矩形在二维欧几里得空间中是否相交?(即经典的二维几何)