计算点和圆弧段碰撞

时间:2010-09-14 20:40:38

标签: math trigonometry geometry segment

如果我计算了线段和圆之间的交点,我怎么能判断这个交点是否位于圆的一段?

我有方程式来判断一个线段是否与圆相交,并且我在该圆上也有交点,但我需要知道的是圆上的这个碰撞点是否在于该圆的特定arg段的边界。我有圆弧段的终点,圆圈的中心和圆弧。半径和碰撞点。

2 个答案:

答案 0 :(得分:1)

将交点转换为围绕中心的polar coordinates并比较角度。

答案 1 :(得分:0)

作为Dario的想法的替代方案(也应该有效),您可以:

  1. 计算交点和弧的端点之间的距离(称为intdist1intdist2)。
  2. 计算弧的端点之间的距离(arcdist)。
  3. 如果圆弧小于圆的一半(覆盖小于180度),那么如果intdist1intdist2都小于{{1,则知道该点是否在弧内}}。
  4. 否则,如果圆弧大于圆的一半(覆盖超过180度),那么如果arcdistintdist1大于{{{},则知道该点是否在弧内1}}。
  5. 我猜,因为你没有另外说明,端点之间的弧线很短。在这种情况下,您无需担心上面的第4步。

    如果使用的弧线恰好覆盖圆圈的180度,则该方法会失败。在这种情况下,你可以将180度弧打破成90度弧,并检查它们两个。

    此外,您当然可以使用距离的平方来比较这些距离,以节省平方根。此外,这种方法应该比计算角度更快,因为那些涉及使用昂贵的反余弦。