#######################################################################################################################################
#                                                                                                                                     #
#         V I S U A L I S A T I O N   D ' U N E   S T R U C T U R E   D E   T Y P E                                                   #
#         P E A N O   T R I D I M E N S I O N N E L L E  :                                                                            #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiird/.PEA3.3.11.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20060210163712).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Donnees_1                $xie/Peano_3D.Filoche.11

$Z                  setParam            _____Donnees_2                $xie/Peano_3D.Filoche.12

$Z                  setParam            _____FconversionX             +81
$Z                                      # Parametre introduit le 20060211180732 et "specialise" en {X,Y,Z} le 20060213095033...       #

$Z                  setParam            _____FconversionY             +81
$Z                                      # Parametre introduit le 20060211180732 et "specialise" en {X,Y,Z} le 20060213095033...       #

$Z                  setParam            _____FconversionZ             -81
$Z                                      # Parametre introduit le 20060211180732 et "specialise" en {X,Y,Z} le 20060213095033...       #

$Z                  setParam            _____Selecteur                "1234"

$Z                  SETParam            _____Editer                   $NEXIST
$Z                                      # Parametre introduit le 20060212113740...                                                    #

$Z                  setParam            _____Palette                  $xiP/PEA3.31

$Z                  SETParam            _____Nimages                  1
$Z                                      # Parametre introduit le 20060220211813...                                                    #

$Z                  setParam            _____TranslationX             -0.15

$Z                  setParam            _____TranslationY             -0.17

$Z                  setParam            _____TranslationZ             0

$Z                  setParam            _____RotationX                +2.0

$Z                  setParam            _____RotationY                +0.4

$Z                  setParam            _____RotationZ                0

$Z                  setParam            _____Zoom                     1.05

$Z                  setParam            _____Rayon_1                  0.0050

$Z                  setParam            _____Rayon_2                  0.0055

$Z                  setParam            _____Zminimum                 0.05

$Z                  setParam            _____Lx                       0
$Z                                      # Parametre introduit le 20060212113740...                                                    #

$Z                  setParam            _____Ly                       0
$Z                                      # Parametre introduit le 20060212113740...                                                    #

$Z                  setParam            _____Lz                       100
$Z                                      # Parametre introduit le 20060212113740...                                                    #

$Z                  setParam            _____Couronne_1               `GetParam $xrv/particule.10 couronne`
$Z                                      # Parametre introduit le 20060222182344 et "divise" en deux le 20060224160556...              #
$Z                                      #                                                                                             #
$Z                                      # Il fut introduit afin que, par exemple sur 'v $xiird/PEA3.35', les aretes des cubes soient  #
$Z                                      # parfaitement visibles et ce quel que soient leur orientation (en effet, la valeur par       #
$Z                                      # defaut provoque un exces d'anti-aliasing qui attenue les aretes peu epaisses de certaines   #
$Z                                      # orientations...).                                                                           #

$Z                  setParam            _____Couronne_2               `GetParam $xrv/particule.10 couronne`
$Z                                      # Parametre introduit le 20060224160556...                                                    #

$Z                  setParam            _____Fond                     "$K_VIDE"
$Z                                      # Parametre introduit le 20060221171927...                                                    #

#20250211120812____:$Z                  setenv              LONGUEUR_NOMS       64                                                    #

$Z                  set                 DoNnEeS_1=`GetXTmp`

$Z                  $CP                 $_____Donnees_1$GZIP $DoNnEeS_1$GZIP
$Z                  $UNCOMPRES          $DoNnEeS_1$GZIP
$Z                                      # Duplication, puis decompression des donnees des facettes...                                 #

$Z                  $CA                 $DoNnEeS_1                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $AW                 ' { print $1 "\n" $1 } '                                                                        \
$Z                                                                                                > $DoNnEeS_1$COORD_X
$Z                                      # Recuperation des coordonnees 'X' des centres des facettes...                                #

$Z                  $CA                 $DoNnEeS_1                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $AW                 ' { print $2 "\n" $2 } '                                                                        \
$Z                                                                                                > $DoNnEeS_1$COORD_Y
$Z                                      # Recuperation des coordonnees 'Y' des centres des facettes...                                #

