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?

4 次查看(过去 30 天)
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 个评论
KALYAN ACHARJYA
KALYAN ACHARJYA 2018-9-8
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 2018-9-8
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.

请先登录,再进行评论。

采纳的回答

Dimitris Kalogiros
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 个评论
Anjan Dash
Anjan Dash 2018-9-10
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.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by