圆与圆扫描测试,返回触摸点
问题描述:
我正在寻找一个算法,需要两个动态的圆形并返回联系点。由于某种原因,当试图搜索这个时,我只能找到如http://ericleong.me/research/circle-circle/这样的资源,它们描述返回结果速度的算法。圆与圆扫描测试,返回触摸点
答
您还没有很好地定义问题。
设圆中心与方程
cx1 = cx1_0 + t * vx1
cx2 = cx2_0 + t * vx2
cy1 = cy1_0 + t * vy1
cy2 = cy2_0 + t * vy2
其中cx1_0开始第一圆的X坐标移动,VX1是其速度的x分量。
当中心距等于半径之和时,圆形相互接触。我们可以用平方值:
(cx1 - cx2)^2 + (cy1 - cy2)^2 = (r1 + r2)^2
上述替代表情,开括号,求解未知参数t二次方程。您可以获得0,1或2个解决方案(不存在交互,存在一个触摸交叉时间段)。然后计算出中心坐标触摸的瞬间,让触摸点外部感人:
x_touch = (cx1 * r1 + cx2 * r2)/(r1 + r2)
similar for y
注意,我强调外部因为可能会发生内部接触(在这种情况下,距离为半径的不同,但我认为这种情况对你来说并不有趣)
这看起来像是非常基本的东西,所以我可能只是错过了某些东西,或者我正在用错误的名字查找它。当这是标记重复:( – Julian