弧线和线段碰撞检测

时间:2012-11-19 04:23:01

标签: collision-detection distance line-segment

如何检查线段与弧线之间的距离?

圆弧未填充,因此只是圆的外边缘是圆弧的一部分。

我想做碰撞检测。基本上我有两个圆形物体。一个是移动线,另一个是弧形。物体具有碰撞半径。

请注意,这不是精确的碰撞检测,因为我认为没有封闭形式的解决方案来进行时间分析(有迭代解决方案)以恒定速度移动。

我只需要伪代码。虽然我可以通过将弧转换为两个没有厚度的弧,两端的两个圆并使用传统算法来实现这一点,但这是时间敏感的。将其分解为基元并单独检查会重新检查/重新计算一些事情,我想避免任何不必要的计算。

1 个答案:

答案 0 :(得分:2)

我希望弧线是我认为的(英语不是我的语言)。我就是这样做的。最后一个功能是解决问题的功能,之前的功能是实用程序。它工作正常。我们的想法是计算圆和直线之间的交点,并拒绝那些不在圆弧和直线段上的交叉点。

注意:弧由其中心(xc,yc),半径和两个角度定义。由于两个角度定义了两个弧线(逆时针和顺时针),我假设弧线从第一个角度逆时针旋转到第二个角度。两个角都在[0,2.PI [如果弧穿过(xc + R,yc),则第一个角度必须大于第二个角度。

代码是C ++。我没时间把它翻译成伪代码。我希望它有所帮助。

  

我希望弧线是我认为的(英语不是我的语言)。我就是这样做的。最后一个功能是解决问题的功能,之前的功能是实用程序。它工作正常。我们的想法是计算圆和直线之间的交点,并拒绝那些不在圆弧和直线段上的交叉点。

注意:弧由其中心(xc,yc),半径和两个角度定义。由于两个角度定义了两个弧线(逆时针和顺时针),我假设弧线从第一个角度逆时针旋转到第二个角度。两个角都在[0,2.PI [如果弧穿过(xc + R,yc),则第一个角度必须大于第二个角度。

代码是C ++。我没时间把它翻译成伪代码。我希望它有所帮助。

网址:http://www.fichiers.univ-metz.fr/depot/minich/SegmentArcIntersection.txt

可用2周!