How can I write a program to find nodes that are in the region of two intersecting circles
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have written a script for two equal intersecting circles having the same radius. nodes in blue at the centre of the two circles are stationary, while others are mobile. I also generated a random moving node having different energy and successful transmit probability. The problem now is how can I write a code that will determine the nodes that fall in the intersecting boundary. Thanks

0 comentarios
Respuestas (1)
KSSV
el 21 de Oct. de 2016
Editada: KSSV
el 21 de Oct. de 2016
Get the coordinates of intersection circle (this will form closed region), use inpolygon() to know whether given point lies inside closed region or outside the closed region. You may have a look on the below code:
clc; clear all ;
N1 = 100 ; N2 = 50 ;
th = linspace(0,2*pi,N1)' ;
r1 = 1. ; r2 = 1. ; % radii of circles
c1 = [0 0] ; % center of first cirlce
c2 = [1.5 0] ; % center of second circle
a1 = repmat(c1,[N1 1])+[r1*cos(th) r1*sin(th)] ;
a2 = repmat(c2,[N1 1])+[r2*cos(th) r2*sin(th)] ;
%
plot(a1(:,1),a1(:,2),'r') ;
hold on
plot(a2(:,1),a2(:,2),'r') ;
axis equal
%%Get points of fitst circle lying in second circle
in12 = inpolygon(a1(:,1),a1(:,2),a2(:,1),a2(:,2)) ;
P1 = a1(in12,:) ;
plot(a1(in12,1),a1(in12,2),'.b') ;
%%Get points of second circle lying in first circle
in21 = inpolygon(a2(:,1),a2(:,2),a1(:,1),a1(:,2)) ;
P2 = a2(in21,:) ;
plot(a2(in21,1),a2(in21,2),'.b') ;
%%form the oval / intersection boundary
R = [P1 ;P2] ;
%%Form a suare grid around ovel region
x = linspace(c1(1),c2(1),N2) ;
y = linspace(-r1,r2,N2) ;
[X,Y] = meshgrid(x,y) ;
XX = X(:) ; YY = Y(:) ;
%%Get the random points inside the region
l = 1 ;
ax = min(R(:,1)) ; bx = max(R(:,1)) ;
ay = min(R(:,2)) ; by = max(R(:,2)) ;
while l ==1
x = (bx-ax).*rand(1,1) + ax;
y = (by-ay).*rand(1,1) + ay;
in = inpolygon(x,y,R(:,1),R(:,2)) ;
if in
plot(x,y,'.g') ;
drawnow
end
end
2 comentarios
KSSV
el 21 de Oct. de 2016
That's what I suggested you already...Get the coordinates of intersection circle (this will form closed region), use inpolygon() to know whether given point lies inside closed region or outside the closed region
Ver también
Categorías
Más información sobre Entering Commands en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!