60 std::map<MG_ELEMENT_TOPOLOGIQUE*,MG_ELEMENT_TOPOLOGIQUE*>::iterator it;
64 ele->get_topologie_sousjacente(&lst);
68 for (
int i=0;i<nb_face;i++)
72 if (lst.
existe(mgface)==0)
continue;
107 for (
int i=0;i<lsttriaffectecoin.
get_nb();i++)
120 int nbpolesursommet=liste_pole_sommet.
get_nb();
122 sprintf(message,
" face comportant %d pole dont %d pole sur un sommet",mgface->
get_nb_pole(),nbpolesursommet);
124 std::vector<double> liste_pole;
126 for (
int i=0;i<liste_pole.size();i=i+2)
128 double uv[3]={liste_pole[i],liste_pole[i+1],0.};
131 double tenseur_metrique[9];
133 double dcible=1./
sqrt(tenseur_metrique[0]);
151 for (
int j=0;j<liste_trouvee.
get_nb();j++)
154 if (liste_supprimer.
existe(ft))
continue;
176 uvpole[0]=nopo->
get_u();
177 uvpole[1]=nopo->
get_v();
183 double cs=(-1)*(n1n2*n2s);
186 double sn=(-1)*(n*n2s);
187 double angle=
acos(cs);
188 if (sn<0) angle=-angle;
189 if (angle<1e-6) angle=angle+2*M_PI;
190 int nbtri=(int)(angle*1.01/M_PI*3.);
196 for (
int i=0;i<nbtri;i++)
203 if (ierr==0) uv[(num+1)%2]=uv[(num+1)%2]-(uv[(num+1)%2]-uvpole[(num+1)%2])*0.5;
206 for (
int i=0;i<nbtri-1;i++)
208 uv[num]=(i+1)*1.0/nbtri*angle;
227 double sens=(w&uvn1n2)*uvn1pole;
229 if (sens>0) ftppcourant=ftss;
230 for (
int i=0;i<nbtri;i++)
233 insere_triangle(mgface,nopo,tabseg[i]->get_noeud1(),tabseg[i]->get_noeud2());
235 insere_triangle(mgface,nopo,tabseg[i]->get_noeud2(),tabseg[i]->get_noeud1());
277 metrique->
ajuste_distance_metrique(mgface,u1,v1,u2,v2,u,v,
sqrt(3)/3.,0,0,
pas);
281 double uvn1[3]={un1,v,0.};
282 double uvn2[3]={un2,v,0.};
283 double uvn3[3]={un3,v,0.};
284 double xyzn1[3],xyzn2[3],xyzn3[3];
295 while (ierr1*ierr2*ierr3==0)
319 double sens=(w&n1n2)*n1pole;
356 metrique->
ajuste_distance_metrique(mgface,u1,v1,u2,v2,u,v,
sqrt(3)/3.,0,0,
pas);
360 double uvn1[3]={u,vn1,0.};
361 double uvn2[3]={u,vn2,0.};
362 double uvn3[3]={u,vn3,0.};
363 double xyzn1[3],xyzn2[3],xyzn3[3];
374 while (ierr1*ierr2*ierr3==0)
398 double sens=(w&n1n2)*n1pole;
436 for (
int i=0;i<nbboucle;i++)
440 for (
int j=0;j<nbare;j++)
453 no=(
MG_NOEUD*)som->get_lien_maillage()->get(i);
460 for (
int i=0;i<nbtri;i++)
469 for (
int i=0;i<nbtri;i++)
490 if (tri1!=trivoi) autretri=tri1;
509 if (normal*n1n4<0.0001) nqual1=-nqual1;
518 if (normal2*n2n3<0.0001) nqual2=-nqual2;
519 if (nqual1<1e-4)
continue;
520 if (nqual2<1e-4)
continue;
542 for (
int i=0;i<nb_boucle;i++)
546 for (
int j=0;j<nb_coarete;j++)
551 for (
int k=0;k<nb_segment;k++)
556 if (mgsegtemp==NULL)
continue;
623 BOITE_3D boite=boiteface&boitemetrique;
635 for (
int j=0;j<nb_segment;j++)
647 for (
int iboucle=0;iboucle<nb_boucle;iboucle++)
661 if (noeudtemp==NULL) numnoeud++;
else bon_noeud=1;
664 MG_NOEUD* noeud_courant=noeud_de_depart;
666 unsigned int nbcoaretetraite=0;
679 if (noeudtemp==NULL) numnoeud++;
else bon_noeud=1;
682 int passe_aretefermee=0;
696 if ((mgsegment->
get_noeud1()==noeud_courant) || (mgsegment->
get_noeud2()==noeud_courant)) mgsegment_depart1=mgsegment;
699 while (mgsegment_depart1==NULL);
702 if ((mgsegment->
get_noeud1()==noeud_courant) || (mgsegment->
get_noeud2()==noeud_courant)) mgsegment_depart2=mgsegment;
705 while (mgsegment_depart2==NULL);
715 if (vecteur1*tangeante>0.)
717 mgsegment=mgsegment_depart1;
718 noeud_suivant=noeud1_2;
722 mgsegment=mgsegment_depart2;
723 noeud_suivant=noeud2_2;
730 front_precedent=front;
731 noeud_courant=noeud_suivant;
732 segment_courant=mgsegment;
742 if (mgsegment!=segment_courant)
753 front_precedent=front;
754 noeud_courant=noeud_suivant;
755 segment_courant=mgsegment;
762 while (noeud_courant!=noeud_d_arrivee);
774 for (
int i=0;i<nbcoaretesuivante;i++)
780 if (mgsommet==mgsommet_suivant)
785 mgcoaretetmp=mgcoarete_suivante;
805 OT_VECTEUR_3D vec1(-dir1[0]*sens1,-dir1[1]*sens1,-dir1[2]*sens1);
806 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
811 double sn=-1*(vec2*nor);
813 if (sn<0) angleref=-angleref;
814 if (angleref<0) angleref=angleref+2.*M_PI;
820 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
823 double sn=-1*(vec2*nor);
825 if (sn<0) angleref2=-angleref2;
826 if (angleref<0) angleref2=angleref2+2.*M_PI;
848 double angle=
acos(cs);
849 if (sn<0) angle=-angle;
850 if (angle<0) angle=angle+2.*M_PI;
855 mgcoaretetmp=mgcoarete_suivante;
857 else if ((angle<1e-10) && (angleref<1e-10))
861 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
864 double sn=-1*(vec2*nor);
866 if (sn<0) angle=-angle;
867 if (angle<0) angle=angle+2.*M_PI;
869 mgcoaretetmp=mgcoarete_suivante;
877 mgcoarete=mgcoaretetmp;
879 while ((noeud_courant!=noeud_de_depart) || (nbcoaretetraite!=nbcoaretetotale));
888 long Nb_iteration_max_mailleur2d = (long)
param.
get_valeur((
char*)
"Nb_iteration_max_mailleur2d");
891 if(
compteur>Nb_iteration_max_mailleur2d)
893 std::cerr <<
"*** MAILLEUR2D::progresse_front : Nb_iteration_max_mailleur2d atteint ! ***" << std::endl;
937 double pcp=(-1)*(n1n2*pn1);
938 double psp=(-1)*(n*pn1);
940 if ((pcp>=0.1786481777)&&(psp>eps)) anglep=1;
else anglep=0;
947 double pcs=(-1.)*(n1n2*n2s);
950 if ((pcs>=0.1786481777)&&(pss>eps)) angles=1;
else angles=0;
951 int type_cas_front[7];
986 int nbseg=lstseg->
get_nb();
987 for (
int i=0;i<nbseg;i++)
1023 xyz[0]=0.5*(xyz1[0]+xyz2[0]);
1024 xyz[1]=0.5*(xyz1[1]+xyz2[1]);
1025 xyz[2]=0.5*(xyz1[2]+xyz2[2]);
1031 double u=0.5*(uv1[0]+uv2[0]);
1032 double v=0.5*(uv1[1]+uv2[1]);
1033 int nb_entite=liste_trouvee.
get_nb();
1041 double angle1,angle2;
1042 for(
int j=0;j<nb_entite;j++)
1047 uvfront[0]=noeudfront->
get_u();
1048 uvfront[1]=noeudfront->
get_v();
1052 double *xyzfront=noeudfront->
get_coord();
1057 if (dist<1e-5*rayonrecherche)
1064 double uvfrontautre[2];
1065 uvfrontautre[0]=noeudfrontautre->
get_u();
1066 uvfrontautre[1]=noeudfrontautre->
get_v();
1069 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1070 vecteur_baseu.
norme();
1071 vecteur_front.
norme();
1072 double cosangle=vecteur_baseu*vecteur_front;
1073 if (cosangle>1.) cosangle=1.;
1074 if (cosangle<-1.) cosangle=(-1.);
1075 angle1=
acos(cosangle);
1081 double uvfrontautre[2];
1082 uvfrontautre[0]=noeudfrontautre->
get_u();
1083 uvfrontautre[1]=noeudfrontautre->
get_v();
1086 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1087 vecteur_baseu.
norme();
1088 vecteur_front.
norme();
1089 double cosangle=vecteur_baseu*vecteur_front;
1090 if (cosangle>1.) cosangle=1.;
1091 if (cosangle<-1.) cosangle=(-1.);
1092 double angle=
acos(cosangle);
1093 if (angle<angle1) {angle1=angle;ref1=ft;}
1100 if (dist<1e-5*rayonrecherche)
1107 double uvfrontautre[2];
1108 uvfrontautre[0]=noeudfrontautre->
get_u();
1109 uvfrontautre[1]=noeudfrontautre->
get_v();
1112 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1113 vecteur_baseu.
norme();
1114 vecteur_front.
norme();
1115 double cosangle=vecteur_baseu*vecteur_front;
1116 if (cosangle>1.) cosangle=1.;
1117 if (cosangle<-1.) cosangle=(-1.);
1118 angle2=
acos(cosangle);
1124 double uvfrontautre[2];
1125 uvfrontautre[0]=noeudfrontautre->
get_u();
1126 uvfrontautre[1]=noeudfrontautre->
get_v();
1129 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1130 vecteur_baseu.
norme();
1131 vecteur_front.
norme();
1132 double cosangle=vecteur_baseu*vecteur_front;
1133 if (cosangle>1.) cosangle=1.;
1134 if (cosangle<-1.) cosangle=(-1.);
1135 double angle=
acos(cosangle);
1136 if (angle<angle2) {angle1=angle;ref2=ft;}
1153 if (ref2!=NULL) noeud2=ref2->get_noeud2();
1197 int nbtri=lsttri->
get_nb();
1198 for (
int i=0;i<nbtri;i++)
1244 double u=0.3333333333333333*(uv1[0]+uv2[0]+uv3[0]);
1245 double v=0.3333333333333333*(uv1[1]+uv2[1]+uv3[1]);
1246 double rayonrecherche1=
sqrt((u-uv1[0])*(u-uv1[0])+(v-uv1[1])*(v-uv1[1]))*2.;
1247 double rayonrecherche2=
sqrt((u-uv2[0])*(u-uv2[0])+(v-uv2[1])*(v-uv2[1]))*2.;
1248 double rayonrecherche3=
sqrt((u-uv3[0])*(u-uv3[0])+(v-uv3[1])*(v-uv3[1]))*2.;
1249 double rayonrecherche=rayonrecherche1;
1250 if (rayonrecherche2>rayonrecherche) rayonrecherche=rayonrecherche2;
1251 if (rayonrecherche3>rayonrecherche) rayonrecherche=rayonrecherche3;
1256 xyz[0]=0.333333333333333333333*(xyz1[0]+xyz2[0]+xyz3[0]);
1257 xyz[1]=0.333333333333333333333*(xyz1[1]+xyz2[1]+xyz3[1]);
1258 xyz[2]=0.333333333333333333333*(xyz1[2]+xyz2[2]+xyz3[2]);
1263 rayonrecherche=std::max(rayonrecherche,vec3.
get_longueur())*1.1;
1266 int nb_entite=liste_trouvee.
get_nb();
1276 double angle1,angle2,angle3;
1277 for(
int j=0;j<nb_entite;j++)
1282 uvfront[0]=noeudfront->
get_u();
1283 uvfront[1]=noeudfront->
get_v();
1288 double *xyzfront=noeudfront->
get_coord();
1292 if (dist<1e-5*rayonrecherche)
1299 double uvfrontautre[2];
1300 uvfrontautre[0]=noeudfrontautre->
get_u();
1301 uvfrontautre[1]=noeudfrontautre->
get_v();
1304 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1305 vecteur_baseu.
norme();
1306 vecteur_front.
norme();
1307 double cosangle=vecteur_baseu*vecteur_front;
1308 if (cosangle>1.) cosangle=1.;
1309 if (cosangle<-1.) cosangle=(-1.);
1310 angle1=
acos(cosangle);
1313 double sangle=vecteur_basev*vecteur_front;
1314 if (sangle<0.) angle1=2*M_PI-angle1;
1320 double uvfrontautre[2];
1321 uvfrontautre[0]=noeudfrontautre->
get_u();
1322 uvfrontautre[1]=noeudfrontautre->
get_v();
1325 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1326 vecteur_baseu.
norme();
1327 vecteur_front.
norme();
1328 double cosangle=vecteur_baseu*vecteur_front;
1329 if (cosangle>1.) cosangle=1.;
1330 if (cosangle<-1.) cosangle=(-1.);
1331 double angle=
acos(cosangle);
1334 double sangle=vecteur_basev*vecteur_front;
1335 if (sangle<0.) angle=2*M_PI-angle;
1336 if (angle<angle1) {angle1=angle;ref1=ft;}
1344 if (dist<1e-5*rayonrecherche)
1351 double uvfrontautre[2];
1352 uvfrontautre[0]=noeudfrontautre->
get_u();
1353 uvfrontautre[1]=noeudfrontautre->
get_v();
1356 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1357 vecteur_baseu.
norme();
1358 vecteur_front.
norme();
1359 double cosangle=vecteur_baseu*vecteur_front;
1360 if (cosangle>1.) cosangle=1.;
1361 if (cosangle<-1.) cosangle=(-1.);
1362 angle2=
acos(cosangle);
1365 double sangle=vecteur_basev*vecteur_front;
1366 if (sangle<0.) angle2=2*M_PI-angle2;
1372 double uvfrontautre[2];
1373 uvfrontautre[0]=noeudfrontautre->
get_u();
1374 uvfrontautre[1]=noeudfrontautre->
get_v();
1377 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1378 vecteur_baseu.
norme();
1379 vecteur_front.
norme();
1380 double cosangle=vecteur_baseu*vecteur_front;
1381 if (cosangle>1.) cosangle=1.;
1382 if (cosangle<-1.) cosangle=(-1.);
1383 double angle=
acos(cosangle);
1386 double sangle=vecteur_basev*vecteur_front;
1387 if (sangle<0.) angle=2*M_PI-angle;
1388 if (angle<angle2) {angle2=angle;ref2=ft;}
1396 if (dist<1e-5*rayonrecherche)
1403 double uvfrontautre[2];
1404 uvfrontautre[0]=noeudfrontautre->
get_u();
1405 uvfrontautre[1]=noeudfrontautre->
get_v();
1408 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1409 vecteur_baseu.
norme();
1410 vecteur_front.
norme();
1411 double cosangle=vecteur_baseu*vecteur_front;
1412 if (cosangle>1.) cosangle=1.;
1413 if (cosangle<-1.) cosangle=(-1.);
1414 angle3=
acos(cosangle);
1417 double sangle=vecteur_basev*vecteur_front;
1418 if (sangle<0.) angle3=2*M_PI-angle3;
1424 double uvfrontautre[2];
1425 uvfrontautre[0]=noeudfrontautre->
get_u();
1426 uvfrontautre[1]=noeudfrontautre->
get_v();
1429 OT_VECTEUR_3D vecteur_front(ufrontautre-ufront,vfrontautre-vfront,0.);
1430 vecteur_baseu.
norme();
1431 vecteur_front.
norme();
1432 double cosangle=vecteur_baseu*vecteur_front;
1433 if (cosangle>1.) cosangle=1.;
1434 if (cosangle<-1.) cosangle=(-1.);
1435 double angle=
acos(cosangle);
1438 double sangle=vecteur_basev*vecteur_front;
1439 if (sangle<0.) angle=2*M_PI-angle;
1440 if (angle<angle3) {angle3=angle;ref3=ft;}
1458 if (ref2!=NULL) noeud2=ref2->get_noeud2();
1467 if (ref3!=NULL) noeud3=ref3->get_noeud2();
1479 int seg1=1,seg2=1,seg3=1;
1485 int segtotal=seg1+seg2+seg3;
1513 ref2->changer_front_suivant(ft2);
1526 ref3->changer_front_suivant(ft3);
1537 front1=ref1;front2=ref3;front3=ref2;
1538 segcre1=mgsegment1;segcre2=mgsegment2;
1542 front1=ref2;front2=ref1;front3=ref3;
1543 segcre1=mgsegment2;segcre2=mgsegment3;
1547 front1=ref3;front2=ref2;front3=ref1;
1548 segcre1=mgsegment3;segcre2=mgsegment1;
1577 front1=ref1;front2=ref3;front3=ref2;
1582 front1=ref2;front2=ref1;front3=ref3;
1587 front1=ref3;front2=ref2;front3=ref1;
1636 FRONT::iterator i=front.begin();
1637 for (
unsigned long j=0;j<num;j++) i++;
1638 return ((*i).second);
1644 return front.size();
1665 while (ft!=(*j).second) j++;
1675 while (ft!=(*j).second) j++;
1676 front_original.erase(j);
1722 no->change_solution(i);
1724 for (
int i=0;i<lstseg.
get_nb();i++)
1737 printf(
"----------------------------------\n");
void change_grosseur(double f)
virtual void evaluer(double *param, double *resultat)=0
virtual int ajuste_distance_metrique(double *xyz1, double *xyz2, double longueur_desiree, int pas=32)
virtual BOITE_3D get_boite_3D(void)=0
fonction_affiche * affiche2
virtual void active_affichage(fonction_affiche *fonc)
virtual void affiche(char *mess)
virtual void optimise(MG_FACE *mgface)
MG_MAILLAGE * mg_maillage
void insere_contrainte_triangle(MG_FACE *mgface, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lsttri)
MG_FRONT_2D * ajouter_front(FRONT &front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_SEGMENT *segment)
MG_GEOMETRIE * mg_geometrie
OT_DECALAGE_PARAMETRE * decalage
void cree_ntree(MG_FACE *mgface)
TPL_LISTE_ENTITE< MG_NOEUD * > noeud_frontiere
void supprimer_front(MG_FRONT_2D *ft)
int get_niveau_optimisation(void)
std::multimap< double, MG_FRONT_2D *, std::less< double > > FRONT
void initialise_frontiere(MG_FACE *mgface)
void echange_de_front(FRONT &front_original, FRONT &front_destination, MG_FRONT_2D *ft)
int maille(MG_GROUPE_TOPOLOGIQUE *mggt=NULL)
MAILLEUR2D(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, FCT_TAILLE *fct_taille, MG_FACE *mgface=NULL)
int traite_front(int type_front, MG_FACE *mgface, MG_FRONT_2D *ftp, MG_FRONT_2D *ft, MG_FRONT_2D *fts)
TPL_LISTE_ENTITE< MG_SEGMENT * > segment_frontiere
unsigned int get_nb_front(FRONT &front)
MG_FRONT_2D * get_front(FRONT &front, unsigned int num)
void traite_pole(MG_FACE *mgface, TPL_MAP_ENTITE< MG_SOMMET * > &liste_pole)
void insere_contrainte_segment(MG_FACE *mgface, TPL_LISTE_ENTITE< MG_SEGMENT * > *lstseg)
void enregistre_front(char *nom, int dimension=3)
int insere_segment(MG_FACE *mgface, MG_SEGMENT **nv_segment, MG_NOEUD *noeud1, MG_NOEUD *noeud2, int type_verication)
void change_niveau_optimisation(int num)
void initialise_front(MG_FACE *mgface, TPL_MAP_ENTITE< MG_SOMMET * > &liste_pole)
TPL_NTREE_FCT< MG_SEGMENT *, FCT_TAILLE > * ntree_de_segment
TPL_OCTREE< MG_FRONT_2D *, MG_NOEUD * > * ntree_de_front
int progresse_front(MG_FACE *mgface)
void verifie_coin_sommet(MG_FACE *mgface, TPL_LISTE_ENTITE< MG_TRIANGLE * > *lstaffectecoin)
MG_TRIANGLE * insere_triangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3)
virtual double get_tmax(void)
virtual double get_tmin(void)
virtual void deriver(double t, double *xyz)
virtual class MG_COSOMMET * get_cosommet2(void)
virtual class MG_COSOMMET * get_cosommet1(void)
virtual MG_COARETE * get_mg_coarete(int num)
virtual int get_nb_mg_coarete(void)
virtual MG_ARETE * get_arete(void)
virtual int get_orientation(void)
virtual MG_SOMMET * get_sommet(void)
virtual int get_nouveau_numero(void)
virtual double get_solution(int num=0)
virtual void change_origine(int)
MG_ELEMENT_TOPOLOGIQUE * get_lien_topologie(void)
virtual void change_nouveau_numero(int num)
virtual int get_origine(void)
virtual TPL_SET< MG_ELEMENT_MAILLAGE * > * get_lien_maillage(void)
void gmsh_avec_correspondance(class FEM_MAILLAGE *mai, std::string fichier)
virtual int get_nb_pole(void)
virtual void inverser(double *uv, double *xyz, double precision=1e-6)
virtual void evaluer(double *uv, double *xyz)
virtual MG_SURFACE * get_surface(void)
virtual MG_BOUCLE * get_mg_boucle(int num)
virtual void calcul_normale_unitaire(double *uv, double *normale)
virtual BOITE_3D get_boite_3D(void)
virtual int get_nb_mg_boucle(void)
virtual void get_liste_pole_uv(std::vector< double > *liste_pole_uv, double eps)
void changer_front_suivant(MG_FRONT_2D *front)
MG_NOEUD * get_noeud1(void)
MG_NOEUD * get_noeud2(void)
void incremente_ifail(void)
MG_SEGMENT * get_segment(void)
MG_FRONT_2D * get_front_suivant(void)
static void initialise_compteur_id(void)
void changer_front_precedent(MG_FRONT_2D *front)
MG_FRONT_2D * get_front_precedent(void)
double get_valeur_precision(void)
unsigned int get_nb_mg_face(void)
MG_FACE * get_mg_face(unsigned int num)
virtual void enregistrer(std::ostream &o, double version=MAGIC_VERSION_FICHIER_DOUBLE)
int ajouter_mg_maillage(MG_MAILLAGE *mgmai)
virtual MG_ELEMENT_TOPOLOGIQUE * get_premier(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
virtual MG_ELEMENT_TOPOLOGIQUE * get_suivant(std::map< class MG_ELEMENT_TOPOLOGIQUE *, MG_ELEMENT_TOPOLOGIQUE * >::iterator &it)
MG_TRIANGLE * get_mg_triangleid(unsigned long num)
MG_NOEUD * get_mg_noeudid(unsigned long num)
int supprimer_mg_triangleid(unsigned long num)
MG_TRIANGLE * ajouter_mg_triangle(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, class MG_NOEUD *mgnoeud3, int origine, unsigned long num=0)
MG_SEGMENT * get_mg_segmentid(unsigned long num)
MG_GESTIONNAIRE * get_gestionnaire(void)
MG_SEGMENT * get_mg_segment(unsigned int num)
MG_SEGMENT * ajouter_mg_segment(MG_ELEMENT_TOPOLOGIQUE *topo, class MG_NOEUD *mgnoeud1, class MG_NOEUD *mgnoeud2, int origine, double longue=0.0, unsigned long num=0)
MG_NOEUD * ajouter_mg_noeud(MG_ELEMENT_TOPOLOGIQUE *topo, double xx, double yy, double zz, int origine, unsigned long num=0)
virtual void change_coord(double *coo)
virtual double get_v(void)
virtual double * get_coord(void)
virtual double get_z(void)
virtual double get_u(void)
virtual double get_y(void)
virtual void change_u(double uu)
virtual double get_x(void)
TPL_LISTE_ENTITE< class MG_TRIANGLE * > * get_lien_triangle(void)
virtual void change_v(double vv)
virtual void evaluer(double *xyz)=0
virtual MG_NOEUD * get_noeud1(void)
virtual double get_longueur(void)
virtual MG_NOEUD * get_noeud2(void)
virtual MG_POINT * get_point(void)
virtual int est_periodique_u(void)=0
virtual double get_periode_u(void)=0
virtual int est_periodique_v(void)=0
virtual double get_periode_v(void)=0
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
static double qualite_triangle(double *noeud1, double *noeud2, double *noeud3)
double decalage_parametre_v(double par, double dpar)
double calcul_decalage_parametre_v(double par)
double calcul_decalage_parametre_u(double par)
double decalage_parametre_u(double par, double dpar)
double get_valeur(std::string chaine, int num=0)
virtual void change_x(double x)
virtual void change_z(double z)
virtual double get_longueur(void) const
virtual void change_y(double y)
virtual void ajouter(X x)
virtual int est_dans_la_liste(X x)
virtual X get_premier(ITERATEUR &it)
virtual X get_suivant(ITERATEUR &it)
virtual void ajouter(X x)
std::map< unsigned long, X, std::less< unsigned long > >::iterator ITERATEUR
virtual void initialiser(B &fonction, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
virtual void inserer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
virtual void supprimer(BOITE_3D &boite, A a, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
virtual void initialiser(TPL_LISTE_ENTITE< CONDITION > *lst_entite, int nombre, double xmin, double ymin, double zmin, double xmax, double ymax, double zmax)
virtual void rechercher(BOITE_3D &boite, TPL_MAP_ENTITE< A > &liste_entite_trouve, TPL_CELLULE_OCTREE< A, CONDITION > *cellule)
X get_premier(ITERATEUR &it)
X get_suivant(ITERATEUR &it)
double2 sqrt(double2 &val)
double2 acos(double2 &val)