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



Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.