2

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

我有方程来判断一条线段是否与圆相交,我也有那个圆上的交点,但我需要知道的是圆上的这个碰撞点是否在 a 的范围内该圆的特定 arg 段。我有弧段的端点、圆的中心和半径以及碰撞点。

4

2 回答 2

1

将交点转换为围绕中心的极坐标并比较角度。

于 2010-09-14T20:46:46.750 回答
0

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

  1. 计算交点与圆弧端点之间的距离(称为intdist1intdist2)。
  2. 计算圆弧端点之间的距离 ( arcdist)。
  3. 如果弧小于圆的一半(覆盖小于 180 度),那么如果intdist1intdist2都小于,则您知道该点是否在弧中arcdist
  4. 否则,如果圆弧大于圆的一半(覆盖超过 180 度),那么您知道点是否在圆弧中(如果大于intdist1intdist2大于arcdist)。

我猜,因为你没有另外指定,端点之间的弧线绕得很短。在这种情况下,您无需担心上面的第 4 步。

但是,如果您使用的弧线恰好覆盖圆的 180 度,则该方法会失败。在这种情况下,您可以将 180 度弧线分成 90 度弧线并检查它们我想。

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

于 2010-09-14T20:56:02.423 回答