3

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

弧是未填充的,所以只是圆的外边缘是计数的一部分。

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

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

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

4

1 回答 1

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周内可用!

于 2012-11-26T18:01:29.493 回答