feat: surface

This commit is contained in:
Damien Guillotin 2022-04-06 11:12:38 +02:00
parent f7acb5a0b7
commit ac8b9c337b
5 changed files with 81 additions and 26 deletions

View file

@ -56,7 +56,7 @@ m = 0.1;
n = 3;
seuil_E = 10;
q_max = 5;
ind_img = 5;
ind_img = 1;
figure;
% subplot(2, 2, 1);
@ -130,16 +130,17 @@ plot(contour(:,2), contour(:,1), 'g', 'LineWidth', 3);
% scatter(barycentres(:,2), barycentres(:,1));
% % triplot(r, contour(:,2), contour(:,1));
[vx, vy] = voronoi(contour(:,1), contour(:,2));
T = 10;
[vx, vy] = voronoi(contour(1:T:end,1), contour(1:T:end,2));
plot(vy, vx, 'b');
% Selection des segments qui ont leurs extrémités dans l'image
ok = vx(1,:) > 0 & vx(1,:) < size(bw_img, 1) & ...
vx(2,:) > 0 & vx(2,:) < size(bw_img, 1) & ...
vy(1,:) > 0 & vy(1,:) < size(bw_img, 2) & ...
vy(2,:) > 0 & vy(2,:) < size(bw_img, 2);
ok = vx(1,:) > 1 & vx(1,:) < size(bw_img, 1) & ...
vx(2,:) > 1 & vx(2,:) < size(bw_img, 1) & ...
vy(1,:) > 1 & vy(1,:) < size(bw_img, 2) & ...
vy(2,:) > 1 & vy(2,:) < size(bw_img, 2);
vx = floor(vx(:,ok));
vy = floor(vy(:,ok));
@ -331,6 +332,7 @@ for k = 1:nb_barycentres
end
triBis = tri(to_save,:);
nb_barycentres = length(to_save);
% A DECOMMENTER POUR AFFICHER LE MAILLAGE RESULTAT
% Affichage des tetraedres restants
@ -339,23 +341,4 @@ figure;
tetramesh(triBis, T.Points);
% Sauvegarde des donnees
% save donnees;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% CONSEIL : A METTRE DANS UN AUTRE SCRIPT %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% load donnees;
% Calcul des faces du maillage à garder
% FACES = ...;
% ...
% fprintf('Calcul du maillage final termine : %d faces. \n',size(FACES,1));
% Affichage du maillage final
% figure;
% hold on
% for i = 1:size(FACES,1)
% plot3([X(1,FACES(i,1)) X(1,FACES(i,2))],[X(2,FACES(i,1)) X(2,FACES(i,2))],[X(3,FACES(i,1)) X(3,FACES(i,2))],'r');
% plot3([X(1,FACES(i,1)) X(1,FACES(i,3))],[X(2,FACES(i,1)) X(2,FACES(i,3))],[X(3,FACES(i,1)) X(3,FACES(i,3))],'r');
% plot3([X(1,FACES(i,3)) X(1,FACES(i,2))],[X(2,FACES(i,3)) X(2,FACES(i,2))],[X(3,FACES(i,3)) X(3,FACES(i,2))],'r');
% end;
save donnees;

37
TP_maillage_suite.asv Normal file
View file

@ -0,0 +1,37 @@
load donnees;
% Calcul des faces du maillage à garder
% nope = [];
% for i = 1:nb_barycentres
% tetra_i = T.Points(triBis(i, :), :);
% for j = i+1:nb_barycentres
% tetra_j = T.Points(triBis(j, :), :);
% if size(unique([tetra_i; tetra_j], 'rows'), 1) < 6
% for ki = 1:4
% tri_ki = sort(triBis(i,[1:ki - 1 ki + 1:4]));
% for kj = 1:4
% tri_kj = sort(triBis(j,[1:kj - 1 kj + 1:4]));
% if tri_ki == tri_kj
% nope = [nope; i ki; j kj];
% end
% end
% end
% end
% end
% i
% size(nope)
% end
FACES = [triBis(:, [2 3 4]); triBis(:, [1 3 4]); triBis(:, [1 2 4]); triBis(:, [1 2 3])];
FACES = sortrows(FACES);
FACESFACES(1:end-1, :) == FACES(2:end, :)
fprintf('Calcul du maillage final termine : %d faces. \n',size(FACES,1));
% Affichage du maillage final
figure;
hold on
for i = 1:size(FACES,1)
plot3([X(1,FACES(i,1)) X(1,FACES(i,2))],[X(2,FACES(i,1)) X(2,FACES(i,2))],[X(3,FACES(i,1)) X(3,FACES(i,2))],'r');
plot3([X(1,FACES(i,1)) X(1,FACES(i,3))],[X(2,FACES(i,1)) X(2,FACES(i,3))],[X(3,FACES(i,1)) X(3,FACES(i,3))],'r');
plot3([X(1,FACES(i,3)) X(1,FACES(i,2))],[X(2,FACES(i,3)) X(2,FACES(i,2))],[X(3,FACES(i,3)) X(3,FACES(i,2))],'r');
end;

20
TP_maillage_suite.m Normal file
View file

@ -0,0 +1,20 @@
load donnees;
size(triBis)
% Calcul des faces du maillage à garder
FACES = [triBis(:, [2 3 4]); triBis(:, [1 3 4]); triBis(:, [1 2 4]); triBis(:, [1 2 3])];
size(FACES)
FACES = sortrows(FACES);
rep = sum(FACES(1:end-1, :) == FACES(2:end, :), 2) < 3;
FACES([0; rep] & [rep; 0], :) = [];
fprintf('Calcul du maillage final termine : %d faces. \n',size(FACES,1));
% Affichage du maillage final
figure;
hold on
for i = 1:size(FACES,1)
plot3([X(1,FACES(i,1)) X(1,FACES(i,2))],[X(2,FACES(i,1)) X(2,FACES(i,2))],[X(3,FACES(i,1)) X(3,FACES(i,2))],'r');
plot3([X(1,FACES(i,1)) X(1,FACES(i,3))],[X(2,FACES(i,1)) X(2,FACES(i,3))],[X(3,FACES(i,1)) X(3,FACES(i,3))],'r');
plot3([X(1,FACES(i,3)) X(1,FACES(i,2))],[X(2,FACES(i,3)) X(2,FACES(i,2))],[X(3,FACES(i,3)) X(3,FACES(i,2))],'r');
end;

BIN
donnees.mat Normal file

Binary file not shown.

15
fin.asv Normal file
View file

@ -0,0 +1,15 @@
load donnees;
% Calcul des faces du maillage à garder
% FACES = ...;
% ...
% fprintf('Calcul du maillage final termine : %d faces. \n',size(FACES,1));
% Affichage du maillage final
% figure;
% hold on
% for i = 1:size(FACES,1)
% plot3([X(1,FACES(i,1)) X(1,FACES(i,2))],[X(2,FACES(i,1)) X(2,FACES(i,2))],[X(3,FACES(i,1)) X(3,FACES(i,2))],'r');
% plot3([X(1,FACES(i,1)) X(1,FACES(i,3))],[X(2,FACES(i,1)) X(2,FACES(i,3))],[X(3,FACES(i,1)) X(3,FACES(i,3))],'r');
% plot3([X(1,FACES(i,3)) X(1,FACES(i,2))],[X(2,FACES(i,3)) X(2,FACES(i,2))],[X(3,FACES(i,3)) X(3,FACES(i,2))],'r');
% end;