对于两个圆直线移动,它很容易计算出发生碰撞的时间:http://twobitcoder.blogspot.com/2010/04/circle-collision-detection.html测距点(动圈+时间)
这假定界有固定的出发点和固定移动路径,并计算碰撞时间。
是否有可能做到这一点周围的其他方法:
圈1:起点X1,Y1速度VX1,VY1(固定起点,固定的线性运动路径),半径R1 圈2:起点X2,Y2速度标量(1米/秒等)(固定起点,固定速度,未知方向),半径R2
是否可以在最短行程时间内确定两个圆的碰撞位置?
I.E. 圆圈1从0,0开始并以1.0的速度移动(每次向右移动1个单位) 圆圈2从5.5开始并且每次移动1个单位 碰撞位置是什么(或VX2 ,VY2圆圈2需要移入)以便两个圆在最低时间T碰撞。 两个圆的半径为1
在此示例中,解决方案将位于圆1周围的某处在时间3,0。这个问题相当复杂,因为你有未知的变量:碰撞点,碰撞时间,VX2,VY2。尽管VX2和VY2受到| VX1 | + | VX2 |的限制= 1
的原因的问题就是要告诉圈2,它应该以移动到为“捕获”圆圈1
蛮力解决方案将是,以检查圆1的位置在每时间间隔,并计算是否圈2会说,如果移动到该点与圈1碰撞 - 但你可能会错过圆的碰撞点被快速移动,或得到一个次优点等
迈克尔,请你说明哪些变量是二次方程的'a','b'和'c'?我假设'x'是我们正在努力解决的问题。谢谢! –
我已经在PDF格式https://sites.google.com/site/therobotsbrain/files/circle_intersection_time中提供了更清晰的说明。pdf希望这会让事情更清楚(在堆栈溢出写数学不容易..) –
谢谢。非常感激 –