圆弧和线段的碰撞检测

3
如何检查线段和弧之间的距离?
该弧是未填充的,因此仅计算其所属圆的外边缘。
我想做碰撞检测。基本上我有两个圆形对象。一个沿着一条直线移动,另一个沿着一条弧形移动。这些对象有一个碰撞半径。
请注意,这不是精确的碰撞检测,因为我相信没有闭合形式的解来进行时间分析(有迭代解)以恒定的速度移动。
我只需要伪代码。虽然我可以通过将弧形转换为两个无厚度的弧形和两个在端点处的圆来使用传统的算法,但这是时间敏感的。将其分解成基元并逐个检查会重新检查/重新计算一些内容,并且我希望避免任何不必要的计算。
1个回答

2
我希望“arc”是我所想的(英语不是我的母语)。这是我的方法。最后一个函数是解决问题的函数,之前的函数是工具函数。它运行良好。思路是计算圆和直线之间的交点,并拒绝那些不在弧线或线段上的点。
注意:弧由其中心(xc,yc)、半径和两个角度定义。由于两个角度定义了两个弧(逆时针和顺时针),我假设弧从第一个角度逆时针到第二个角度。两个角度都在[0,2.PI[范围内,因此如果弧通过(xc+R,yc),第一个角度必须大于第二个角度。
代码是C ++。我没有时间将其翻译回伪代码。希望能有所帮助。
注意:一个圆弧由其中心(xc,yc)、半径和两个角度定义。由于两个角度定义了两个圆弧(逆时针和顺时针),我假设圆弧从第一个角度逆时针到第二个角度。两个角度都在[0,2.PI[之间,因此如果圆弧通过(xc+R,yc),则第一个角度必须大于第二个角度。
该代码是C ++编写的。我没有时间将其翻译回伪代码。希望能有所帮助。
URL: http://www.fichiers.univ-metz.fr/depot/minich/SegmentArcIntersection.txt 可用2周!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接