Find if point lies within n circles

2 vues (au cours des 30 derniers jours)
Saptarshi Bhattacharjee
Saptarshi Bhattacharjee le 7 Jan 2012
I have a problem where I am trying to find which of the points in iv1 of code below lies within all the circles specified by C(it stores the centres of n circles, nx2 matrix). My code is shown below:
function [ctv]=ctrivec(iv1,c,r)
ctv=zeros(3,2);
n=size(iv1,1);
count=1;
flag=0;
for i=1:1:n
flag=findptin(iv1(i,:),c,r);
if flag==1
ctv(count,:)=iv1(i,:);
count=count+1;
end
end
end
function [f]=findptin(p,c,r)
n=size(c,1);
f=1;
for i=1:1:n
t=(p(1)-c(i,1))^2+(p(2)-c(i,2))^2-r^2;
if t>0
f=0;
return;
end
end
end
I am supposed to get three coordinates a smy output in the ctv vector(incidentally ctv stores the coordinates of the circular triangle formed by the intersection of 3 circles(the area of intersection to be specific)). However, I am not getting the desired outputs.
Example - consider the given case c=[3 5;7 2;2 2];
iv1 =
4.5000 0.3417
4.5000 3.6583
4.9187 2.6938
0.0813 4.3062
5.9950 4.8266
4.0050 2.1734
For this I should get the three points on ctv, but i am not getting it..
Pl help me out with this
P.S. I have not vectorized the code as i am not comfortable with this feature of MATLAB, I am more of a C programmer. Ignore this :)

Réponses (1)

Saptarshi Bhattacharjee
Saptarshi Bhattacharjee le 7 Jan 2012
Update : I think the problem is because when I am computing the value of t from the line
t=(p(1)-c(i,1))^2+(p(2)-c(i,2))^2-r^2;
the output is coming as
t =
1.6813e-004
I think this is making the problem during the check and that's why the points are getting omitted. Any idea why the result is i terms of e, and how can I change that to a normal value(as in decimal)??

Catégories

En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by