我正在寻找一种能够显示与之相交的线和弧的算法。 对于线路,我有起点和终点,对于弧线,我有起点,终点和中心点。我也有ARC的起点和终点。
正如你在上面的图片中看到的那样,我画了一条弧线和两条线相交的线。如何计算交叉与否?
我发现一个链接可以显示直线和圆Circle Line Intersection points之间的交点,但在我的情况下,我有直线和圆弧。即使我还有另一个问题,什么是计算两个ARC之间交叉点的最佳方法?
有什么建议吗?
答案 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
(可以有两种解法)。
然后计算X
和Y
以及
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)
为您提供潜在的交叉点。