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;
183 vec1.change_x(-dir1[0]*sens1);
184 vec1.change_y(-dir1[1]*sens1);
185 vec1.change_z(-dir1[2]*sens1);
186 vec2.change_x(dir2[0]*sens2);
187 vec2.change_y(dir2[1]*sens2);
188 vec2.change_z(dir2[2]*sens2);
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;
302 vec1.change_x(dir1[0]*sens1);
303 vec1.change_y(dir1[1]*sens1);
304 vec1.change_z(dir1[2]*sens1);
305 vec2.change_x(-dir2[0]*sens2);
306 vec2.change_y(-dir2[1]*sens2);
307 vec2.change_z(-dir2[2]*sens2);
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;