42 #include <../../fichier/src/mg_file.h>
65 void REC_SQUELETTE::construire_squelette(
char* nomgestopt,
char* nomgestlisse,
char* nomgestsqout,
char* nompoints,
char* nomcorres,
double coef_dg,
int nummai,
int connecte,
char* param_lissage)
67 double coef_rayon = 1.;
74 std::cout <<
"unite = " << unite << std::endl;
78 if (param_lissage != NULL)
lire_params(param_lissage);
80 std::cout <<
"seuil d'extraction = " << seuil <<std::endl;
81 LISTE_FEM_ELEMENT3::iterator it_tet;
85 if (tet->get_solution() > seuil)
91 LISTE_MG_TETRA::iterator it_tetra;
142 std::vector<TPL_MAP_ENTITE<MG_TRIANGLE*> > vecteur_connexion;
148 if ((lsttri3.
existe(mgtri) == 1) && (lsttri3.
get_nb() != 0))
150 lstno1.
ajouter(mgtri->get_noeud1());
151 lstno1.
ajouter(mgtri->get_noeud2());
152 lstno1.
ajouter(mgtri->get_noeud3());
162 double nb_voisins = mgno->get_lien_triangle()->
get_nb();
163 for (
int j = 0;j<nb_voisins;j++)
165 MG_TRIANGLE* mgtri_i = mgno->get_lien_triangle()->get(j);
172 if (lsttri3.
existe(mgtri2) == 1)
174 if (lstno1.
existe(mgtri2->get_noeud1()) == 0) lstno2.
ajouter(mgtri2->get_noeud1());
175 if (lstno1.
existe(mgtri2->get_noeud2()) == 0) lstno2.
ajouter(mgtri2->get_noeud2());
176 if (lstno1.
existe(mgtri2->get_noeud3()) == 0) lstno2.
ajouter(mgtri2->get_noeud3());
185 while (lstno1.
get_nb() != 0);
186 vecteur_connexion.push_back(liste_voisins);
191 LISTE_MG_TRIANGLE::iterator it_triangle;
199 LISTE_MG_SEGMENT::iterator it_segment;
203 LISTE_MG_NOEUD::iterator it_noeud;
222 MG_FILE gestlisse(nomgestlisse);
237 FILE *points = fopen (nompoints,
"rt");
238 LISTE_MG_NOEUD::iterator it_no;
246 double xmin=1e308,ymin=1e308,zmin=1e308,xmax=-1e308,ymax=-1e308,zmax=-1e308;
250 if(noeud_i->get_x() < xmin) xmin=noeud_i->get_x();
251 if(noeud_i->get_y() < ymin) ymin=noeud_i->get_y();
252 if(noeud_i->get_z() < zmin) zmin=noeud_i->get_z();
253 if(noeud_i->get_x() > xmax) xmax=noeud_i->get_x();
254 if(noeud_i->get_y() > ymax) ymax=noeud_i->get_y();
255 if(noeud_i->get_z() > zmax) zmax=noeud_i->get_z();
260 octet.
initialiser(&lstnod3,1,xmin,ymin,zmin,xmax,ymax,zmax);
263 double longueur = 0.; cpt = 0;
266 double dg = longueur/cpt;
269 if (points==NULL) std::cout <<
"erreur fichier de points" <<std::endl;
273 char* fpt=fgets(chaine,500,points);
277 sscanf(chaine,
"%lf %lf %lf " ,&x,&y,&z);
283 if (lsttetproche.
get_nb() != 0)
292 node->change_nouveau_numero(num);
304 FILE *corres = fopen (nomcorres,
"rt");
309 char* fcrs=fgets(chaine,500,corres);
312 int pt1,pt2,pt3,pt4,pt5;
313 sscanf(chaine,
"%d %d %d %d %d ",&pt1,&pt2,&pt3,&pt4,&pt5);
322 if ((num != 0) && (mgno->get_nouveau_numero() == num)) noo = mgno;
323 if ((pt1 != 0) && (mgno->get_nouveau_numero() == pt1)) no1 = mgno;
324 if ((pt2 != 0) && (mgno->get_nouveau_numero() == pt2)) no2 = mgno;
325 if ((pt3 != 0) && (mgno->get_nouveau_numero() == pt3)) no3 = mgno;
326 if ((pt4 != 0) && (mgno->get_nouveau_numero() == pt4)) no4 = mgno;
327 if ((pt5 != 0) && (mgno->get_nouveau_numero() == pt5)) no5 = mgno;
338 while (!feof(corres));
347 if (mgno->get_lien_segment()->get_nb() == 1) lst.
ajouter(mgno);
350 MG_SEGMENT* seg = mgno->get_lien_segment()->get(0);
365 MG_SEGMENT* seg = mgno->get_lien_segment()->get(0);
374 if (mgnoeud->get_lien_segment()->get_nb() >= 3)
376 for (
int i=0;i<mgnoeud->get_lien_segment()->get_nb();i++)
378 MG_SEGMENT* segi = mgnoeud->get_lien_segment()->get(i);
401 LISTE_MG_NOEUD::iterator it_node;
405 noeuds_modele_lisse.
ajouter(mgnoeud);
408 octree.
initialiser(&noeuds_modele_lisse,1,xmin,ymin,zmin,xmax,ymax,zmax);
416 LISTE_MG_SEGMENT::iterator it_seg;
419 double lmin = 1.e308;
420 double lmin2 = 1.e308;
421 MG_NOEUD* mgnode = mgseg->get_noeud1();
422 MG_NOEUD* mgnode2 = mgseg->get_noeud2();
426 double *coo2 = mgnoeud->get_coord();
428 double dist =
sqrt((coo1[0]-coo2[0])*(coo1[0]-coo2[0])+(coo1[1]-coo2[1])*(coo1[1]-coo2[1])+(coo1[2]-coo2[2])*(coo1[2]-coo2[2]));
429 double dist2 =
sqrt((coo3[0]-coo2[0])*(coo3[0]-coo2[0])+(coo3[1]-coo2[1])*(coo3[1]-coo2[1])+(coo3[2]-coo2[2])*(coo3[2]-coo2[2]));
430 if (dist < lmin) lmin = dist;
431 if (dist2 < lmin2) lmin2 = dist2;
441 double rayon = coef*lmin;
444 double rayon2 = coef*lmin2;
449 if (lstproche.
get_nb() != 0)
452 double P1 = normale1.
get_x()*mgnoeud->get_x() + normale1.
get_y()*mgnoeud->get_y() + normale1.
get_z()*mgnoeud->get_z() + D1;
453 double P2 = normale2.
get_x()*mgnoeud->get_x() + normale2.
get_y()*mgnoeud->get_y() + normale2.
get_z()*mgnoeud->get_z() + D2;
454 if ((P1*P2) > 0) lstasupprimer.
ajouter(mgnoeud);
456 if (lstprochedejautilise.
existe(mgnoeud) == 1) lstasupprimer.
ajouter(mgnoeud);
458 for (
int i=0;i<lstasupprimer.
get_nb();i++)
483 lstprochedejautilise.
ajouter(mgnoeud);
489 if (lstproche.
get_nb() != 0)
493 if (mgnode != NULL)
node = mgnode;
494 else if (mgnode2 != NULL)
node = mgnode2;
499 double produit_scalaire = vec1*vec2;
500 if (produit_scalaire > 1.) produit_scalaire = 1.;
501 if (produit_scalaire < -1.) produit_scalaire = -1.;
502 double *coo1=
node->get_coord();
503 double *coo2=mgnoeud->get_coord();
504 double hypo=
sqrt((coo1[0]-coo2[0])*(coo1[0]-coo2[0])+(coo1[1]-coo2[1])*(coo1[1]-coo2[1])+(coo1[2]-coo2[2])*(coo1[2]-coo2[2]));
505 somme = somme + hypo*
sqrt(1-(produit_scalaire*produit_scalaire));
507 val = somme/lstproche.
get_nb();
509 mgseg->change_solution(unite*val);
521 if ((mgno->get_lien_segment()->get_nb() >= 3))
523 noeuds_intersection.
ajouter(mgno);
524 noeuds_extremite_intersection.
ajouter(mgno);
527 double r_min = 1.e308;
528 double r_max = 1.e-308;
529 for (
int i=0;i<vecteur_connexion.size();i++)
539 lstno3.
ajouter(mgtri->get_noeud1());
540 lstno3.
ajouter(mgtri->get_noeud2());
541 lstno3.
ajouter(mgtri->get_noeud3());
543 double lmin = 1.e308;
549 double *coo1=mgno->get_coord();
550 double *coo2=mgno2->get_coord();
551 double longueur=
sqrt((coo1[0]-coo2[0])*(coo1[0]-coo2[0])+(coo1[1]-coo2[1])*(coo1[1]-coo2[1])+(coo1[2]-coo2[2])*(coo1[2]-coo2[2]));
555 noeud_arrive = mgno2;
561 if ((noeud_arrive != NULL))
570 if (noeuds_extremite.
existe(mgno) == 1) compteur++;
573 noeuds_extremite.
ajouter(noeud_arrive);
574 noeuds_extremite_intersection.
ajouter(noeud_arrive);
578 if ((mgno->get_lien_segment()->get_nb() == 1))
580 noeuds_extremite.
ajouter(mgno);
581 noeuds_extremite_intersection.
ajouter(mgno);
589 double lmin = 1.e308;
596 double *coo2=mgnoeud->get_coord();
597 double dist=
sqrt((coo1[0]-coo2[0])*(coo1[0]-coo2[0])+(coo1[1]-coo2[1])*(coo1[1]-coo2[1])+(coo1[2]-coo2[2])*(coo1[2]-coo2[2]));
601 noeud_temp = mgnoeud;
606 lstexistedeja.
ajouter(noeud_temp);
607 double x = noeud_temp->
get_x();
608 double y = noeud_temp->
get_y();
609 double z = noeud_temp->
get_z();
616 if ((noeud_elu != NULL))
629 if (mgnoeud->get_nouveau_numero() != 0)
631 double x = mgnoeud->get_x();
632 double y = mgnoeud->get_y();
633 double z = mgnoeud->get_z();
636 node->change_nouveau_numero(mgnoeud->get_nouveau_numero());
642 MG_NOEUD* noeud1 = mgtet->get_noeud1();
643 MG_NOEUD* noeud2 = mgtet->get_noeud2();
644 MG_NOEUD* noeud3 = mgtet->get_noeud3();
645 MG_NOEUD* noeud4 = mgtet->get_noeud4();
664 double x = mgnoeud->get_x();
665 double y = mgnoeud->get_y();
666 double z = mgnoeud->get_z();
685 mgsquel->
ecrire(mgseg->get_solution(),i,0);
689 std::cout <<
"Enregistrement squelette 1 " << std::endl;
692 sprintf(nomsortie,
"%s_squelette%d.magic",nomgestsqout,1);
721 node->change_nouveau_numero(mgno->get_nouveau_numero());
726 LISTE_MG_NOEUD::iterator it_noeu;
727 LISTE_MG_SEGMENT::iterator itseg;
735 for (
int i=0;i<mgno->get_lien_segment()->get_nb();i++)
737 MG_SEGMENT* seg_i = mgno->get_lien_segment()->get(i);
749 if (lstno_temp.
get_nb() > 0)
752 if ((mgno->get_x() == mgnoeud->get_x()) && (mgno->get_y() == mgnoeud->get_y()) && (mgno->get_z() == mgnoeud->get_z()))
756 for (
int i=0;i<mgno2->get_lien_segment()->get_nb();i++)
758 MG_SEGMENT* seg_i = mgno2->get_lien_segment()->get(i);
768 if ((mgno3->get_x() == mgnoeud3->get_x()) && (mgno3->get_y() == mgnoeud3->get_y()) && (mgno3->get_z() == mgnoeud3->get_z()))
775 if (mgno->get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node1 = mgnoeud;
776 if (mgno3->get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node2 = mgnoeud;
802 int nbseg = mgno->get_lien_segment()->
get_nb();
803 for (
int i=0;i<nbseg;i++)
805 MG_SEGMENT* mgseg = mgno->get_lien_segment()->get(i);
817 if ((noeuds_extremite_intersection.
existe(mgno3) == 1))
824 if (mgno->get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node1 = mgnoeud;
825 if (mgno3->get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node2 = mgnoeud;
847 int nbseg2 = mgno3->get_lien_segment()->
get_nb();
848 for (
int i=0;i<nbseg2;i++)
850 MG_SEGMENT* mgseg = mgno3->get_lien_segment()->get(i);
860 if (noeuds_seg2.
get_nb() > 0)
864 if (noeuds_extremite_intersection.
existe(mgno4) == 1) {noeud_arrive = mgno4; compteur = 1;}
870 while (compteur == 0);
877 if (noeuds_extremite_intersection.
existe(no1) != 1)
881 if (noeuds_extremite_intersection.
existe(no2) != 1)
898 double solution = 0.;
901 if ((mgsg->get_solution() > 1.e-6))
903 solution = solution + mgsg->get_solution();
910 carac_poutre2.
vide();
917 if (mgno->get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node1 = mgnoeud;
918 if (noeud_arrive->
get_nouveau_numero() == mgnoeud->get_nouveau_numero()) node2 = mgnoeud;
937 if (mgnoeud->get_nouveau_numero() != 0)
939 double x = mgnoeud->get_x();
940 double y = mgnoeud->get_y();
941 double z = mgnoeud->get_z();
943 node->change_nouveau_numero(mgnoeud->get_id());
952 if (mgno->get_nouveau_numero() == mgno2->get_nouveau_numero()) {noeuds_extremite2.
ajouter(mgno2);mgno2->change_solution(mgno->get_solution());}
956 double lmin = 1.e308;
962 double *coo2=mgno2->get_coord();
963 double section=
sqrt((coo1[0]-coo2[0])*(coo1[0]-coo2[0])+(coo1[1]-coo2[1])*(coo1[1]-coo2[1])+(coo1[2]-coo2[2])*(coo1[2]-coo2[2]));
970 if (noeud_elu2 != NULL)
984 if (mgsegment->get_nouveau_numero() != 0)
986 MG_NOEUD* noeud1 = mgsegment->get_noeud1();
987 MG_NOEUD* noeud2 = mgsegment->get_noeud2();
992 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
993 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
999 for (
int i=0;i<vecteur_connexion.size();i++)
1012 if (mgtri->get_nouveau_numero() != 0)
1014 MG_NOEUD* noeud1 = mgtri->get_noeud1();
1015 MG_NOEUD* noeud2 = mgtri->get_noeud2();
1016 MG_NOEUD* noeud3 = mgtri->get_noeud3();
1022 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1023 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1024 if (mgnoeud->get_nouveau_numero() == noeud3->
get_id()) no3 = mgnoeud;
1030 MG_NOEUD* noeud1 = mgtet->get_noeud1();
1031 MG_NOEUD* noeud2 = mgtet->get_noeud2();
1032 MG_NOEUD* noeud3 = mgtet->get_noeud3();
1033 MG_NOEUD* noeud4 = mgtet->get_noeud4();
1041 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1042 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1043 if (mgnoeud->get_nouveau_numero() == noeud3->
get_id()) no3 = mgnoeud;
1044 if (mgnoeud->get_nouveau_numero() == noeud4->
get_id()) no4 = mgnoeud;
1062 mgsquel2->
ecrire(mgseg->get_solution(),l,0);
1066 std::cout <<
"Enregistrement squelette 2 " << std::endl;
1069 sprintf(nomsortie,
"%s_squelette%d.magic",nomgestsqout,2);
1102 double x = mgnoeud->
get_x();
1103 double y = mgnoeud->
get_y();
1104 double z = mgnoeud->
get_z();
1110 node->change_nouveau_numero(mgnoeud->
get_id());
1116 std::string formulation;
1119 if(formulation ==
"N")
1124 if(formulation ==
"I")
1129 if(formulation ==
"F")
1131 std::vector<std::string> listvariable;
1132 std::string formule;
1136 mg_sommet->
ajouter_ccf(type,formule,listvariable);
1146 if ((mgnoeud->get_nouveau_numero() != 0))
1148 double x = mgnoeud->get_x();
1149 double y = mgnoeud->get_y();
1150 double z = mgnoeud->get_z();
1152 node->change_nouveau_numero(mgnoeud->get_id());
1162 for (
int i=0;i<mgno->get_lien_segment()->get_nb();i++)
1164 MG_SEGMENT* mgseg = mgno->get_lien_segment()->get(i);
1169 noeuds_intersection2.
ajouter(mgno);
1176 node->change_nouveau_numero(mgno->get_nouveau_numero());
1177 node->change_solution(mgno->get_solution());
1185 LISTE_MG_NOEUD::iterator itnoeu;
1188 if ((mgno->get_x() == mgnoeud->get_x()) && (mgno->get_y() == mgnoeud->get_y()) && (mgno->get_z() == mgnoeud->get_z()))
1193 for (
int i=0;i<mgno->get_lien_segment()->get_nb();i++)
1195 MG_SEGMENT* seg_i = mgno->get_lien_segment()->get(i);
1209 if (((mgno2->get_x() == mgnoeud2->get_x()) && (mgno2->get_y() == mgnoeud2->get_y()) && (mgno2->get_z() == mgnoeud2->get_z())))
1218 OT_VECTEUR_3D vec1(mgnoeud->get_coord(),mgnoeud2->get_coord());
1220 double longueur_reelle = vec1.
get_longueur()/nbre_temp;
1223 if (nbre <= 1) nbre=2;
1224 for (
int k=1;k<nbre;k++)
1228 double x = mgnoeud->get_x()+k*(mgnoeud2->get_x()-mgnoeud->get_x())/nbre;
1229 double y = mgnoeud->get_y()+k*(mgnoeud2->get_y()-mgnoeud->get_y())/nbre;
1230 double z = mgnoeud->get_z()+k*(mgnoeud2->get_z()-mgnoeud->get_z())/nbre;
1239 double x = mgnoeud->get_x()+k*(mgnoeud2->get_x()-mgnoeud->get_x())/nbre;
1240 double y = mgnoeud->get_y()+k*(mgnoeud2->get_y()-mgnoeud->get_y())/nbre;
1241 double z = mgnoeud->get_z()+k*(mgnoeud2->get_z()-mgnoeud->get_z())/nbre;
1274 for (
int i=0;i<mgno->get_lien_segment()->get_nb();i++)
1276 MG_SEGMENT* seg_i = mgno->get_lien_segment()->get(i);
1288 if (lstno_temp.
get_nb() > 0)
1291 if ((mgno->get_x() == mgnoeud->get_x()) && (mgno->get_y() == mgnoeud->get_y()) && (mgno->get_z() == mgnoeud->get_z()))
1295 for (
int i=0;i<mgno2->get_lien_segment()->get_nb();i++)
1297 MG_SEGMENT* seg_i = mgno2->get_lien_segment()->get(i);
1307 if ((mgno3->get_x() == mgnoeud3->get_x()) && (mgno3->get_y() == mgnoeud3->get_y()) && (mgno3->get_z() == mgnoeud3->get_z()))
1316 OT_VECTEUR_3D vec1(mgnoeud->get_coord(),mgnoeud3->get_coord());
1318 double longueur_reelle = vec1.
get_longueur()/nbre_temp;
1321 if (nbre <= 1) nbre=2;
1322 for (
int k=1;k<nbre;k++)
1326 double x = mgnoeud->get_x()+k*(mgnoeud3->get_x()-mgnoeud->get_x())/nbre;
1327 double y = mgnoeud->get_y()+k*(mgnoeud3->get_y()-mgnoeud->get_y())/nbre;
1328 double z = mgnoeud->get_z()+k*(mgnoeud3->get_z()-mgnoeud->get_z())/nbre;
1337 double x = mgnoeud->get_x()+k*(mgnoeud3->get_x()-mgnoeud->get_x())/nbre;
1338 double y = mgnoeud->get_y()+k*(mgnoeud3->get_y()-mgnoeud->get_y())/nbre;
1339 double z = mgnoeud->get_z()+k*(mgnoeud3->get_z()-mgnoeud->get_z())/nbre;
1367 for (
int i=0;i<mgno->get_lien_segment()->get_nb();i++)
1369 MG_SEGMENT* seg_i = mgno->get_lien_segment()->get(i);
1380 if (lstno_temp.
get_nb() > 0)
1383 if ((mgno->get_x() == mgnoeud->get_x()) && (mgno->get_y() == mgnoeud->get_y()) && (mgno->get_z() == mgnoeud->get_z()))
1387 for (
int i=0;i<mgno2->get_lien_segment()->get_nb();i++)
1389 MG_SEGMENT* seg_i = mgno2->get_lien_segment()->get(i);
1401 if (lstno_temp1.
get_nb() > 0)
1406 for (
int i=0;i<mgno3->get_lien_segment()->get_nb();i++)
1408 MG_SEGMENT* seg_j = mgno3->get_lien_segment()->get(i);
1416 if (lstno_temp2.
get_nb() > 0)
1419 if ((mgno4->get_x() == mgnoeud4->get_x()) && (mgno4->get_y() == mgnoeud4->get_y()) && (mgno4->get_z() == mgnoeud4->get_z()))
1428 OT_VECTEUR_3D vec1(mgnoeud->get_coord(),mgnoeud4->get_coord());
1430 double longueur_reelle = vec1.
get_longueur()/nbre_temp;
1433 if (nbre <= 1) nbre=2;
1434 for (
int k=1;k<nbre;k++)
1438 double x = mgnoeud->get_x()+k*(mgnoeud4->get_x()-mgnoeud->get_x())/nbre;
1439 double y = mgnoeud->get_y()+k*(mgnoeud4->get_y()-mgnoeud->get_y())/nbre;
1440 double z = mgnoeud->get_z()+k*(mgnoeud4->get_z()-mgnoeud->get_z())/nbre;
1449 double x = mgnoeud->get_x()+k*(mgnoeud4->get_x()-mgnoeud->get_x())/nbre;
1450 double y = mgnoeud->get_y()+k*(mgnoeud4->get_y()-mgnoeud->get_y())/nbre;
1451 double z = mgnoeud->get_z()+k*(mgnoeud4->get_z()-mgnoeud->get_z())/nbre;
1496 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1497 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1500 if ((no1 != NULL) && (no2 != NULL) && (no2 != NULL))
1509 std::string formulation;
1513 if (formulation ==
"N")
1518 if (formulation ==
"I")
1523 if (formulation ==
"F")
1525 std::vector<std::string> listvariable;
1526 std::string formule;
1537 if (lstseg2.
existe(mgsegment) != 1)
1539 MG_NOEUD* noeud1 = mgsegment->get_noeud1();
1540 MG_NOEUD* noeud2 = mgsegment->get_noeud2();
1545 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1546 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1572 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1573 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1574 if (mgnoeud->get_nouveau_numero() == noeud3->
get_id()) no3 = mgnoeud;
1576 if ((no1 != NULL) && (no2 != NULL) && (no2 != NULL))
1586 std::string formulation;
1590 if (formulation ==
"N")
1595 if (formulation ==
"I")
1600 if (formulation ==
"F")
1602 std::vector<std::string> listvariable;
1603 std::string formule;
1615 for (
int i=0;i<vecteur_connexion.size();i++)
1628 if (mgtri->get_nouveau_numero() != 0)
1630 MG_NOEUD* noeud1 = mgtri->get_noeud1();
1631 MG_NOEUD* noeud2 = mgtri->get_noeud2();
1632 MG_NOEUD* noeud3 = mgtri->get_noeud3();
1638 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1639 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1640 if (mgnoeud->get_nouveau_numero() == noeud3->
get_id()) no3 = mgnoeud;
1646 MG_NOEUD* noeud1 = mgtet->get_noeud1();
1647 MG_NOEUD* noeud2 = mgtet->get_noeud2();
1648 MG_NOEUD* noeud3 = mgtet->get_noeud3();
1649 MG_NOEUD* noeud4 = mgtet->get_noeud4();
1657 if (mgnoeud->get_nouveau_numero() == noeud1->
get_id()) no1 = mgnoeud;
1658 if (mgnoeud->get_nouveau_numero() == noeud2->
get_id()) no2 = mgnoeud;
1659 if (mgnoeud->get_nouveau_numero() == noeud3->
get_id()) no3 = mgnoeud;
1660 if (mgnoeud->get_nouveau_numero() == noeud4->
get_id()) no4 = mgnoeud;
1678 LISTE_MG_SEGMENT::iterator it_mgseg;
1681 mgsquel3->
ecrire(coef_rayon*mgseg->get_solution(),t,0);
1688 sprintf(nomsortie,
"%s_squelette%d.magic",nomgestsqout,3);
1690 std::cout <<
"Enregistrement squelette 3 " << std::endl;
1693 double volume_reconstruit = 0.;
1694 LISTE_MG_SEGMENT::iterator it_mgeg;
1697 volume_reconstruit = volume_reconstruit + M_PI*coef_rayon*mgseg->get_solution()*coef_rayon*mgseg->get_solution()*unite*mgseg->get_longueur();
1698 std::cout <<
"volume de design reconstruit en m3 = " << volume_reconstruit << std::endl;