【问题标题】:Arc and line segment collision detection弧线段碰撞检测
【发布时间】:2012-11-19 04:23:00
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: collision-detection distance line-segment


    【解决方案1】:

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

    注意:圆弧由圆心 (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 周内可用!

    【讨论】:

      猜你喜欢
      • 2017-10-02
      • 1970-01-01
      • 2016-08-08
      • 2011-09-12
      • 2010-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多