计算圆弧与直线的交点

6 java geometry

我想计算弧和线之间的交点。我有线和弧的所有数据。

对于线:起点和终点。
对于圆弧:起点/终点、起点/终点角度、半径和中心点。

我在这里附上了一张图片。在下面的这张图片中,我画了一条弧线和一条线,线与弧线相交。

所以现在我想找到交点。请给我一些算法或想法或任何可用的代码。

在此处输入图片说明

小智 4

让我们定义一条弧和一条线:

弧:

  • xa=X坐标
  • ya=Y坐标
  • a1=起始角度(较小的角度)
  • a2=终止角度(更大的角度)
  • r=半径

线:

  • x1=第一个 X 坐标
  • x2=第二个 X 坐标
  • y1=第一个 Y 坐标
  • y1=第二个 Y 坐标

由此你可以计算出:

  • dx=x2-x1
  • dy=y2-y1
  • al=arctan(dy/dx)(线的角度)

当al < a1 或al > a2 时,圆弧和直线不会相交,换句话说,直线的角度不在圆弧的角度之间。交集的方程如下:

  • xa+r cos(al)=x1+c dx
  • ya+r sin(al)=y1+c dy

其中 c (0 < c <= 1) 是我们要查找的变量。具体来说:

  • (xa+r * cos(al)-x1)/dx=c
  • (ya+r * sin(al)-y1)/dy=c

因此,交点位于(x1+c * dx),(y1+c * dy)

该算法仅在圆弧和直线只有一个交点时才有效。如果该线两次穿过圆弧,则不会记录任何交点。