$Z                  $CA                 $DoNnEeS_1                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $AW                 ' { print $3 "\n" $3 } '                                                                        \
$Z                                                                                                > $DoNnEeS_1$COORD_Z
$Z                                      # Recuperation des coordonnees 'Z' des centres des facettes...                                #

$Z                  $CA                 $DoNnEeS_1                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $AW                 ' { print $5 "\n" $5 } '                                                                        \
$Z                                                                                                > $DoNnEeS_1$RVB
$Z                                      # Recuperation des "activites" definissant les niveaux des centres des facettes...            #

$Z                  $xrv/neutre$X       ne=0 fichier=$DoNnEeS_1$RVB                                                               |     \
$Z                  $SE                 -e 's/^.*$'"/$_____Rayon_1/"                                                                    \
$Z                                                                                                > $DoNnEeS_1.r
$Z                                      # Generation du rayon...                                                                      #

$Z                  set                 NoMbRe_NiVeAuX=`$CA $DoNnEeS_1$RVB | $SOR -u | $WCl`
$Z                  set                 NiVeAu_MiNiMaL=`$xrv/extrema.01$X ne=0 fichier=$DoNnEeS_1$RVB minimum_seul=VRAI`
$Z                  set                 NiVeAu_MaXiMaL=`$xrv/extrema.01$X ne=0 fichier=$DoNnEeS_1$RVB maximum_seul=VRAI`
$Z                  set                 PaS_NiVeAu=`calcul ($NiVeAu_MaXiMaL-$NiVeAu_MiNiMaL)/$NoMbRe_NiVeAuX`

$Z                  set                 DoNnEeS_2=`GetXTmp`

$Z                  $CP                 $_____Donnees_2$GZIP $DoNnEeS_2$GZIP
$Z                  $UNCOMPRES          $DoNnEeS_2$GZIP
$Z                                      # Duplication, puis decompression des donnees des aretes...                                   #

$Z                  $CA                 $DoNnEeS_2                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $GRE                ' ['"$_____Selecteur"']$'                                                                 |     \
$Z                  $AW                 ' { print $1 "\n" $4 } '                                                                  |     \
$Z                  $xrv/DIVZ.11$X      ne=0 fichier1="=" fichier2=$_____FconversionX                                                   \
$Z                                                                                                > $DoNnEeS_2$COORD_X
$Z                                      # Recuperation des coordonnees 'X' des centres des aretes de niveau '$_____Selecteur'...      #

$Z                  $CA                 $DoNnEeS_2                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $GRE                ' ['"$_____Selecteur"']$'                                                                 |     \
$Z                  $AW                 ' { print $2 "\n" $5 } '                                                                  |     \
$Z                  $xrv/DIVZ.11$X      ne=0 fichier1="=" fichier2=$_____FconversionY                                                   \
$Z                                                                                                > $DoNnEeS_2$COORD_Y
$Z                                      # Recuperation des coordonnees 'Y' des centres des aretes de niveau '$_____Selecteur'...      #

$Z                  $CA                 $DoNnEeS_2                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $GRE                ' ['"$_____Selecteur"']$'                                                                 |     \
$Z                  $AW                 ' { print $3 "\n" $6 } '                                                                  |     \
$Z                  $xrv/DIVZ.11$X      ne=0 fichier1="=" fichier2=$_____FconversionZ                                                   \
$Z                                                                                                > $DoNnEeS_2$COORD_Z
$Z                                      # Recuperation des coordonnees 'Z' des centres des aretes de niveau '$_____Selecteur'...      #

$Z                  set                 DeCaLaGe_DoNnEeS_2=`calcul $NiVeAu_MaXiMaL+(2*$PaS_NiVeAu)`
$Z                                      # Introduit le 20060212113740 afin de marquer dans '$DoNnEeS$RVB' la frontiere entre les      #
$Z                                      # niveaux des facettes ('$DoNnEeS_1$RVB') et les niveaux des aretes ('v $DoNnEeS_2$RVB').     #

