48 strcpy(chaine,
" Bonne orientation de la peau");
49 if (!bienori) strcpy(chaine,
" Changement d'orientation de la peau");
51 LISTE_MG_TRIANGLE::iterator it;
56 M3D_TRIANGLE* nvtri=
new M3D_TRIANGLE(tri->get_id(),tri->get_lien_topologie(),tri->get_noeud1(),tri->get_noeud2(),tri->get_noeud3(),tri->get_segment1(),tri->get_segment2(),tri->get_segment3(),tri->get_origine());
79 if (tri->get_lien_topologie()==NULL)
106 LISTE_MG_TRIANGLE::iterator it,itp;
126 double *xyz1=tri->get_noeud1()->get_coord();
127 double *xyz2=tri->get_noeud2()->get_coord();
128 double *xyz3=tri->get_noeud3()->get_coord();
134 xyz[0]=(xyz1[0]+xyz2[0]+xyz3[0])/3.;
135 xyz[1]=(xyz1[1]+xyz2[1]+xyz3[1])/3.;
136 xyz[2]=(xyz1[2]+xyz2[2]+xyz3[2])/3.;
138 bool pbdefinition=
true;
139 int tpositif=0,tnegatif=0;
142 if (tri2==tri)
continue;
143 double *xyz1=tri2->get_noeud1()->get_coord();
144 double *xyz2=tri2->get_noeud2()->get_coord();
145 double *xyz3=tri2->get_noeud3()->get_coord();
150 if (fabs(n2*n)<1-eps)
158 double det=
mat.get_determinant();
159 double t1=
mat1.get_determinant()/det;
160 double t2=
mat2.get_determinant()/det;
166 if (t>0) tpositif++;
else tnegatif++;
174 if (fabs(n1g*n2)<eps)
183 if (tnegatif%2==1)
return true;
virtual void change_frontiere(void)
virtual void affiche(char *mess)
virtual void cree_front(MG_VOLUME *mgvol)
MAILLEUR3D_PEAU(MG_MAILLAGE *mgmai, MG_GEOMETRIE *mggeo, MG_VOLUME *mgvol, FCT_TAILLE *fct_taille, bool save)
virtual ~MAILLEUR3D_PEAU()
virtual bool orientation_peau(void)
virtual MG_FRONT_3D * ajouter_front_courant(int numero_front, MG_NOEUD *noeud1, MG_NOEUD *noeud2, MG_NOEUD *noeud3, MG_TRIANGLE *triangle)
MG_MAILLAGE * mg_maillage
virtual void change_origine(int)
MG_TRIANGLE * get_premier_triangle(LISTE_MG_TRIANGLE::iterator &it)
MG_TRIANGLE * get_suivant_triangle(LISTE_MG_TRIANGLE::iterator &it)
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)
virtual void change_dimension_topo_null(int num)
virtual MG_NOEUD * get_noeud3(void)
virtual MG_NOEUD * get_noeud1(void)
virtual MG_NOEUD * get_noeud2(void)
virtual MG_SEGMENT * get_segment2(void)
virtual MG_SEGMENT * get_segment3(void)
virtual MG_SEGMENT * get_segment1(void)
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