【问题标题】:collision response with torque与扭矩的碰撞响应
【发布时间】:2011-04-18 07:51:43
【问题描述】:

我正在编写一个 2D 刚体模拟器。被模拟的对象是凸多边形。我的问题是如何确定碰撞的“点”,这样当我施加响应力时,我也可以计算扭矩。

在二维中,窄相碰撞检测的流行方法似乎是分离轴定理。然而,虽然这给了你“他们在碰撞吗?”以及“多少?”,它不会为您提供一个参考点(我知道),在该参考点上应用响应力(并因此计算扭矩)*。

另一种方法(这也让我更感兴趣,因为它是 3D 中使用的,这将是合乎逻辑的下一步)是计算两个多边形的 Minkowski 差异,并确定它们在 (0, 0) 包含在生成的多边形中。但是,您如何使用它来确定施加响应力的相对点?我的假设是,由于这种差异的每个面都有效地对应于其中一个多边形的面,因此分离距离是从 (0,0) 到 MD 的最短距离,并将其应用于多边形上的相应面.

作为奖励,如何在 3D 中做到这一点?

*在我写这篇文章时,我刚刚意识到,在使用 SAT 时,我可以跟踪哪些点是重叠的,并在这些点的“平均值”处施加力。但是我必须决定在几个非分离轴中的哪一个来执行这个小技巧......

【问题讨论】:

  • 力沿垂直于表面施加..并且大小取决于沿表面垂直方向的速度的 x 分量。
  • 扭矩 = 半径 x 力。在这种情况下,半径是相对于发生接触的每个物体的点。我的问题涉及如何确定这个相对点。
  • 半径的一端永远是质心……而另一点是碰撞的接触点。
  • 不开玩笑。 :) 我的问题是,你们如何确定联系点?
  • 说真的,不知道,所以我投票并标记为收藏。还是你打算如何让你反对??我想知道。

标签: physics simulation


【解决方案1】:

这是我曾经做过的,但有很多可能的解决方案:

分离轴定理会给你一个从一个物体到另一个物体的方向,这个方向垂直于分离轴(或 3D 中的分离平面)。您可以将此方向与凸体上的每个点一起使用,以获得穿透距离,或沿该方向每个点与分离轴或平面的距离。

按穿透距离对点进行排序。从最具穿透力的点开始,如果它在另一个身体内部,你已经找到了第一个接触点,否则继续下一个。您可能希望继续查找沿分离方向距第一个接触点一定距离范围内的其他接触点。将这些点作为“接触歧管”进行跟踪。平均流形中的点,或使用其他方法来确定施加接触力的点。

一些先进的技术:

将接触流形保存在内存中将允许您通过首先测试前一个流形来有效地测试下一帧。

对于连续碰撞检测,将点是否在另一个物体内部的测试替换为框架内每个点的路径(近似为线段)是否以及在哪里与另一个物体相交的测试。这要昂贵得多,但可以防止快速移动的小型物体穿过薄壁。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-05
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    • 2014-09-03
    • 2014-04-08
    相关资源
    最近更新 更多