如何检查线段与弧线之间的距离?
圆弧未填充,因此只是圆的外边缘是圆弧的一部分。
我想做碰撞检测。基本上我有两个圆形物体。一个是移动线,另一个是弧形。物体具有碰撞半径。
请注意,这不是精确的碰撞检测,因为我认为没有封闭形式的解决方案来进行时间分析(有迭代解决方案)以恒定速度移动。
我只需要伪代码。虽然我可以通过将弧转换为两个没有厚度的弧,两端的两个圆并使用传统算法来实现这一点,但这是时间敏感的。将其分解为基元并单独检查会重新检查/重新计算一些事情,我想避免任何不必要的计算。
答案 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周!