Searching for line and circle intersection.
10 views (last 30 days)
Show older comments
Hello,
I have two circles and a line that connects the centers. I am trying to find only the closest intersections of the line and the circles(A and B) , but the "linecirc" function gives me all the four.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/155529/image.jpeg)
And this is my code:
Center1=[0.68,3.17];
Center3=[3.82,0.28];
Xline1_3=[0.68 3.82];
Yline1_3=[3.17 0.28];
p1_3=polyfit(Xline1_3,Yline1_3,1);
[X_L1_3_C1,Y_L1_3_C1] = linecirc(p1_3(:,1),p1_3(:,2),0.68,3.17,2);
[X_L1_3_C3,Y_L1_3_C3] = linecirc(p1_3(:,1),p1_3(:,2),3.82,0.28,1);
%http://www.mathworks.com/matlabcentral/fileexchange/2876-draw-a-circle
s1=circle(Center1,2,1000);
hold on
s3=circle(Center3,1,1000);
hold on
plot(Xline1_3,Yline1_3)
hold on
scatter(X_L1_3_C1,Y_L1_3_C1)
scatter(X_L1_3_C3,Y_L1_3_C3)
2 Comments
Accepted Answer
Thorsten
on 9 Aug 2016
Edited: Thorsten
on 9 Aug 2016
If P11 and P12 are the intersection points with circle 1, and P21, P22 are those with circle 2, you compute the distances between each pair
d(P11, P21)
d(P11, P22)
d(P12, P21)
d(P12, P22)
an then select the points with the smallest distance. Note that for some configurations, e.g., two concentric circles and a line through the common center, you get two pairs with the same minimal distance.
More Answers (0)
See Also
Categories
Find more on Interpolation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!