1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
clear all;
N = 20;%nombre de points à générer
r = 0.16;%distance minimale souhaitée entre les points
A(1,:) = [(0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1))]; %premier point généré dans un volume de dimensions 0.5, 0.5, 0.5
for i = 2:N
A(i,:) = [((0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1))];
y = pdist(A);%fonction qui calcule les distances entre les points pris 2 à 2. C'est un vecteur de longueur N*(N-1)/2
for j = 1:length(y)
if y(j) < r
A(i,:) = [(0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1))];%le point est recalculé
y = pdist(A);%les distances euclidiennes sont recalculées
while y(j) < r
A(i,:) = [(0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1)) (0.5 + 0.5*rand(1))];
y = pdist(A);
end
end
break%pour sortir de la boucle 'for' et passer au point suivant sachant que les précédents sont bons
end
end
A;
pdist(A);
plot3(A(:,1),A(:,2),A(:,3),'.','MarkerSize',15) |
Partager