#######################################################################################################################################
# #
# G E N E R A T I O N D ' U N E 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.G.11.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, AAAAMMJJhhmmss). #
# #
#######################################################################################################################################
$Z Pal
$Z setParam _____Fdimension 5
$Z setParam _____FdimensionX $_____Fdimension
$Z setParam _____FdimensionY $_____Fdimension
$Z setParam _____FdimensionZ $_____Fdimension
$Z setParam _____Fgraine 1234
$Z SETParam Premiere 1
$Z SETParam Derniere 128
$Z if ($?Acinus_Ajuster == $NEXIST) then
$Z setenv Acinus_Ajuster FAUX
$Z else
$Z endif
$Z if ($?Acinus_APoints == $NEXIST) then
$Z setenv Acinus_APoints 8
$Z else
$Z endif
$Z if ($?Acinus_Gros == $NEXIST) then
$Z setenv Acinus_Gros 1
$Z else
$Z endif
$Z if ($?Acinus_Rmin == $NEXIST) then
$Z setenv Acinus_Rmin 0.04
$Z else
$Z endif
$Z if ($?Acinus_Rmax == $NEXIST) then
$Z setenv Acinus_Rmax 0.04
$Z else
$Z endif
$Z if ($?Acinus_Rot_OX == $NEXIST) then
$Z setenv Acinus_Rot_OX 0
$Z else
$Z endif
$Z if ($?Acinus_Rot_OY == $NEXIST) then
$Z setenv Acinus_Rot_OY 0
$Z else
$Z endif
$Z if ($?Acinus_Rot_OZ == $NEXIST) then
$Z setenv Acinus_Rot_OZ 0
$Z else
$Z endif
$Z if ($?Acinus_Tra_OX == $NEXIST) then
$Z setenv Acinus_Tra_OX 0
$Z else
$Z endif
$Z if ($?Acinus_Tra_OY == $NEXIST) then
$Z setenv Acinus_Tra_OY 0
$Z else
$Z endif
$Z if ($?Acinus_Tra_OZ == $NEXIST) then
$Z setenv Acinus_Tra_OZ 0
$Z else
$Z endif
$Z if ($?Acinus_File == $NEXIST) then
$Z setenv Acinus_File $xTV/LISTE_POINTS
$Z else
$Z endif
$Z $DELETE $Acinus_File
$Z $xu/Felici.M/GenImages.01$Z $xTV/ACINUS \
$Z $_____FdimensionX $_____FdimensionY $_____FdimensionZ \
$Z 0 0 0 \
$Z $xiP/blanc.21 \
$Z $_____Fgraine
$Z setParam _____Fdistance 64
$Z setParam _____Edistance 1
$Z setParam _____imagesWW $xTV/REFL.Wb
$Z # Ceci a ete introduit le 20020402152336 dans l'idee de pouvoir generer de temps en temps #
$Z # les images '$_____imagesWW' dans '$xTV', malgre le danger que cela presente (a cause de #
$Z # '$xcg/Xtemporaires$Z' via '$xcg/Xall$Z' ; on aura donc interet a utiliser la commande #
$Z # 'bXall' dans ce contexte...). #
$Z setParam _____Minimum_XYZ 0.1
$Z setParam _____Maximum_XYZ 0.9
$Z set MiNiMuM_X=$_____Minimum_XYZ
$Z set MaXiMuM_X=$_____Maximum_XYZ
$Z set MiLiEu_X=`$xcg/MOYE.01$X a=$MiNiMuM_X b=$MaXiMuM_X`
$Z set DeMi_LoNgUeUr_Y=`calcul (($MaXiMuM_X)-($MiNiMuM_X))/(2*($_____FdimensionX/$_____FdimensionY))`
$Z set MiNiMuM_Y=`$xcg/SOUS.01$X a=$MiLiEu_X b=$DeMi_LoNgUeUr_Y decimales=8`
$Z set MaXiMuM_Y=`$xcg/ADD2.01$X a=$MiLiEu_X b=$DeMi_LoNgUeUr_Y decimales=8`
$Z # Le "decimales=8" est destine a garantir la qualite des resultats, par exemple avec le #
$Z # labyrinthe 5x5x5 ou les extrema sur les 3 axes doivent etre identiques ; en son absence, #
$Z # on trouve respectivement +0.09999999999999998 et +0.9 pour l'axe 'OX'. #
$Z set MiNiMuM_Z=$MiNiMuM_X
$Z set MaXiMuM_Z=$MaXiMuM_X
$X echo "neutre"
$X # commande destinee uniquement a mettre a jour l'environnement 'env'... #
$c #include <stdio.h>
$c
$c #define NC 1
$c /* Periode Courante dont on veut la carte de densite. */
$c
$c #define PARITE 4
$c /* Afin de savoir combien d'actions peuvent etre menees en parallele... */
$c
$c #define NA0 Premiere
$c #define NA Derniere
$c /* Nombre de couches a generer... */
$c
$c #define Z0 0
$c #define ZN 1
$c #define Z(n) (((double)ZN*(n-NA0))+((double)Z0*(NA-n)))/((double)(NA-NA0))
$c /* Intervalle de variation du 'Z' des couches. */
$c
$c int main()
$c {
$c int n;
$c double z;
$c
$c if (((NA-NA0+1)%PARITE) != 0)
$c {
$c printf("\n ATTENTION : le nombre d'images n'est pas divisible par %d",PARITE);
$c }
$c else
$c {
$c }
$c
$c printf("$DELETE $xTV/COORDONNEES$COORD_X\n");
$c printf("$DELETE $xTV/COORDONNEES$COORD_Y\n");
$c printf("$DELETE $xTV/COORDONNEES$COORD_Z\n");
$c
$c printf("$CA $xTV/LISTE_POINTS |
$c $GRE 'periode=%d ' |
$c $SE -e 's/^.* X=//'
$c -e 's/ .*$//' |
$c $xrv/neutre$X
$c ne=0
$c fichier='='
$c formater=VRAI decimales=8
$c > $xTV/COORDONNEES$COORD_X\n"
$c ,NC
$c );
$c printf("$CA $xTV/LISTE_POINTS |
$c $GRE 'periode=%d ' |
$c $SE -e 's/^.* Y=//'
$c -e 's/ .*$//' |
$c $xrv/neutre$X
$c ne=0
$c fichier='='
$c formater=VRAI decimales=8
$c > $xTV/COORDONNEES$COORD_Y\n"
$c ,NC
$c );
$c printf("$CA $xTV/LISTE_POINTS |
$c $GRE 'periode=%d ' |
$c $SE -e 's/^.* Z=//'
$c -e 's/ .*$//' |
$c $xrv/neutre$X
$c ne=0
$c fichier='='
$c formater=VRAI decimales=8
$c > $xTV/COORDONNEES$COORD_Z\n"
$c ,NC
$c );
$c /* L'utilisation de 'decimales=8' permet de traiter proprement le probleme du aux erreurs */
$c /* d'arrondi ('v _____xivPdf_09_2/.REFL.w.12.$U arrondi'). */
$c
$c printf("set ParticulesX=`$WC $xTV/COORDONNEES$COORD_X`\n");
$c printf("set ParticulesX=$ParticulesX[$WC1]\n");
$c printf("set ParticulesY=`$WC $xTV/COORDONNEES$COORD_Y`\n");
$c printf("set ParticulesY=$ParticulesY[$WC1]\n");
$c printf("set ParticulesZ=`$WC $xTV/COORDONNEES$COORD_Z`\n");
$c printf("set ParticulesZ=$ParticulesZ[$WC1]\n");
$c
#20220615102036____:$c printf("set Particules=`$xcg/MAX3.01$X x=$ParticulesX y=$ParticulesY z=$ParticulesZ`\n"); #
$c printf("set Particules=`$xcg/MIN3.01$X x=$ParticulesX y=$ParticulesY z=$ParticulesZ`\n");
$c
$c printf("set Parametres=%c%c\n",'"','"');
$c printf("set Parametres=%c$Parametres ne=$Particules%c\n",'"','"');
$c printf("set Parametres=%c$Parametres LISTE_X=$xTV/COORDONNEES$COORD_X%c\n",'"','"');
$c printf("set Parametres=%c$Parametres LISTE_Y=$xTV/COORDONNEES$COORD_Y%c\n",'"','"');
$c printf("set Parametres=%c$Parametres LISTE_Z=$xTV/COORDONNEES$COORD_Z%c\n",'"','"');
$c printf("set Parametres=%c$Parametres rectangulaire=FAUX%c\n",'"','"');
$c printf("set Parametres=%c$Parametres ajuster=FAUX%c\n",'"','"');
$c /* On ne peut faire un "ajuster=VRAI" car il est apparu que des points du labyrinthe se */
$c /* trouvaient sur les points {X,Y,Z} des images, d'ou une distance minimale nulle */
$c /* ('v $xrv/densite.01$K distance_IJ_minimale'). */
$c printf("set Parametres=%c$Parametres Efacteur=$_____Fdistance%c\n",'"','"');
$c printf("set Parametres=%c$Parametres Eexposant=$_____Edistance%c\n",'"','"');
$c
$c printf("set Pa=%c%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum=$MiNiMuM_X maximum=$MaXiMuM_X%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum_si_identiques=FAUX maximum_si_identiques=FAUX%c\n",'"','"');
$c printf("set HomX=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_X $Pa | $GRE 'homothetie=' | $SE -e 's/^.*=//'`\n");
$c printf("set traX=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_X $Pa | $GRE 'translation\\.*=' | $SE -e 's/^.*=//'`\n");
$c
$c printf("set Pa=%c%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum=$MiNiMuM_Y maximum=$MaXiMuM_Y%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum_si_identiques=FAUX maximum_si_identiques=FAUX%c\n",'"','"');
$c printf("set HomY=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_Y $Pa | $GRE 'homothetie=' | $SE -e 's/^.*=//'`\n");
$c printf("set traY=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_Y $Pa | $GRE 'translation\\.*=' | $SE -e 's/^.*=//'`\n");
$c
$c printf("set Pa=%c%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum=$MiNiMuM_Z maximum=$MaXiMuM_Z%c\n",'"','"');
$c printf("set Pa=%c$Pa minimum_si_identiques=FAUX maximum_si_identiques=FAUX%c\n",'"','"');
$c printf("set HomZ=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_Z $Pa | $GRE 'homothetie=' | $SE -e 's/^.*=//'`\n");
$c printf("set traZ=`$xrv/extrema.01$X ne=0 fichier=$xTV/COORDONNEES$COORD_Z $Pa | $GRE 'translation\\.*=' | $SE -e 's/^.*=//'`\n");
$c
$c for (n=NA0 ; n<=NA ; n=n+PARITE)
$c {
$c int n1=n+0;
$c int n2=n+1;
$c int n3=n+2;
$c int n4=n+3;
$c
$c printf("$xcg/parallele.1N$X
$c commande11=%c
$c $xrv/densite.01$X
$c $Parametres
$c AXF=$HomX BXF=$traX
$c AYF=$HomY BYF=$traY
$c AZF=$HomZ BZF=$traZ
$c Z=%f
$c R=$_____imagesWW.%04d
$c $formatI%c
$c commande12=%c
$c $xrv/densite.01$X
$c $Parametres
$c AXF=$HomX BXF=$traX
$c AYF=$HomY BYF=$traY
$c AZF=$HomZ BZF=$traZ
$c Z=%f
$c R=$_____imagesWW.%04d
$c $formatI%c
$c commande21=%c
$c $xrv/densite.01$X
$c $Parametres
$c AXF=$HomX BXF=$traX
$c AYF=$HomY BYF=$traY
$c AZF=$HomZ BZF=$traZ
$c Z=%f
$c R=$_____imagesWW.%04d
$c $formatI%c
$c commande22=%c
$c $xrv/densite.01$X
$c $Parametres
$c AXF=$HomX BXF=$traX
$c AYF=$HomY BYF=$traY
$c AZF=$HomZ BZF=$traZ
$c Z=%f
$c R=$_____imagesWW.%04d
$c $formatI%c\n"
$c ,'"',Z(n1),n1,'"'
$c ,'"',Z(n2),n2,'"'
$c ,'"',Z(n3),n3,'"'
$c ,'"',Z(n4),n4,'"'
$c );
$c /* Generation de la carte de densite. */
$c }
$c
$c printf("$DELETE $xTV/MINIMUM\n");
$c printf("$DELETE $xTV/MAXIMUM\n");
$c
$c for (n=NA0 ; n<=NA ; n++)
$c {
$c printf("$xci/extrema$X
$c A=$_____imagesWW.%04d
$c standard=FAUX
$c minimum=VRAI
$c maximum=FAUX
$c $formatI
$c >>&! $xTV/MINIMUM\n"
$c ,n
$c );
#20150224100544____:$c printf("saut #
#20150224100544____:$c >>&! $xTV/MINIMUM\n" #
#20150224100544____:$c ); #
$c printf("$xci/extrema$X
$c A=$_____imagesWW.%04d
$c standard=FAUX
$c minimum=FAUX
$c maximum=VRAI
$c $formatI
$c >>&! $xTV/MAXIMUM\n"
$c ,n
$c );
#20150224100544____:$c printf("saut #
#20150224100544____:$c >>&! $xTV/MAXIMUM\n" #
#20150224100544____:$c ); #
$c /* Extraction des extrema de chacune des cartes. */
$c }
$c
$c printf("set MinC=`$xrv/extrema.01$X ne=0 fichier=$xTV/MINIMUM | $GRE '^minimum=' | $SE -e 's/^.*=//'`\n");
$c printf("set MaxC=`$xrv/extrema.01$X ne=0 fichier=$xTV/MAXIMUM | $GRE '^maximum=' | $SE -e 's/^.*=//'`\n");
$c /* Extraction des extrema de l'ensemble des cartes. */
$c
$c for (n=NA0 ; n<=NA ; n++)
$c {
$c printf("$xci/acces$X
$c A=$_____imagesWW.%04d
$c standard=FAUX
$c extrema=FAUX
$c minimum=$MinC
$c maximum=$MaxC
$c tronquer=FAUX
$c R=$_____images.%04d
$c $formatI\n"
$c ,n
$c ,n
$c );
$c /* Et enfin conversion "standard" avec renormalisation globale... */
$c }
$c }
$Z # ATTENTION, le 20020402151403, j'ai supprime le : #
$Z # #
$Z # $DELETE $xTV/LISTE_POINTS #
$Z # #
$Z # afin de pouvoir conserver cette liste de coordonnees {X,Y,Z}. #
$Z $DELETE $xTV/COORDONNEES$COORD_X
$Z $DELETE $xTV/COORDONNEES$COORD_Y
$Z $DELETE $xTV/COORDONNEES$COORD_Z
$Z $DELETE $xTV/MINIMUM
$Z $DELETE $xTV/MAXIMUM