diff --git a/TP_maillage.m b/TP_maillage.m index 0be8fb5..527bff9 100644 --- a/TP_maillage.m +++ b/TP_maillage.m @@ -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; \ No newline at end of file diff --git a/TP_maillage_suite.asv b/TP_maillage_suite.asv new file mode 100644 index 0000000..3f4f293 --- /dev/null +++ b/TP_maillage_suite.asv @@ -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; diff --git a/TP_maillage_suite.m b/TP_maillage_suite.m new file mode 100644 index 0000000..0edaee6 --- /dev/null +++ b/TP_maillage_suite.m @@ -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; diff --git a/donnees.mat b/donnees.mat new file mode 100644 index 0000000..83cff9d Binary files /dev/null and b/donnees.mat differ diff --git a/fin.asv b/fin.asv new file mode 100644 index 0000000..6eaee7c --- /dev/null +++ b/fin.asv @@ -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;