This code is to check the overlap between circles, is it possible to do this without for loop?
function pairs = checkOverlap(circles, rads) %circles : circles matrix [x, y]; each row represents a circle;
rads : radius of each circlencircles = size(circles,1); for i=1:ncircles -1 % distances between circles:
dx = bsxfun(@minus, circles(i,1), circles(i+1,1)); dy = bsxfun(@minus, circles(i,2), circles(i+1,2)); sumr(i) = bsxfun(@plus, rads(i,1), rads(i+1,1)); % distance between centers:
dist(i) = sqrt(dx.^2 + dy.^2); end% pairs that have overlap:
pairs = find(dist < sumr); end
Run:
circles = rand(5, 2); % 5 circles
rads = rand(5,1); % 5 radius
Isoverlap = checkOverlap(circles, rads);
Best Answer