【问题标题】:Arkanoid Collision Detection... Again打砖块碰撞检测......再次
【发布时间】:2011-06-15 12:44:48
【问题描述】:

我在这里阅读了几十个关于 SO(不仅是)关于打砖块碰撞检测的问题,即移动圆与固定矩形的碰撞,但所有这些问题都询问如何检测碰撞或如何检测碰撞的哪一侧矩形球击中。我的问题有点不同 - 它涉及当球击中矩形的角度时新速度方向的计算。

为简单起见,让我们假设Vx >= 0Vy <= 0,也就是说,球是从左上右下的,并且假设我知道它会击中矩形的下侧。绿色箭头表示球的大致方向,蓝点表示包含球击中矩形下边的直线上的第一个点。如果该点严格位于矩形的下侧,那么一切都是微不足道的——只需将Vy 更改为-Vy。但是,当该点位于下侧之外时,这意味着球将接触的矩形的第一个点将是其左下角,在这种情况下,我不认为将 Vy 更改为 @987654327 @ 是正确的。我认为新的速度角必须取决于蓝点到角落的距离。此外,我认为不仅VyVx 也必须改变(可能保留 V 向量的长度)。

那么,我们如何计算新的 Vx 和 Vy 当我们击中一个角度时?如果您知道任何可以解决这个问题的好链接,我会很高兴知道它们。另请注意,我对这个的绝对物理模型更感兴趣,而不是易于编码的优化近似值。您可以假设不涉及轮换。提前非常感谢您

【问题讨论】:

    标签: geometry collision-detection physics


    【解决方案1】:

    您知道如何从水平墙上反弹。你知道如何从其他角度的墙上反弹吗?

    当圆圈撞到墙上时,它会在一个点上接触。那个单点就是圆“知道”墙壁的所有内容。该点的位置为您提供了足够的信息来计算新的 V。当圆圈碰到拐角时,它会在一个点(即拐角)接触,所以它会弹跳就像它在那一点撞到墙上一样

    这足以继续,还是你想要一些数学? (如果是,你对向量代数的适应程度如何?)

    【讨论】:

    • 我对向量代数很满意。我也知道如何从任意墙上反弹,但我不明白你在说哪个假想的墙 - 我的意思是,它肯定既不是水平的,也不是垂直的,是吗?如何计算那面墙的角度?
    • 它可能与水平方向成 45 度吗?
    • @Armen Tsirunyan:给定一堵墙,你可以推断出一个点。给定一个点,推断一堵墙同样容易。 (ROT13 剧透:Gur enqvhf sebz gur pragre bs gur pvepyr gb gur cbvag vf gur abezny bs gur jnyy。)
    • 或者是球在角点的切线?
    • 那么我仍然对你的回答感到困惑。据我了解,您说存在穿过该角度的假设墙,我必须从该墙反弹以获得正确的新 Vx 和 Vy。那么,那是哪面墙?
    【解决方案2】:

    在岩石力学中对岩石块进行建模时经常进行的简化是假设矩形的角具有较小的半径。然后计算是两个曲面接触之一。与将角建模为直角相比,这种方法倾向于提供更一致的行为,因此在需要一致结果的情况下是首选。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多