I want to find out intersection points of two circles in symbolic form. The two circles are C1: x^2+y^2=(r+a)^2 and C2: (x-(b-l/2))^2+(y-sqrt3 *L/2)^2=(r+a)^2. Can anyone help me?

6 views (last 30 days)
I am trying to find out work space of a parallel manipulator of 3-PRR type. The workspace of such a manipulator consists of intersection between circles and lines. In order to generate a generic expression of workspace I need to determine the intersection points between two circles as mentioned above.I can do some symbolic computation using matlab. But this one I am not getting any clue. Can anyone help me?
  4 Comments
KALYAN ACHARJYA
KALYAN ACHARJYA on 8 Sep 2018
If I understand correctly, First plot the two circles and find the intersection, r, a,b and L are variables, Without define these how can you plot the equation?
Anjan Dash
Anjan Dash on 8 Sep 2018
Kalyan, actually I am putting r,a,b,l into four loops, each one varying between certain range. So each time, these circle equations will keep on changing. So I was thinking if i can get a generic expression of intersection points, then these points can be determined easily which will be afterwards used for limits of integration. But each time, we will get values for r, a, b and l and they keep on changing. Does it help you anyway.

Sign in to comment.

Accepted Answer

Dimitris Kalogiros
Dimitris Kalogiros on 8 Sep 2018
When you will use it inside a loop with real values for a, b, l, L, r, maybe it is better to use vpasolve() instead of solve()
More over without loss of generality, I assume that r+a>0
clear; clc; close all;
syms x y
syms a b r l L
%circles equations
Circle_1= x^2+y^2==(r+a)^2
Circle_2= (x-(b-l/2))^2+(y-sqrt(3)*L/2)^2==(r+a)^2
%centers of these circles
center_1=[sym(0) sym(0)]
center_2=[b-l/2 sqrt(3)*L/2]
%distance of among centers
center_dist=norm(center_2-center_1)
%---choose among 3 cases---
%assume(center_dist>2*(r+a));
%assume(center_dist==2*(r+a));
assume(center_dist<2*(r+a));
if isAlways(center_dist>2*(r+a))
disp('no intersection points');
elseif isAlways(center_dist==2*(r+a))
disp('one intersection points');
Apoint=(center_2-center_1)/2
else
disp('two intersection points');
mySol=solve(Circle_1, Circle_2, center_dist<2*(r+a), [x y])
Apoint=[mySol.x(1) mySol.y(1)]
Bpoint=[mySol.x(2) mySol.y(2)]
end
I hope that I showed the path...
  1 Comment
Anjan Dash
Anjan Dash on 10 Sep 2018
Thank you Mr Dimitris Kalogiros not only for giving the exact thing that I wanted but also taking so much interest in my problem from which you are not going to gain anything. Thank you again. I hope, it is done. Thank you again for your showing interest in my problem.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!