检查线和圆弧是否相交

时间:2015-10-02 05:44:11

标签: math geometry line

我正在寻找一种能够显示与之相交的线和弧的算法。 对于线路,我有起点和终点,对于弧线,我有起点,终点和中心点。我也有ARC的起点和终点。

enter image description here

正如你在上面的图片中看到的那样,我画了一条弧线和两条线相交的线。如何计算交叉与否?

我发现一个链接可以显示直线和圆Circle Line Intersection points之间的交点,但在我的情况下,我有直线和圆弧。即使我还有另一个问题,什么是计算两个ARC之间交叉点的最佳方法?

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

通过等于线和圆的参数方程,

X = Sx + t SEx = Cx + R cos(u)
Y = Sy + t SEy = Cy + R sin(u)

可以写

 t SEx + CSx = R cos(u)
 t SEy + CSy = R sin(u)

通过添加正方形消除u

(SEx² + SEy²) t² + 2 (SEx.CSx + SEy.CSy) t + CSx² + CSy² - R² = 0

求解t的二次方程式并检查0<t<1(可以有两种解法)。

然后计算XY以及

tan(u) = (Y - Cy) / (X - Cx)

(使用atan2)。然后检查u是否在有效范围内。

对于两个弧,

C0x + R0 cos(u) = C1x + R1 cos(v)
C0y + R0 sin(u) = C1y + R1 sin(v)

Dx + R0 cos(u) = R1 cos(v)
Dy + R0 sin(u) = R1 sin(v)

求平方,

2R.Dx cos(u) + 2R.Dy sin(u) + Dx² + Dy² + R0² = R1²

除以2R√(Dx²+Dy²)以表格

c cos(u) + s sin(u) = e

可以写成

cos(u-w) = e, where tan(w) = s/c

然后

u = w ± arcos(e) 

为您提供潜在的交叉点。