#######################################################################################################################################
#                                                                                                                                     #
#         M I S E   E N   " P A R T I C U L E S "   D ' U N   C H A M P   T R I D I M E N S I O N N E L  :                            #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirf/.COUP.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  SETParam            PremiereR                     1

$Z                  SETParam            DerniereR                     512

$Z                  SETParam            _____Seuil                    0.050

$Z                  SETParam            _____Inferieur                121

$Z                  SETParam            _____Superieur                127

$Z                  SETParam            _____Rayon                    0.010

$Z                  SETParam            _____DRotOX                   0

$Z                  SETParam            _____ARotOX                   $dpi

$Z                  SETParam            _____DRotOY                   0

$Z                  SETParam            _____ARotOY                   0

$Z                  SETParam            _____DRotOZ                   0

$Z                  SETParam            _____ARotOZ                   0

$Z                  SETParam            _____RVB                      VRAI

$Z                  @                   Nimages   = $DerniereR - $PremiereR
$Z                  @                   Nimages   = $Nimages + 1

$Z                  Pal

$Z                  @                   Zmin      = $PremiereA - $PremiereA
$Z                  @                   Zmax      = $DerniereA - $PremiereA
$Z                  @                   tailleZ   = $Zmax - $Zmin
$Z                  @                   tailleZ   = $tailleZ + 1
$Z                  setenv              dimZ      $tailleZ
$Z
$Z                  set                 fracZ     = `$xcg/DIVZ.01$X a=1 b=$dimZ signe="$K_VIDE"`
$Z                  set                 fracZ     = `$xcg/MUL2.01$X a=0.5 b=$fracZ signe="$K_VIDE"`
$Z
$Z                  $DELETE             $xTV/COORDONNEES$COORD_X
$Z                  $DELETE             $xTV/COORDONNEES$COORD_Y
$Z                  $DELETE             $xTV/COORDONNEES$COORD_Z
$Z                  $DELETE             $xTV/COORDONNEES.r

$Z                  if                  ($_____RVB == VRAI) then
$Z                                      set                 FichierROUGE=$xTV/COULEURS$ROUGE
$Z                                      set                 FichierVERTE=$xTV/COULEURS$VERTE
$Z                                      set                 FichierBLEUE=$xTV/COULEURS$BLEUE
$Z
$Z                                      $DELETE             $FichierROUGE
$Z                                      $DELETE             $FichierVERTE
$Z                                      $DELETE             $FichierBLEUE
$Z                  else
$Z                                      set                 FichierROUGE=$BLANC
$Z                                      set                 FichierVERTE=$BLANC
$Z                                      set                 FichierBLEUE=$BLANC
$Z                  endif

