- aretmx = Min( aretmx, aremax ); //pour homogeneiser
- MESSAGE("nutysu=" << nutysu << " aretmx=" << aretmx
- << " arete min=" << aremin << " arete max=" << aremax);
+//debut ajout 9/11/2006 ................................................
+ // devenu un commentaire aretmx = Min( aretmx, aremax ); //pour homogeneiser
+
+ // protection contre une arete max desiree trop grande ou trop petite
+ if( aretmx > aremax*2.05 ) aretmx = aremax;
+
+ // protection contre une arete max desiree trop petite
+ if( (aremax-aremin) > (aremin+aremax)*0.05 && aretmx < aremin*0.5 )
+ aretmx =(aremin+aremax*2)/3.0;
+
+ if( aretmx < aremin && aremin > 0 )
+ aretmx = aremin;
+
+ //sauvegarde pour la fonction areteideale_
+ aretemaxface_ = aretmx;
+
+ //aire maximale souhaitee des triangles
+ airemx = aretmx * aretmx * sqrt(3.0) / 2.0; //Aire triangle equilateral
+
+ for(i=0; i<=nuds; i++ )
+ mnpxyd[i].z = Min( mnpxyd[i].z, aretmx );
+ //MESSAGE("Numero du dernier sommet frontalier=" << nuds+1);
+//fin ajout 9/11/2006 .................................................
+
+
+ // MESSAGE("Sur le bord: arete min=" << aremin << " arete max=" << aremax );
+ // MESSAGE("Triangulation: arete mx=" << aretmx
+ // << " triangle aire mx=" << airemx );