首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速飞行小目标的碰撞检测

快速飞行小目标的碰撞检测
EN

Stack Overflow用户
提问于 2019-01-08 02:14:12
回答 1查看 135关注 0票数 1

我想模拟粒子的快速运动,这些粒子比它们通过的帧间间距小两倍以上。考虑下面的情况,3个相同半径的粒子以相同的速度移动到一个中心的一点。使用如下代码

代码语言:javascript
复制
for(i..) 
  for (j..) 
    check_if_ith_collides_with_jth();`

在最简单的实现中,系统的行为可能如下所示:

但当3个(或更多)粒子同时碰撞时,irl应该发生的是一个特定的反弹情况:

我想要一个任意数量的粒子的解决方案。这通常是如何解决的?我可以用4个粒子展示更复杂的情况:

有可能在一个固定的,更大的框架内覆盖吗?

EN

回答 1

Stack Overflow用户

发布于 2019-01-12 06:00:19

定义“时间”。从您的角度来看,我可能误解了其中的一些内容,并且不确定“帧大小”是否与此有关。我以前实现过基于物理的多粒子碰撞跟踪模拟,并遇到过这种类型的问题。首先,您需要问问自己,获取所有同时发生的冲突是否对此特定应用程序有利。

在我的回答中,我假设这是一种离散时间事件驱动的sim,其中粒子沿着其轨迹前进,并对所有对应用碰撞测试。CPA =最近的接近点。

一种观点可能是,在检测时间上存在一些最小误差条,并且您可能会发现相对于该误差条“同时发生冲突”的大量对。因此,在任何步骤中,当您测试它们时,您可以选择所有CPA距离在阈值内且预计CPA时间在current_time +/- error内的对。这将捕获所有符合您的条件的对。这是可调整的,对于相同的初始条件,不同的CPA时间和距离阈值将产生不同数量的配对。

第二种观点是,由于错误,这一级别的信息对于跟踪这一点是无用的,你可以只取遇到的第一对已经碰撞的拳头对,继续sim并在下一次传递时抓住其他对。如果没有一些检查和平衡,您可能会错过一些会“通过”彼此,但这可以通过调整步长和实现一些逻辑来检查结果来修复。

如果你要通过第二个建议来实现事情,那么建立一个对称的测试用例必然会“失败”,无法重现理论结果,但它也不是一个有意义的测试。

同样类型的推理适用于三个或更多粒子在同一地点同时碰撞。除非您设置了对称测试用例,否则这种情况不太可能发生,并且如果您的模拟应用于实际情况中的某些情况,“噪声”将使您不必关心该级别的精度。实现第一个建议可能会得到您提供的特殊情况,但也可能预测多粒子碰撞,但它并不是真正发生的。

CPA通常应用于具有恒定加速速度的直线运动,但类似的概念也可以应用于更复杂的情况,特别是如果步长较小,您可以假设在时间步长内有一个粗略的CPA,或者只是根据阈值检查两个对之间的距离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54079641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档