####################################################################################################################################### # # # G E N E R A T I O N D E S P A R T I C U L E S D A N S # # U N M I L I E U D E P R O P A G A T I O N C O R R E S P O N D A N T # # A L A C A R T E D E D E N S I T E T R I D I M E N S I O N N E L L E # # D E S B R O N C H I O L E S T E R M I N A L E S D E S P O U M O N S # # A V E C A J U S T E M E N T A U T O M A T I Q U E : # # # # # # Author of '$xiird/.ACIN.H.12.$U' : # # # # Jean-Francois COLONNA (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### $Z $DELETE $xTV/COORDONNEES$COORD_X $Z $DELETE $xTV/COORDONNEES$COORD_Y $Z $DELETE $xTV/COORDONNEES$COORD_Z $Z $DELETE $xTV/COORDONNEES_01$COORD_X $Z $DELETE $xTV/COORDONNEES_01$COORD_Y $Z $DELETE $xTV/COORDONNEES_01$COORD_Z $Z setParam _____NPointsDilate 225 $Z SETParam _____DupliquerP FAUX $Z setParam _____DupliquerPX 0.0 $Z setParam _____DupliquerPY 0.0 $Z setParam _____DupliquerPZ 0.0 $Z setParam _____DupliquerPS 0.6 $Z setParam _____DupliquerPF 1.0 $Z setParam _____DupliquerPB 1.0 $Z setParam _____DupliquerPFe 1.0 $Z setParam _____DupliquerPFd 0.0 $Z setParam _____Lignes VRAI $Z if ($_____DupliquerP == FAUX) then $Z set ReCtAnGuLaIrE="$K_VIDE" $Z else $Z set ReCtAnGuLaIrE="rectangulaire=FAUX grand_carre=FAUX" $Z set EchelleX=2 $Z # Effectivement dans ce mode, il n'y a pas de changement de format... # $Z endif $Z SET mode=$UNDEF $Z # Pour que 'listN' fonctionne correctement... # $Z mode $xTV/COORDONNEES $Z SET mode=$mode $Z # Pour que 'listN' fonctionne correctement... # $Z if ($mode != $MODE_400) then $Z # Ceci a ete introduit le 20020307083901 afin de permetttre de conserver un fichier # $Z # '$xTV/COORDONNEES' anterieur et ainsi eviter les '$xci/dilate.01$X' qui suivent et # $Z # qui sont tres couteux en temps. La generation de '$xTV/COORDONNEES' n'est donc faite # $Z # que si le fichier '$xTV/COORDONNEES' n'existe pas (mode '$MODE_000' ou n'est pas protege. # $Z $DELETE $xTV/COORDONNEES $c #include <stdio.h> $c $c #define NA0 PremiereM $c #define NA DerniereM $c /* Nombre de couches a traiter... */ $c #20160307081539____:$c #define Zmin ZminM # #20160307081539____:$c #define Zmax ZmaxM # $c /* Extrema du 'Z'. */ $c $c int main() $c { $c int n; $c int z=Zmin; $c $c for (n=(NA0-NA0) ; n<=(NA-NA0) ; n++) $c /* On notera les '-NA0' destines a assurer la compatibilite avec le numerotage des images */ $c /* '$xTV/BOITE.2.????' tel qu'il est defini dans 'v $xiird/.ACIN.H.11.$U n-NA0'. */ $c { $c printf("if (`expr %d %% $_____DistanceZ` == 0) then\n" $c ,z $c ); $c /* Apres quelques difficultes, je comprends le 20160308090844 le role de ce test. En fait */ $c /* il s'agit d'un sous-echantillonnage de l'axe 'OZ' : on ne prend qu'un plan {OX,OY} */ $c /* sur '$_____DistanceZ', de la meme facon que le plan {OX,OY} est lui-meme echantillonne */ $c /* grace a '$_____DistanceX' et a '$_____DistanceY'... */ $c printf(" set NoMbRe=`$xci/liste_points$X $c A=$xTV/BOITE.2.%04d $c eX=FAUX eY=FAUX eZ=FAUX $c eNIVEAU=FAUX $c points=VRAI $c en_tete=FAUX $c $formatI`\n" $c ,n $c ); $c /* Comptage des points non NOIRs... */ $c printf(" if ($NoMbRe > 0) then\n"); $c /* Ainsi, on ne traite ci-apres que les tranches non vides du milieu... */ $c printf(" $xci/dilate.01$X $c A=$xTV/BOITE.2.%04d $c dilater=FAUX $c points=$_____NPointsDilate $c $formatI | $c $xci/and$X $c A2=$xTV/BOITE.B $c $formatI | $c $xci/liste_points$X $c lignes=$_____Lignes $c $ReCtAnGuLaIrE $c dupliquer=$_____DupliquerP $c Xc=$_____DupliquerPX $c Yc=$_____DupliquerPY $c Zc=$_____DupliquerPZ $c seuil=$_____DupliquerPS $c Fexponentielle=$_____DupliquerPF $c base=$_____DupliquerPB $c Fexposant=$_____DupliquerPFe $c Fdistance=$_____DupliquerPFd $c eZ=VRAI Z=%d $c $formatI $_____ZminZmax $c >>! $xTV/COORDONNEES\n" $c ,n $c ,z $c ); $c /* Rappelons que '$xTV/BOITE.B' contient un ensemble de points situes aux noeuds d'un */ $c /* reseau carre. Avec le '$xci/and$X' on procede donc a un echantillonnage du milieu... */ $c printf(" else\n"); $c printf(" endif\n"); $c printf("else\n"); $c printf("endif\n"); $c $c z++; $c /* Generation du milieu. On notera le "dilater=FAUX" destine a generer des points dans le */ $c /* milieu qui ne soient pas trop proches du bord (pour eviter qu'ils s'echappent...). */ $c } $c } $Z else $Z $CA $xo/ATTENTION$T $Z saut $Z saut $Z echo "Le fichier anterieur '"'$xTV/COORDONNEES'"' a ete conserve et va etre reutilise." $Z saut $Z saut $Z endif $Z $CA $xTV/COORDONNEES \ $Z | $GRE "^[Xx]=" \ $Z | $SE -e "s/^[Xx]=//" \ $Z > $xTV/COORDONNEES_01$COORD_X $Z $CA $xTV/COORDONNEES \ $Z | $GRE "^[Yy]=" \ $Z | $SE -e "s/^[Yy]=//" \ $Z > $xTV/COORDONNEES_01$COORD_Y $Z $CA $xTV/COORDONNEES \ $Z | $GRE "^[Zz]=" \ $Z | $SE -e "s/^[Zz]=//" \ $Z > $xTV/COORDONNEES_01$COORD_Z $Z set PartNX=`$WC $xTV/COORDONNEES_01$COORD_X` $Z set PartNX=$PartNX[$WC1] $Z set PartNY=`$WC $xTV/COORDONNEES_01$COORD_Y` $Z set PartNY=$PartNY[$WC1] $Z set PartNZ=`$WC $xTV/COORDONNEES_01$COORD_Z` $Z set PartNZ=$PartNZ[$WC1] #20220615102355____:$Z set PartN=`$xcg/MAX3.01$X x=$PartNX y=$PartNY z=$PartNZ signe="$K_VIDE"` # $Z set PartN=`$xcg/MIN3.01$X x=$PartNX y=$PartNY z=$PartNZ signe="$K_VIDE"` $Z $xrv/AXPB.01$X \ $Z CAL1=FAUX \ $Z ne=$PartN \ $Z fichier=$xTV/COORDONNEES_01$COORD_X \ $Z homothetie=$EchelleX translation=$TranslationX \ $Z > $xTV/COORDONNEES$COORD_X $Z $xrv/AXPB.01$X \ $Z CAL1=FAUX \ $Z ne=$PartN \ $Z fichier=$xTV/COORDONNEES_01$COORD_Y \ $Z homothetie=$EchelleY translation=$TranslationY \ $Z > $xTV/COORDONNEES$COORD_Y $Z $xrv/AXPB.01$X \ $Z CAL1=FAUX \ $Z ne=$PartN \ $Z fichier=$xTV/COORDONNEES_01$COORD_Z \ $Z homothetie=$EchelleZ translation=$TranslationZ \ $Z > $xTV/COORDONNEES$COORD_Z $Z $DELETE $xTV/COORDONNEES_01$COORD_X $Z $DELETE $xTV/COORDONNEES_01$COORD_Y $Z $DELETE $xTV/COORDONNEES_01$COORD_Z