$Z                  $CA                 $DoNnEeS_2                                                                                |     \
$Z                  $GRE                -v '^#'                                                                                   |     \
$Z                  $GRE                ' ['"$_____Selecteur"']$'                                                                 |     \
$Z                  $AW                 ' { print $7 "\n" $7 } '                                                                  |     \
$Z                  $xrv/ADD2.11$X      ne=0 fichier1="=" fichier2=$DeCaLaGe_DoNnEeS_2                                                  \
$Z                                                                                                > $DoNnEeS_2$RVB
$Z                                      # Recuperation des "niveaux de recursivite" definissant les niveaux des centres des aretes,   #
$Z                                      # qui sont "mis apres" les niveaux de '$DoNnEeS_1$RVB'...                                     #

$Z                  $xrv/neutre$X       ne=0 fichier=$DoNnEeS_2$RVB                                                               |     \
$Z                  $SE                 -e 's/^.*$'"/$_____Rayon_2/"                                                                    \
$Z                                                                                                > $DoNnEeS_2.r
$Z                                      # Generation du rayon...                                                                      #

$Z                  set                 DoNnEeS=`GetXTmp`

$Z                  $CA                 $DoNnEeS_1$COORD_X $DoNnEeS_2$COORD_X                                                     |     \
$Z                  $xrv/normalise.01$X ne=0 fichier== minimum=0 maximum=1                                                              \
$Z                                                                                                > $DoNnEeS$COORD_X
$Z                                      # Generation des coordonnees 'X'...                                                           #

$Z                  $CA                 $DoNnEeS_1$COORD_Y $DoNnEeS_2$COORD_Y                                                     |     \
$Z                  $xrv/normalise.01$X ne=0 fichier== minimum=0 maximum=1                                                              \
$Z                                                                                                > $DoNnEeS$COORD_Y
$Z                                      # Generation des coordonnees 'Y'...                                                           #

$Z                  $CA                 $DoNnEeS_1$COORD_Z $DoNnEeS_2$COORD_Z                                                     |     \
$Z                  $xrv/normalise.01$X ne=0 fichier== minimum=0 maximum=0.5                                                            \
$Z                                                                                                > $DoNnEeS$COORD_Z
$Z                                      # Generation des coordonnees 'Z'...                                                           #

$Z                  $CA                 $DoNnEeS_1$RVB $DoNnEeS_2$RVB                                                             |     \
$Z                  $xrv/normalise.01$X ne=0 fichier== minimum=$NOIR_PLANCHER maximum=$BLANC                                            \
$Z                                      formater=VRAI entiers=VRAI signe="$K_VIDE"                                                      \
$Z                                                                                                > $DoNnEeS$RVB
$Z                                      # Generation des niveaux...                                                                   #

$Z                  $CA                 $DoNnEeS_1.r $DoNnEeS_2.r                                                                       \
$Z                                                                                                > $DoNnEeS.r
$Z                                      # Generation du rayon...                                                                      #

$Z                  set                 NpointsX=`$CA $DoNnEeS$COORD_X | $WCl`
$Z                  set                 NpointsY=`$CA $DoNnEeS$COORD_Y | $WCl`
$Z                  set                 NpointsZ=`$CA $DoNnEeS$COORD_Z | $WCl`
#20220615102532____:$Z                  set                 NpointsXYZ=`$xcg/MAX3.01$X x=$NpointsX y=$NpointsY z=$NpointsZ`           #
$Z                  set                 NpointsXYZ=`$xcg/MIN3.01$X x=$NpointsX y=$NpointsY z=$NpointsZ`
$Z                  set                 NpointsN=`$CA $DoNnEeS$RVB | $WCl`
$Z                  set                 Npoints=`$xcg/MIN2.01$X a=$NpointsXYZ b=$NpointsN signe="$K_VIDE"`

$Z                  if                  ($_____Editer == $EXIST) then
$Z                                      echo                "Npoints=$Npoints"
$Z                                      set                 LiStE_NiVeAuX=`$CA $DoNnEeS$RVB | $SOR -un`
$Z                                      set                 LiStE_NiVeAuX=`echo "$LiStE_NiVeAuX" | $R "$K_BLANC" ","`
$Z                                      echo                "Niveaux={$LiStE_NiVeAuX}"
$Z                  else
$Z                  endif

