【发布时间】:2017-09-20 11:57:08
【问题描述】:
我一直在寻找游戏/模拟解决方案以在时间流逝时寻找距离,但这不是我想要的。
我正在寻找一个 O(1) 公式来计算(0 或 1 或 2)时钟时间,其中两个圆之间的距离正好为 r1+r2。负时间是可能的。有可能两个圆圈没有碰撞,并且它们可能没有交叉路口(如两辆车在相反方向行驶太靠近路中间时相互“夹”),这弄乱了我所有的 mx+b解决方案。
从技术上讲,单点碰撞应该是可能的。
我大约有 100 行代码,我确信肯定有更好的方法,我什至不确定我的测试用例是否正确。我的初始设置是:
dist( x1+dx1*t, y1+dy1*t, x2+dx2*t, y2+dy2*t ) == r1+r2
假设任何时间 t 的距离都可以用毕达哥拉斯计算,我想知道到中心的距离恰好是半径之和的两个时间点。我求解了 a、b 和 c 并应用了二次公式,我相信如果我假设它们是幻像物体,这会给我碰撞的第一个时刻和最后一个碰撞时刻,我可以假设每时每刻,它们都在重叠。
我的工作前提是 2 个对象不可能在 t0 重叠,这意味着“相互卡住”的无限碰撞是不可能的。当斜率为 0 或无穷大时,我也会过滤掉并使用特殊处理,这是有效的。
我尝试计算距离,此时对象 1 位于交点,它与对象 2 的距离,同样当 o2 位于交点时,但这不起作用,因为当它们可能发生碰撞时不在他们的路口。
当斜率相等但幅度不同时,我遇到了问题。
已经有一个简单的物理/数学公式了吗?
编程语言无关紧要,伪代码会很棒,或者任何没有复杂符号的数学公式(我不是数学/物理学家)......但没有更高阶的(我假设 python 可能有已经有一个碰撞(p1,p2)方法)
【问题讨论】:
-
物体是否像您的方程式中那样具有恒定的速度?如果是这样,您应该能够简单地求解 t。什么不工作?