gpt4 book ai didi

math - 圆之间的二维碰撞响应

转载 作者:行者123 更新时间:2023-12-04 11:59:26 31 4
gpt4 key购买 nike

我正在尝试计算 2 个碰撞球的新速度,但在解决另一个问题之前无法真正做到这一点。

由于在数字世界中几乎不会发生真正的碰撞,因此我们总会遇到“碰撞”球重叠的情况。

想象一下有100个球随机移动,如果我理解正确,程序应该如下:

  • 移动球 ( x += vx ; y+= vy ;)
  • 获得最少重叠(或完美碰撞)的球
  • 将球“回到过去”移动到那个时刻
  • 执行碰撞计算

  • 如果以上是正确的,那么,我如何将球“及时”移动到第一次碰撞的点?已知数据:
  • 球的所有坐标 ( b[i].x , b[i].y )
  • XY速度 ( b[i].vx , b[i].vy )
  • 最不重叠的球之间的距离 ( dist )

  • 我应该计算 dist 的百分比是多少?是完美的碰撞距离,然后简单地向后移动 xyvx 相同的百分比坐标和 vy?

    最佳答案

    移动然后碰撞的策略是否有意义取决于您尝试模拟的事物类型,以及准确性和速度之间的权衡。例如,如果您正在编写一个斯诺克模拟器或 Super Monkey Ball,那么先移动再碰撞可能不够好,原因有以下三个。

    首先,球在碰撞后会有错误的速度。差异将是微妙的,但会让玩家感觉不对:

    enter image description here see text



    在左侧,在检测到碰撞之前允许球相交的时间步长结束时的速度。右侧:在正确的时间和地点发生碰撞后立即发生的速度。

    其次,移动得足够快的物体可以相互穿过而不发生碰撞。或者即使您检测到碰撞,您也可能以错误的方式弹出物体,导致某种非法运动。 (请参阅 tasvideos.org,了解 super 马里奥兄弟游戏中由这种先移动后弹出策略引起的 collection of collision bugs。)

    第三,对象可能会在您的时间步长结束时相交,没有空间将它们分开(因为其他对象会挡路)。所以你最终不得不在相交位置绘制对象,这看起来是错误的。

    在这些问题很重要的应用中,最好在移动球之前确定碰撞点。见 this article of mine有关此碰撞然后移动方法的基本介绍。

    关于math - 圆之间的二维碰撞响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6459035/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com