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?

조회 수: 5 (최근 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
Dimitris Kalogiros 2018년 9월 8일
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개)

카테고리

Help CenterFile Exchange에서 Conversion Between Symbolic and Numeric에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by