如何检查线段和圆弧之间的距离?
圆弧未填充,因此仅是圆的外边缘是计数的一部分。
我想进行碰撞检测。基本上我有两个圆形物体。一个在一条直线上移动,另一个在一条弧线上移动。对象具有碰撞半径。
请注意,这并不是精确的碰撞检测,因为我相信没有闭合形式的解决方案可以进行以恒定速度移动的时间分析(存在迭代解决方案)。
我只需要伪代码。虽然我可以通过将圆弧转换为两个没有厚度的圆弧,在端部形成两个圆并使用常规算法来做到这一点,但这是时间敏感的。将其分解为基元并单独进行检查将重新检查/重新计算某些内容,我想避免任何不必要的计算。
最佳答案
我希望弧线是我认为的样子(英语不是我的语言)。这是我的方法。最后一个功能是解决问题的功能,而先前的功能是实用程序。它工作正常。这个想法是要计算圆和直线之间的交点,并拒绝那些不在圆弧或直线段上的交点。
注意:圆弧由其中心(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周!
关于collision-detection - 弧线段碰撞检测,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13447653/