69 return TYPE_ELEMENT_COTOPOLOGIQUE::BOUCLE;
91 std::vector<MG_COARETE*>::iterator i;
120 for (
int i=0;i<nb;i++)
126 if (mgsommet==mgsommet_suivant)
131 mgcoaretetmp=mgcoarete_suivante;
151 OT_VECTEUR_3D vec1(-dir1[0]*sens1,-dir1[1]*sens1,-dir1[2]*sens1);
152 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
157 double sn=-1*(vec2*nor);
159 if (sn<0) angleref=-angleref;
160 if (angleref<0) angleref=angleref+2.*M_PI;
166 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
169 double sn=-1*(vec2*nor);
171 if (sn<0) angleref2=-angleref2;
172 if (angleref<0) angleref2=angleref2+2.*M_PI;
194 double angle=
acos(cs);
195 if (sn<0) angle=-angle;
196 if (angle<0) angle=angle+2.*M_PI;
201 mgcoaretetmp=mgcoarete_suivante;
203 else if ((angle<1e-10) && (angleref<1e-10))
207 OT_VECTEUR_3D vec2(dir2[0]*sens2,dir2[1]*sens2,dir2[2]*sens2);
210 double sn=-1*(vec2*nor);
212 if (sn<0) angle=-angle;
213 if (angle<0) angle=angle+2.*M_PI;
215 mgcoaretetmp=mgcoarete_suivante;
222 coaretesuivante=mgcoaretetmp;
223 return coaretesuivante;
239 for (
int i=0;i<nb;i++)
245 if (mgsommet==mgsommet_suivant)
250 mgcoaretetmp=mgcoarete_suivante;
270 OT_VECTEUR_3D vec1(dir1[0]*sens1,dir1[1]*sens1,dir1[2]*sens1);
271 OT_VECTEUR_3D vec2(-dir2[0]*sens2,-dir2[1]*sens2,-dir2[2]*sens2);
276 double sn=-1*(vec2*nor);
278 if (sn<0) angleref=-angleref;
279 if (angleref<0) angleref=angleref+2.*M_PI;
285 OT_VECTEUR_3D vec2(-dir2[0]*sens2,-dir2[1]*sens2,-dir2[2]*sens2);
288 double sn=-1*(vec2*nor);
290 if (sn<0) angleref2=-angleref2;
291 if (angleref<0) angleref2=angleref2+2.*M_PI;
313 double angle=
acos(cs);
314 if (sn<0) angle=-angle;
315 if (angle<0) angle=angle+2.*M_PI;
320 mgcoaretetmp=mgcoarete_suivante;
322 else if ((angle<1e-10) && (angleref<1e-10))
326 OT_VECTEUR_3D vec2(-dir2[0]*sens2,-dir2[1]*sens2,-dir2[2]*sens2);
329 double sn=-1*(vec2*nor);
331 if (sn<0) angle=-angle;
332 if (angle<0) angle=angle+2.*M_PI;
334 mgcoaretetmp=mgcoarete_suivante;
341 coareteprecedente=mgcoaretetmp;
342 return coareteprecedente;
355 o <<
");" << std::endl;
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 void enregistrer(std::ostream &o, double version)
virtual void supprimer_mg_coarete(class MG_COARETE *mgcoarete)
virtual MG_FACE * get_mg_face(void)
virtual MG_COARETE * get_mg_coarete_suivante(MG_COARETE *coare)
virtual void ajouter_mg_coarete(class MG_COARETE *mgcoarete)
virtual int get_type(void)
std::vector< MG_COARETE * > lst_coarete
virtual MG_COARETE * get_mg_coarete_precedente(MG_COARETE *coare)
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 void inverser(double *uv, double *xyz, double precision=1e-6)
virtual void calcul_normale_unitaire(double *uv, double *normale)
virtual void evaluer(double *xyz)=0
virtual MG_POINT * get_point(void)
virtual void change_x(double x)
virtual void change_z(double z)
virtual void change_y(double y)
double2 acos(double2 &val)