$Z                  if                  ($_____Nimages == 1) then
$Z                                      set                 ChIfFrEs=0
$Z                  else
$Z                                      set                 ChIfFrEs=4
$Z                  endif

$Z                  set                 Couronne_min=`$xcg/MIN2.01$X a=$_____Couronne_1 b=$_____Couronne_2`
$Z                  set                 Couronne_max=`$xcg/MAX2.01$X a=$_____Couronne_1 b=$_____Couronne_2`

$Z                  set                 Couronne_Rmin=`$xcg/MIN2.01$X a=$_____Rayon_1 b=$_____Rayon_2`
$Z                  set                 Couronne_Rmax=`$xcg/MAX2.01$X a=$_____Rayon_1 b=$_____Rayon_2`
$Z                                      # Cette facon de parametrer l'anti-aliasing a ete introduite le 20060224160556...             #

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=$_____Nimages                                                                                \
$Z                                      npoints=$Npoints                                                                                \
$Z                                      isoles=FAUX chainer=FAUX Pajuster=VRAI equidistance=VRAI distance_minimale=0.001                \
$Z                                      LISTE_X=$DoNnEeS$COORD_X                                                                        \
$Z                                      LISTE_Y=$DoNnEeS$COORD_Y                                                                        \
$Z                                      LISTE_Z=$DoNnEeS$COORD_Z                                                                        \
$Z                                      ARVB=1 BRVB=0                                                                                   \
$Z                                      LISTE_NIVEAU=$DoNnEeS$RVB                                                                       \
$Z                                      LISTE_RAYON=$DoNnEeS.r                                                                          \
$Z                                      palette=$_____Palette                                                                           \
$Z                                      TRANSLATION_OX=$_____TranslationX                                                               \
$Z                                      TRANSLATION_OY=$_____TranslationY                                                               \
$Z                                      TRANSLATION_OZ=$_____TranslationZ                                                               \
$Z                                      ROTATION_OY=$_____RotationY                                                                     \
$Z                                      ROTATION_OX=$_____RotationX                                                                     \
$Z                                      ROTATION_OZ=$_____RotationZ                                                                     \
$Z                                      ZOOM=$_____Zoom                                                                                 \
$Z                                      ZminimumT=$_____Zminimum ZmaximumT=1.0 Zminimum=$_____Zminimum Zmaximum=1.0                     \
$Z                                      Lx=$_____Lx                                                                                     \
$Z                                      Ly=$_____Ly                                                                                     \
$Z                                      Lz=$_____Lz                                                                                     \
$Z                                      N_AU_CARRE=FAUX                                                                                 \
$Z                                      couronne=$Couronne_max                                                                          \
$Z                                      moduler_couronne=VRAI                                                                           \
$Z                                      minimum_couronne=$Couronne_min rayon_minimum_couronne=$Couronne_Rmin                            \
$Z                                      maximum_couronne=$Couronne_max rayon_maximum_couronne=$Couronne_Rmax                            \
$Z                                      fond_dynamique=FAUX $_____Fond                                                                  \
$Z                                      chiffres=$ChIfFrEs                                                                              \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                                                  $formatI
$Z                                      # ATTENTION : a l'ordre des rotations {OY,OX,OZ}...                                           #
$Z                                      #                                                                                             #
$Z                                      # Le 20060212132738, le parametre "distance_minimale=" est passe de 0.002 a 0.001.            #

$Z                  $DELETE             $DoNnEeS_1                                                  >& $nul
$Z                  $DELETE             $DoNnEeS_1.*                                                >& $nul

$Z                  $DELETE             $DoNnEeS_2                                                  >& $nul
$Z                  $DELETE             $DoNnEeS_2.*                                                >& $nul

$Z                  $DELETE             $DoNnEeS                                                    >& $nul
$Z                  $DELETE             $DoNnEeS.*                                                  >& $nul



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