I want to calculate the intersect point between arc and line. I have all the data for line and arc.
For line : start and and end point.
For arc : start/end poin
A point on the arc has coordinates
R.cos(t) + Xc
R.sin(t) + Yc
Using the implicit form of the line equation (either given or obtained from two given points),
A.X + B.Y + C = 0
then
A.R.cos(t) + B.R.sin(t) + A.Xc + B.Yc + C = 0
To solve this trigonometric equation, first divide both members by R.√A²+B²
, giving
c.cos(t) + s.sin(t) = d
which can be rewritten, with tan(p) = s/c
and d = cos(q)
:
cos(t-p) = cos(q)
then
t = p +/- q = arctan(B/A) +/- arccos(-(A.Xc + B.Yc + C)/R.√A²+B²)
Eventually, you will need to check if these values of t
fall in the range (start, end)
, modulo 2π.
Let's define an arc and a line:
Arc:
Line:
From that you can calculate:
The arc and the line won't intersect when al < a1 or al > a2 or, in other words, the angle of the line isn't between the angles of the arc. The equations for an intersection are as follows:
where c (0 < c <= 1)is the variable we're looking for. Specifically:
The intersection point is therefore at (x1+c * dx),(y1+c * dy)
This algorithm only works when the arc and the line have one single intersection. If the line goes through the arc two times then it won't register any intersection.