#######################################################################################################################################
# #
# 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