首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >物理引擎Spring Bug

物理引擎Spring Bug
EN

Stack Overflow用户
提问于 2012-03-24 14:29:59
回答 1查看 241关注 0票数 0

因此,我一直在开发一个支持多边形和圆的2d物理引擎。我已经将分离轴定理用于除圆-圆之外的所有碰撞组合。以下是该引擎的基本格式:

*注意:不是实际代码

让所有身体前进。

代码语言:javascript
复制
for every body a
{
   Vector2 sum = Vector2.Zero;
   for every body b where b != a
   {
     sum += a.collides(b).MinimumTranslationVector;
   }
   a.Position += sum;
   a.velocity += sum;
}

以下是我遇到的问题的视频:http://www.youtube.com/watch?v=kSZeuP4AiQ0&feature=youtu.be

误差是在开始处看到的弹簧效应。我绞尽脑汁想解决这个问题,但什么也想不出来。谁能告诉我问题出在哪里?

EN

回答 1

Stack Overflow用户

发布于 2012-03-25 22:43:33

如果我没看错这个伪代码,当两个物体碰撞时,每个物体的位置和速度都会发生变化。然而,当一个坠落的盒子撞上一个静止的盒子时,你希望静止的盒子保持静止。

  1. ,我认为你应该重新考虑一下你的基本碰撞物理学。真正的碰撞不是这样工作的。
  2. 考虑使时间步长更小。毕竟,真实的物体是有弹性的,但“刚性”物体的振动速度太快,我们看不见;橡皮筋的积木堆看起来就像一堆慢动作的刚性物体,所以如果你加快速度,它们看起来会更坚硬。大规模的运动已经是正确的。
  3. 如果您希望对象不可穿透,则必须为此实现特殊规则。我不知道这些墙是否无法穿透,但这将是一个很好的起点。--
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9849653

复制
相关文章

相似问题

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