X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEFISTO2%2Faptrte.cxx;h=04ed4670051d1567f44b63bb5243e99b294e8b43;hb=3a5fff6849a70fd4128e6a81bb186e85682ca15a;hp=f1579fa3a1d9e999f9e4cf7f9479bb5c45209a7f;hpb=a4d61a7b6f94b6f1c8cf00fb6b966232d834f7fc;p=modules%2Fsmesh.git diff --git a/src/MEFISTO2/aptrte.cxx b/src/MEFISTO2/aptrte.cxx index f1579fa3a..04ed46700 100755 --- a/src/MEFISTO2/aptrte.cxx +++ b/src/MEFISTO2/aptrte.cxx @@ -36,7 +36,10 @@ extern "C" MEFISTO2D_EXPORT R #ifdef WIN32 + #ifdef F2C_BUILD + #else __stdcall + #endif #endif areteideale()//( R3 xyz, R3 direction ) { @@ -52,8 +55,11 @@ static double cpunew, cpuold=0; void #ifdef WIN32 +#ifdef F2C_BUILD +#else __stdcall #endif +#endif tempscpu_( double & tempsec ) //Retourne le temps CPU utilise en secondes { @@ -64,8 +70,11 @@ tempscpu_( double & tempsec ) void #ifdef WIN32 +#ifdef F2C_BUILD +#else __stdcall #endif +#endif deltacpu_( R & dtcpu ) //Retourne le temps CPU utilise en secondes depuis le precedent appel { @@ -78,11 +87,11 @@ deltacpu_( R & dtcpu ) void aptrte( Z nutysu, R aretmx, - Z nblf, Z * nudslf, R2 * uvslf, - Z nbpti, R2 * uvpti, - Z & nbst, R2 * & uvst, - Z & nbt, Z * & nust, - Z & ierr ) + Z nblf, Z * nudslf, R2 * uvslf, + Z nbpti, R2 * uvpti, + Z & nbst, R2 * & uvst, + Z & nbt, Z * & nust, + Z & ierr ) //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ // but : appel de la triangulation par un arbre-4 recouvrant // ----- de triangles equilateraux @@ -175,7 +184,7 @@ void aptrte( Z nutysu, R aretmx, mxsomm = Max( 20000, 64*nbpti+i*i ); MESSAGE( "APTRTE: Debut de la triangulation plane avec " ); MESSAGE( "nutysu=" << nutysu << " aretmx=" << aretmx - << " mxsomm=" << mxsomm ); + << " mxsomm=" << mxsomm ); MESSAGE( nbarfr << " sommets sur la frontiere et " << nbpti << " points internes"); NEWDEPART: @@ -238,7 +247,7 @@ void aptrte( Z nutysu, R aretmx, mnpxyd[ns0].y = uvslf[ns0].y; mnpxyd[ns0].z = areteideale();//( mnpxyd[ns0], direction ); // MESSAGE("Sommet " << ns0 << ": " << mnpxyd[ns0].x -// << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z); +// << " " << mnpxyd[ns0].y << " longueur arete=" << mnpxyd[ns0].z); //carre de la longueur de l'arete 1 de la ligne fermee n d = pow( uvslf[ns0+1].x - uvslf[ns0].x, 2 ) @@ -259,8 +268,8 @@ void aptrte( Z nutysu, R aretmx, //le numero n de la ligne du sommet et son numero ns1 dans la ligne mnslig[ns0-1] = 1000000 * n + ns1-nudslf[n-1]; fasoar( ns1, ns2, moins1, moins1, n, - mosoar, mxsoar, n1soar, mnsoar, mnarst, - noar0, ierr ); + mosoar, mxsoar, n1soar, mnsoar, mnarst, + noar0, ierr ); //pas de test sur ierr car pas de saturation possible a ce niveau //le pointeur dans le hachage sur la premiere arete de la ligne fermee n @@ -277,11 +286,11 @@ void aptrte( Z nutysu, R aretmx, { ns1 = ns2; //le numero de l'arete et le numero du premier sommet de l'arete if( i < nbarli ) - //nbs+1 est le 2-eme sommet de l'arete i de la ligne fermee n - ns2 = ns1+1; + //nbs+1 est le 2-eme sommet de l'arete i de la ligne fermee n + ns2 = ns1+1; else - //le 2-eme sommet de la derniere arete est le premier sommet de la ligne - ns2 = ns0; + //le 2-eme sommet de la derniere arete est le premier sommet de la ligne + ns2 = ns0; //l'arete precedente est dotee de sa suivante:celle cree ensuite //les 2 coordonnees du sommet ns2 de la ligne @@ -293,7 +302,7 @@ void aptrte( Z nutysu, R aretmx, mnpxyd[ns].y = uvslf[ns].y; mnpxyd[ns].z = areteideale();//( mnpxyd[ns], direction ); // MESSAGE("Sommet " << ns << ": " << mnpxyd[ns].x -// << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z); +// << " " << mnpxyd[ns].y << " longueur arete=" << mnpxyd[ns].z); //carre de la longueur de l'arete d = pow( uvslf[ns2-1].x - uvslf[ns1-1].x, 2) @@ -314,8 +323,8 @@ void aptrte( Z nutysu, R aretmx, //ajout de l'arete dans la liste fasoar( ns1, ns2, moins1, moins1, n, - mosoar, mxsoar, n1soar, mnsoar, - mnarst, noar, ierr ); + mosoar, mxsoar, n1soar, mnsoar, + mnarst, noar, ierr ); //pas de test sur ierr car pas de saturation possible a ce niveau //chainage des aretes frontalieres en position 6 du tableau mnsoar @@ -359,7 +368,7 @@ void aptrte( Z nutysu, R aretmx, MESSAGE("Sur le bord: arete min=" << aremin << " arete max=" << aremax ); MESSAGE("Triangulation: arete mx=" << aretmx - << " triangle aire mx=" << airemx ); + << " triangle aire mx=" << airemx ); //chainage des aretes frontalieres : la derniere arete frontaliere mnsoar[ mosoar * noar - mosoar + 5 ] = 0; @@ -435,9 +444,9 @@ void aptrte( Z nutysu, R aretmx, if( mnqueu==NULL) goto ERREUR; tehote( nutysu, nbarpi, mxsomm, nbsomm, mnpxyd, - comxmi, aretmx, - mntree, mxqueu, mnqueu, - ierr ); + comxmi, aretmx, + mntree, mxqueu, mnqueu, + ierr ); deltacpu_( d ); tcpu += d; @@ -462,9 +471,9 @@ void aptrte( Z nutysu, R aretmx, // et des points de la frontiere, des points internes imposes interieurs // ========================================================================== tetrte( comxmi, aretmx, nbarpi, mxsomm, mnpxyd, - mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar, - moartr, mxartr, n1artr, mnartr, mnarst, - ierr ); + mxqueu, mnqueu, mntree, mosoar, mxsoar, n1soar, mnsoar, + moartr, mxartr, n1artr, mnartr, mnarst, + ierr ); // destruction de la queue et de l'arbre devenus inutiles delete [] mnqueu; mnqueu=NULL; @@ -484,7 +493,7 @@ void aptrte( Z nutysu, R aretmx, //qualites de la triangulation actuelle qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr, - nbt, quamoy, quamin ); + nbt, quamoy, quamin ); // boucle sur les aretes internes (non sur une ligne de la frontiere) // avec echange des 2 diagonales afin de rendre la triangulation delaunay @@ -492,8 +501,8 @@ void aptrte( Z nutysu, R aretmx, // formation du chainage 6 des aretes internes a echanger eventuellement aisoar( mosoar, mxsoar, mnsoar, na ); tedela( mnpxyd, mnarst, - mosoar, mxsoar, n1soar, mnsoar, na, - moartr, mxartr, n1artr, mnartr, n ); + mosoar, mxsoar, n1soar, mnsoar, na, + moartr, mxartr, n1artr, mnartr, n ); MESSAGE( "Nombre d'echanges des diagonales de 2 triangles=" << n ); deltacpu_( d ); @@ -503,7 +512,7 @@ void aptrte( Z nutysu, R aretmx, //qualites de la triangulation actuelle qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr, - nbt, quamoy, quamin ); + nbt, quamoy, quamin ); // detection des aretes frontalieres initiales perdues // triangulation frontale pour les restaurer @@ -523,10 +532,10 @@ void aptrte( Z nutysu, R aretmx, if( mnarcf2 == NULL ) goto ERREUR; terefr( nbarpi, mnpxyd, - mosoar, mxsoar, n1soar, mnsoar, - moartr, mxartr, n1artr, mnartr, mnarst, - mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2, - n, ierr ); + mosoar, mxsoar, n1soar, mnsoar, + moartr, mxartr, n1artr, mnartr, mnarst, + mxarcf, mn1arcf, mnarcf, mnarcf1, mnarcf2, + n, ierr ); MESSAGE( "Restauration de " << n << " aretes perdues de la frontiere ierr=" << ierr ); deltacpu_( d ); @@ -538,7 +547,7 @@ void aptrte( Z nutysu, R aretmx, //qualites de la triangulation actuelle qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr, - nbt, quamoy, quamin ); + nbt, quamoy, quamin ); // fin de la triangulation avec respect des aretes initiales frontalieres @@ -564,10 +573,10 @@ void aptrte( Z nutysu, R aretmx, mnlftr[n] = n+1; tesuex( nblf, mnlftr, - ndtri0, nbsomm, mnpxyd, mnslig, - mosoar, mxsoar, mnsoar, - moartr, mxartr, n1artr, mnartr, mnarst, - nbt, mntrsu, ierr ); + ndtri0, nbsomm, mnpxyd, mnslig, + mosoar, mxsoar, mnsoar, + moartr, mxartr, n1artr, mnartr, mnarst, + nbt, mntrsu, ierr ); delete [] mnlftr; mnlftr=NULL; delete [] mntrsu; mntrsu=NULL; @@ -579,7 +588,7 @@ void aptrte( Z nutysu, R aretmx, //qualites de la triangulation actuelle qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr, - nbt, quamoy, quamin ); + nbt, quamoy, quamin ); // amelioration de la qualite de la triangulation par // barycentrage des sommets internes a la triangulation @@ -594,12 +603,12 @@ void aptrte( Z nutysu, R aretmx, goto ERREUR; } teamqt( nutysu, aretmx, airemx, - mnarst, mosoar, mxsoar, n1soar, mnsoar, - moartr, mxartr, n1artr, mnartr, - mxarcf, mnarcf2, mnarcf3, - mn1arcf, mnarcf, mnarcf1, - nbarpi, nbsomm, mxsomm, mnpxyd, mnslig, - ierr ); + mnarst, mosoar, mxsoar, n1soar, mnsoar, + moartr, mxartr, n1artr, mnartr, + mxarcf, mnarcf2, mnarcf3, + mn1arcf, mnarcf, mnarcf1, + nbarpi, nbsomm, mxsomm, mnpxyd, mnslig, + ierr ); if( mnarcf3 != NULL ) {delete [] mnarcf3; mnarcf3=NULL;} if( mn1arcf != NULL ) {delete [] mn1arcf; mn1arcf=NULL;} if( mnarcf != NULL ) {delete [] mnarcf; mnarcf =NULL;} @@ -614,7 +623,7 @@ void aptrte( Z nutysu, R aretmx, //qualites de la triangulation finale qualitetrte( mnpxyd, mosoar, mxsoar, mnsoar, moartr, mxartr, mnartr, - nbt, quamoy, quamin ); + nbt, quamoy, quamin ); // renumerotation des sommets internes: mnarst(i)=numero final du sommet // =================================== @@ -660,22 +669,22 @@ void aptrte( Z nutysu, R aretmx, n = mnslig[i]; if( n > 0 ) { - if( n >= 1000000 ) - { - //sommet d'une ligne - //retour aux coordonnees initiales dans uvslf - l = n / 1000000; - n = n - 1000000 * l + nudslf[l-1] - 1; - uvst[nbst].x = uvslf[n].x; - uvst[nbst].y = uvslf[n].y; - } - else - { - //point utilisateur n interne impose - //retour aux coordonnees initiales dans uvpti - uvst[nbst].x = uvpti[n-1].x; - uvst[nbst].y = uvpti[n-1].y; - } + if( n >= 1000000 ) + { + //sommet d'une ligne + //retour aux coordonnees initiales dans uvslf + l = n / 1000000; + n = n - 1000000 * l + nudslf[l-1] - 1; + uvst[nbst].x = uvslf[n].x; + uvst[nbst].y = uvslf[n].y; + } + else + { + //point utilisateur n interne impose + //retour aux coordonnees initiales dans uvpti + uvst[nbst].x = uvpti[n-1].x; + uvst[nbst].y = uvpti[n-1].y; + } } } } @@ -703,7 +712,7 @@ void aptrte( Z nutysu, R aretmx, } nbt /= nbsttria; //le nombre final de triangles de la surface MESSAGE( "APTRTE: Fin de la triangulation plane avec "<