$c                  #define   N0        PremiereA
$c                  #define   N         DerniereA
$c
$c                  #define   GRAINE    7
$c
$c                  int       main()
$c                            {
$c                            int       n;
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      printf("$DELETE     $xTV/COORDO.%04d$COORD_X\n"
$c                                            ,n
$c                                             );
$c                                      printf("$DELETE     $xTV/COORDO.%04d$COORD_Y\n"
$c                                            ,n
$c                                             );
$c                                      printf("$DELETE     $xTV/COORDT.%04d$COORD_Z\n"
$c                                            ,n
$c                                             );
$c                                      printf("$DELETE     $xTV/COORDO.%04d$COORD_Z\n"
$c                                            ,n
$c                                             );
$c                                      printf("$DELETE     $xTV/COORDO.%04d.p\n"
$c                                            ,n
$c                                             );
$c
$c                                      printf("if        ($_____RVB == VRAI) then\n");
$c                                      printf("          $DELETE     $xTV/COULEUR.%04d$ROUGE\n"
$c                                            ,n
$c                                             );
$c                                      printf("          $DELETE     $xTV/COULEUR.%04d$VERTE\n"
$c                                            ,n
$c                                             );
$c                                      printf("          $DELETE     $xTV/COULEUR.%04d$BLEUE\n"
$c                                            ,n
$c                                             );
$c                                      printf("else\n");
$c                                      printf("endif\n");
$c
$c                                      printf("$xci/passe_bande$X
$c                                                          A=$_____imagesA1.%04d
$c                                                          inf=$_____Inferieur sup=$_____Superieur
$c                                                                                                                      $formatI  |
$c                                              $xci/seuil$X
$c                                                          seuil=$GRIS_1
$c                                                          R=$xTV/COUPE
$c                                                                                                                      $formatI\n"
$c                                            ,n
$c                                             );
$c                                      printf("$xci/random.02$X
$c                                                          graine=%d
$c                                                          seuil=$_____Seuil
$c                                                                                                                      $formatI  |
$c                                              $xci/and$X
$c                                                          A2=$xTV/COUPE
$c                                                          R=$xTV/COUPE
$c                                                                                                                      $formatI\n"
$c                                            ,(n*GRAINE)
$c                                             );
$c
$c                                      printf("$xci/liste_points$X
$c                                                          A=$xTV/COUPE
$c                                                          rectangulaire=FAUX
$c                                                          grand_carre=FAUX
$c                                                          centrer=VRAI
$c                                                          Cdenormaliser=FAUX
$c                                                          eX=VRAI
$c                                                          eY=FAUX
$c                                                          eNIVEAU=FAUX
$c                                                          points=FAUX
$c                                                                                                                      $formatI
$c                                                          | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COORDO.%04d$COORD_X\n"
$c                                            ,n
$c                                             );
$c                                      printf("$xci/liste_points$X
$c                                                          A=$xTV/COUPE
$c                                                          rectangulaire=FAUX
$c                                                          grand_carre=FAUX
$c                                                          centrer=VRAI
$c                                                          Cdenormaliser=FAUX
$c                                                          eX=FAUX
$c                                                          eY=VRAI
$c                                                          eNIVEAU=FAUX
$c                                                          points=FAUX
$c                                                                                                                      $formatI
$c                                                          | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COORDO.%04d$COORD_Y\n"
$c                                            ,n
$c                                             );
$c                                      printf("$xci/liste_points$X
$c                                                          A=$xTV/COUPE
$c                                                          rectangulaire=FAUX
$c                                                          grand_carre=FAUX
$c                                                          centrer=VRAI
$c                                                          Cdenormaliser=FAUX
$c                                                          eX=FAUX
$c                                                          eY=FAUX
$c                                                          eNIVEAU=FAUX
$c                                                          points=VRAI
$c                                                                                                                      $formatI
$c                                                          | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COORDO.%04d.p\n"
$c                                            ,n
$c                                             );
$c
$c                                      printf("set    Npoints=`$CA $xTV/COORDO.%04d.p`\n"
$c                                            ,n
$c                                             );
$c
$c                                      printf("if        ($Npoints >= 1) then\n");
$c                                      printf("          $xci/valeurs_alea$X
$c                                                                    premiere=1
$c                                                                    derniere=$Npoints
$c                                                                    inf=-$fracZ
$c                                                                    sup=+$fracZ
$c                                                                    graine=%d
$c                                                                                                  >   $xTV/COORDT.%04d$COORD_Z\n"
$c                                            ,(n*GRAINE)
$c                                            ,n
$c                                             );
$c                                      printf("          @      CoordZ = %d - %d\n"
$c                                            ,n,N0
$c                                             );
$c                                      printf("          set    CoordZ=`$xci/coordonnees$X
$c                                                                                        abscisse=FAUX
$c                                                                                        ordonnee=FAUX
$c                                                                                        profondeur=VRAI
$c                                                                                        Z=$CoordZ
$c                                                                                        denormaliser=FAUX
$c                                                                                        Zmin=$Zmin Zmax=$Zmax`\n"
$c                                             );
$c                                      printf("          $xrv/ADD2.11$X
$c                                                                    ne=$Npoints
$c                                                                    fichier1=$CoordZ
$c                                                                    fichier2=$xTV/COORDT.%04d$COORD_Z
$c                                                                                                  >   $xTV/COORDO.%04d$COORD_Z\n"
$c                                            ,n
$c                                            ,n
$c                                             );
$c                                      printf("          $DELETE     $xTV/COORDT.%04d$COORD_Z\n"
$c                                            ,n
$c                                             );
$c                                      printf("          $DELETE     $xTV/COORDO.%04d.p\n"
$c                                            ,n
$c                                             );
$c
$c                                      printf("          $CA         $xTV/COORDO.%04d$COORD_X
$c                                                                                                  >>! $xTV/COORDONNEES$COORD_X\n"
$c                                            ,n
$c                                             );
$c                                      printf("          $CA         $xTV/COORDO.%04d$COORD_Y
$c                                                                                                  >>! $xTV/COORDONNEES$COORD_Y\n"
$c                                            ,n
$c                                             );
$c                                      printf("          $CA         $xTV/COORDO.%04d$COORD_Z
$c                                                                                                  >>! $xTV/COORDONNEES$COORD_Z\n"
$c                                            ,n
$c                                             );
$c
$c                                      printf("          if        ($_____RVB == VRAI) then\n");
$c                                      printf("                    $xci/and$X
$c                                                                              A1=$_____imagesA2.%04d$ROUGE
$c                                                                              A2=$xTV/COUPE
$c                                                                                                                      $formatI  |
$c                                                                  $xci/liste_points$X
$c                                                                              eX=FAUX
$c                                                                              eY=FAUX
$c                                                                              eNIVEAU=VRAI
$c                                                                              points=FAUX
$c                                                                                                                      $formatI
$c                                                                              | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COULEUR.%04d$ROUGE\n"
$c                                            ,n,n
$c                                             );
$c                                      printf("                    $xci/and$X
$c                                                                              A1=$_____imagesA2.%04d$VERTE
$c                                                                              A2=$xTV/COUPE
$c                                                                                                                      $formatI  |
$c                                                                  $xci/liste_points$X
$c                                                                              eX=FAUX
$c                                                                              eY=FAUX
$c                                                                              eNIVEAU=VRAI
$c                                                                              points=FAUX
$c                                                                                                                      $formatI
$c                                                                              | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COULEUR.%04d$VERTE\n"
$c                                            ,n,n
$c                                             );
$c                                      printf("                    $xci/and$X
$c                                                                              A1=$_____imagesA2.%04d$BLEUE
$c                                                                              A2=$xTV/COUPE
$c                                                                                                                      $formatI  |
$c                                                                  $xci/liste_points$X
$c                                                                              eX=FAUX
$c                                                                              eY=FAUX
$c                                                                              eNIVEAU=VRAI
$c                                                                              points=FAUX
$c                                                                                                                      $formatI
$c                                                                              | $SE -e 's/^.*=//'
$c                                                                                                  >   $xTV/COULEUR.%04d$BLEUE\n"
$c                                            ,n,n
$c                                             );
$c
$c                                      printf("                    $CA         $xTV/COULEUR.%04d$ROUGE
$c                                                                                                  >>! $FichierROUGE\n"
$c                                            ,n
$c                                             );
$c                                      printf("                    $CA         $xTV/COULEUR.%04d$VERTE
$c                                                                                                  >>! $FichierVERTE\n"
$c                                            ,n
$c                                             );
$c                                      printf("                    $CA         $xTV/COULEUR.%04d$BLEUE
$c                                                                                                  >>! $FichierBLEUE\n"
$c                                            ,n
$c                                             );
$c                                      printf("          else\n");
$c                                      printf("          endif\n");
$c                                      printf("else\n");
$c                                      printf("endif\n");
$c                                      }
$c
$c                            }

$Z                  set                 NpointsX=`$WC $xTV/COORDONNEES$COORD_X`
$Z                  set                 NpointsX=$NpointsX[$WC1]
$Z                  set                 NpointsY=`$WC $xTV/COORDONNEES$COORD_Y`
$Z                  set                 NpointsY=$NpointsY[$WC1]
$Z                  set                 NpointsZ=`$WC $xTV/COORDONNEES$COORD_Z`
$Z                  set                 NpointsZ=$NpointsZ[$WC1]
$Z
$Z                  set                 NpointsXY=`$xcg/MIN2.01$X n1=$NpointsX n2=$NpointsY`
$Z                  set                 NpointsXYZ=`$xcg/MIN2.01$X n1=$NpointsXY n2=$NpointsZ`
$Z
$Z                  set                 Part0=1
$Z                  set                 PartN=$NpointsXYZ
$Z
$Z                  $xci/valeurs_alea$X                                                                                                 \
$Z                                      premiere=$Part0 derniere=$PartN                                                                 \
$Z                                      inf=$_____Rayon                                                                                 \
$Z                                      sup=$_____Rayon                                                                                 \
$Z                                      graine=9999                                                                                     \
$Z                                                                                                  >   $xTV/COORDONNEES.r

$Z                  $DELETE             $xTV/ROTATION$COORD_X
$Z                  $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOX vA=$_____ARotOX cubique=VRAI                          \
$Z                                                                                                  >   $xTV/ROTATION$COORD_X
$Z                  $DELETE             $xTV/ROTATION$COORD_Y
$Z                  $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOY vA=$_____ARotOY cubique=VRAI                          \
$Z                                                                                                  >   $xTV/ROTATION$COORD_Y
$Z                  $DELETE             $xTV/ROTATION$COORD_Z
$Z                  $xci/valeurs_inte$X p=$PremiereR d=$DerniereR vD=$_____DRotOZ vA=$_____ARotOZ cubique=VRAI                          \
$Z                                                                                                  >   $xTV/ROTATION$COORD_Z

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=$Nimages                                                                                     \
$Z                                      iterations=$NpointsXYZ                                                                          \
$Z                                      LISTE_X=$xTV/COORDONNEES$COORD_X                                                                \
$Z                                      LISTE_Y=$xTV/COORDONNEES$COORD_Y                                                                \
$Z                                      LISTE_Z=$xTV/COORDONNEES$COORD_Z                                                                \
$Z                                      LISTE_ROUGE=$FichierROUGE                                                                       \
$Z                                      LISTE_VERTE=$FichierVERTE                                                                       \
$Z                                      LISTE_BLEUE=$FichierBLEUE                                                                       \
$Z                                      LISTE_RAYON=$xTV/COORDONNEES.r                                                                  \
$Z                                      zoom_automatique=FAUX ZOOM=0.7                                                                  \
$Z                                      ROTATION_OX=$xTV/ROTATION$COORD_X                                                               \
$Z                                      ROTATION_OY=$xTV/ROTATION$COORD_Y                                                               \
$Z                                      ROTATION_OZ=$xTV/ROTATION$COORD_Z                                                               \
$Z                                      coordonnees_dans_0_1=VRAI                                                                       \
$Z                                      brume=FAUX                                                                                      \
$Z                                      Lz=1000                                                                                         \
$Z                                      ZminimumT=0.4 ZmaximumT=1.0                                                                     \
$Z                                      Zminimum=0.4  Zmaximum=1.0                                                                      \
$Z                                      N_au_carre=FAUX                                                                                 \
$Z                                      RVB=$_____RVB                                                                                   \
$Z                                      R=$_____imagesR.                                                                                \
$Z                                                                                                                      $formatI



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.