1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| load points_bords_trous.mat
x = points_bords_trous(:,1);
y = points_bords_trous(:,2);
z = points_bords_trous(:,3);
figure(1)
clf
plot3(x, y, z, 'b+')
axis equal
ngroup = 1;
group(ngroup).points = points_bords_trous(1,:);
ischeck = false(1,size(points_bords_trous,1));
ischeck(1) = true;
idx = 1;
dmax = 10;
while ~all(ischeck)
d = sqrt((points_bords_trous(idx,1)-points_bords_trous(:,1)).^2 + ...
(points_bords_trous(idx,2)-points_bords_trous(:,2)).^2 + ...
(points_bords_trous(idx,3)-points_bords_trous(:,3)).^2);
d(ischeck) = inf;
[~, idx] = min(d);
if d(idx)>dmax
ngroup = ngroup+1;
group(ngroup).points(1,:) = points_bords_trous(idx,:);
else
group(ngroup).points(end+1,:) = points_bords_trous(idx,:);
end
ischeck(idx) = true;
end
hold on
col = hsv(ngroup);
for n = 1:ngroup
p(n) = plot3(group(n).points(:,1), group(n).points(:,2), group(n).points(:,3), 'o', 'color', col(n,:));
end
legend(p, strcat({'Group '}, num2str((1:ngroup).'))) |
Partager