嘿,我正在用java编写一个程序(但我认为那不是与这个问题有关),其中两个机器人(圆圈)正在驾驶。 机器人正在以一定的速度从某个位置行驶到某个位置。 问题是如何确定是否有碰撞的圆圈。 我不能使用圆的中点和矢量它的移动,导致圆有一个半径。 另一个问题是我无法检查圈子的最终位置。 我需要检查路上是否有碰撞,以及它是否在同一时间。 有没有人有一个想法如何计算?两个圆圈的碰撞
两个圆圈的碰撞
回答
让我们P1 = (x1, y1)
和P2 = (x2, y2)
开始坐标,V1 = (vx1, vy1)
和V2 = (vx2, vy2)
是速度,R1
和R2
是圆的Radia。 圈发生碰撞,如果中心距小于R1 + R2
(或平方距离越小则RR=(R1+R2)^2
)
我们可以找到中心,距离与时间的函数的坐标,并确定距离是否曾经变得足够小。
简单的方法 - 使用伽利略原理,在坐标系中工作,与第一个对象链接。在该系统中,它停留在零点,第二个物体以起点(x2-x1, y2-y1)
和速度(vx2-vx1, vy2-vy1)
移动。 坐标通过时的第二个目的的:
X = (x2-x1) + (vx2-vx1) * t = dx + vx * t
Y = (y2-y1) + (vy2-vy1) * t = dy + vy * t
平方距离和RR之间的区别为零时发生碰撞时
D^2 - RR = X*X + Y*Y - RR =
dx^2 + 2*dx*vx * t + vx^2 * t^2 + dy^2 + 2*dy*vy * t + vy^2 * t^2 - RR =
(vx^2+vy^2) * t^2 + 2*(dx*vx+dy*vy) * t + (dx^2+dy^2-RR) = 0
解决最后二次方程针对t
。如果存在正确的(正的,最小的正数)根,那么碰撞就发生在这一刻。
我能想到几个接近:
- 模拟运动 - “移动”超前的机器人用于从它们的速度和仿真时间间隔(短)计算出的距离,然后确定它们是否足够接近可能发生碰撞。重复,直到它们碰撞或到达目的地。
- 您可以使用两条线代表机器人的边缘,而不是使用代表机器人/圆的中点的单条线。
祝你好运。
有一个简单的方法来检查圆圈是否碰撞;如果两圆之间的距离小于两者的半径之和,则意味着它们正在碰撞。
要检查碰撞是否传入,请检查两个圆之间的距离是否小于两者的半径和一个小值的总和,如果在下一个tick中该值更小。
OP想知道他们是否在途中相撞,不仅*现在正在碰撞*。 –
@SimonForsbergMcFeely固定。 – Gustavo6046
- 1. 圆圈碰撞
- 2. 圆圈的碰撞检测
- 3. 圆圈碰撞问题
- 4. 圆圈碰撞预测
- 5. Java圆圈碰撞检测
- 6. 这个圆圈到圆圈的碰撞有什么问题?
- 7. 计算两个圆圈之间的碰撞时间 - 物理
- 8. Android:如何检测两个圆圈之间的碰撞
- 9. cocos2d:检测两个圆圈之间的碰撞
- 10. 与圆圈的弹性碰撞
- 11. 多圈圆碰撞的算法
- 12. 圆圈之间的一瞥碰撞
- 13. 圆形碰撞错误,圆圈轨道不动圈
- 14. 解决圆圈碰撞问题
- 15. 用圆圈检查矩形碰撞
- 16. 圈碰撞式
- 17. pygame的 - 碰撞检测与两个圆
- 18. 圆碰撞Javascript
- 19. 检查线和一个圆圈在帆布的碰撞android
- 20. 圈的碰撞检测
- 21. Java的圈,圈的碰撞检测
- 22. (UE4)检查一个点是否位于碰撞圆圈中
- 23. 碰撞与椭圆
- 24. 圆弧的碰撞检测
- 25. 如何处理java中圈和半圆碰撞的反应?
- 26. javafx碰撞问题的路径(行)与粗笔画和圆圈
- 27. 静态与动态圆圈之间的碰撞响应
- 28. 两个精灵的碰撞
- 29. 圆形碰撞中的圆形
- 30. 圆圈碰撞,以防止他们经历彼此
你的问题有点不清楚。你想检查他们是否正在碰撞*现在*或他们*将来会碰撞一段时间*? *过去*有时会碰撞*,你想检查一下吗? –
我想知道如果从途中,从他们的开始到他们的终点。在他们到达目的地之前,他们可能会冒险。 – Montezuma
您是否检查过[this one]这样的现有解决方案(http://ericleong.me/research/circle-circle/)? –