#######################################################################################################################################
#                                                                                                                                     #
#         D E F I N I T I O N   D ' U N   O R N E M E N T   D E   Y O U R T E   F U N E R A I R E                                     #
#         E N   V E R S I O N   N O N   R E C U R S I V E  :                                                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirf/.YOUF.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois COLONNA (LACTAMME, 20070717164834).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Cubique                  VRAI
$Z                                      # Parametre introduit le 20070719111851...                                                    #

$Z                  setParam            _____Etages                   4

$Z                  setParam            _____RVisu1                   0.02

$Z                  setParam            _____RVisu2                   0.08

$Z                  setParam            _____dxP1G                    0
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____dyP1G                    -1
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____dxP1_                    1
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____dyP1_                    0
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____dxP1D                    0
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____dyP1D                    +1
$Z                                      # Parametre introduit le 20070718113400...                                                    #

$Z                  setParam            _____MinROUGE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____MaxROUGE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____MinVERTE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____MaxVERTE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____MinBLEUE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____MaxBLEUE                 $BLANC
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____Graine                   1789
$Z                                      # Parametre introduit le 20070718091733...                                                    #

$Z                  setParam            _____DGraine                  11
$Z                                      # Parametre introduit le 20070718093056...                                                    #

#20250211120543____:$Z                  setenv    LONGUEUR_NOMS 60                                                                    #

$Z                  set       PrecisionCalcul=4
$Z                                      # Parametrage general...                                                                      #

$Z                  set       CoOrd_x0=0.5
$Z                  set       CoOrd_y0=0.5
$Z                  set       RaYoN=0.4
$Z                                      # L'ornement de yourte funeraire est defini a l'aide du motif suivant :                       #
$Z                                      #                                                                                             #
$Z                                      #                          R       R                                                          #
$Z                                      #                   P1G _______M_______ P1D                                                   #
$Z                                      #                       \      |      /                                                       #
$Z                                      #                         \    R    /                                                         #
$Z                                      #                           \  |  /                                                           #
$Z                                      #                             \|/                                                             #
$Z                                      #                                                                                             #
$Z                                      #                              P1                                                             #
$Z                                      #                                                                                             #
$Z                                      # ou "R" vaut '$RaYoN' et ou {x0,y0} sont les coordonnees du point 'M' ci-dessus...           #
$Z                                      #                                                                                             #
$Z                                      # Ce motif est ensuite reproduit recursivement aux points 'P1G' et 'P1D' apres reduction de   #
$Z                                      # moitie...                                                                                   #

$Z                  set       dCoOrd_xP1G=$_____dxP1G
$Z                  set       dCoOrd_yP1G=$_____dyP1G
$Z                  set       RaYoN_P1G=$_____RVisu1
$Z                                      # Definition du point 'P1G'.                                                                  #

$Z                  set       dCoOrd_xP1_=$_____dxP1_
$Z                  set       dCoOrd_yP1_=$_____dyP1_
$Z                  set       RaYoN_P1_=$_____RVisu2
$Z                                      # Definition du point 'P1'.                                                                   #

$Z                  set       dCoOrd_xP1D=$_____dxP1D
$Z                  set       dCoOrd_yP1D=$_____dyP1D
$Z                  set       RaYoN_P1D=$_____RVisu1
$Z                                      # Definition du point 'P1D'.                                                                  #

$Z                  FileTmpB  Image1
$Z                                      # Image du fond...                                                                            #

$Z                  execRVB   $xci/init$X         niveau=$NOIR R=$Image1%s                          $formatI
$Z                                      # Generation de l'image du fond...                                                            #

$Z                  set       ReDuCtIoN=2
$Z                                      # Facteur de reduction (constant) de passage d'un etage a l'autre...                          #
$Z                                      #                                                                                             #
$Z                                      # ATTENTION : ce facteur de reduction ne peut valoir que 2. Ceci est du a la methode non      #
$Z                                      # recursive de construction qui fait que l'on construit etage apres etage au moyen d'une      #
$Z                                      # translation qui est propre a chaque etage et qui est constante sur chaque etage ; or cette  #
$Z                                      # constance n'est vraie que pour un facteur egal a 2. On verra avec profit le programme       #
$Z                                      # 'v $xiirf/.YOUF.31.1.$U _____Reduction' qui corrige ce defaut...                            #

$Z                  set       DiViSeUr=1
$Z                                      # Diviseur courant des coordonnees, du rayon,...                                              #

$Z                  set       SaVe_NElEmEnTsH=1
$Z                                      # Nombre d'elements du premier etage (puis ensuite des etages superieurs...).                 #

$Z                  set       NEtAgEs=$_____Etages
$Z                                      # Nombre d'etages...                                                                          #

$Z                  set       GrAiNe=$_____Graine
$Z                                      # Graine du generateur aleatoire de couleurs...                                               #

$Z                  while     ($NEtAgEs > 0)
$Z                            set       NElEmEnTsH=$SaVe_NElEmEnTsH

$Z                            set       TrAnSlAtIoN=0
$Z                                      # Translation horizontale permettant de passer d'un element a son voisin de droite...         #

$Z                            while     ($NElEmEnTsH > 0)
$Z                                      FileTmpB  FPoint2
$Z                                      # Fichiers decrivant les trois points {P2G,P2,P2D}.                                           #

$Z                                      set       CoOrd_xP2G=`calculNS $CoOrd_x0-$RaYoN+$TrAnSlAtIoN`
$Z                                      set       CoOrd_yP2G=`calculNS $CoOrd_y0`
$Z                                      set       dCoOrd_xP2G=`calculNS $dCoOrd_xP1G/$DiViSeUr`
$Z                                      set       dCoOrd_yP2G=`calculNS $dCoOrd_yP1G/$DiViSeUr`
$Z                                      set       RaYoN_P2G=`calculNS $RaYoN_P1G/$DiViSeUr`
$Z                                      # Definition du point 'P2G' courant.                                                          #

$Z                                      set       CoOrd_xP2_=`calculNS $CoOrd_x0+$TrAnSlAtIoN`
$Z                                      set       CoOrd_yP2_=`calculNS $CoOrd_y0-$RaYoN`
$Z                                      set       dCoOrd_xP2_=`calculNS $dCoOrd_xP1_/$DiViSeUr`
$Z                                      set       dCoOrd_yP2_=`calculNS $dCoOrd_yP1_/$DiViSeUr`
$Z                                      set       RaYoN_P2_=`calculNS $RaYoN_P1_/$DiViSeUr`
$Z                                      # Definition du point 'P2' courant.                                                           #

$Z                                      set       CoOrd_xP2D=`calculNS $CoOrd_x0+$RaYoN+$TrAnSlAtIoN`
$Z                                      set       CoOrd_yP2D=`calculNS $CoOrd_y0`
$Z                                      set       dCoOrd_xP2D=`calculNS $dCoOrd_xP1D/$DiViSeUr`
$Z                                      set       dCoOrd_yP2D=`calculNS $dCoOrd_yP1D/$DiViSeUr`
$Z                                      set       RaYoN_P2D=`calculNS $RaYoN_P1D/$DiViSeUr`
$Z                                      # Definition du point 'P2D' courant.                                                          #

$Z                                      FileTmpB  FPoint2

$Z                                      echo      $CoOrd_xP2G                                       >>! $FPoint2$COORD_X
$Z                                      echo      $CoOrd_xP2_                                       >>! $FPoint2$COORD_X
$Z                                      echo      $CoOrd_xP2D                                       >>! $FPoint2$COORD_X

$Z                                      echo      $CoOrd_yP2G                                       >>! $FPoint2$COORD_Y
$Z                                      echo      $CoOrd_yP2_                                       >>! $FPoint2$COORD_Y
$Z                                      echo      $CoOrd_yP2D                                       >>! $FPoint2$COORD_Y

$Z                                      echo      $dCoOrd_xP2G                                      >>! $FPoint2.d$COORD_X
$Z                                      echo      $dCoOrd_xP2_                                      >>! $FPoint2.d$COORD_X
$Z                                      echo      $dCoOrd_xP2D                                      >>! $FPoint2.d$COORD_X

$Z                                      echo      $dCoOrd_yP2G                                      >>! $FPoint2.d$COORD_Y
$Z                                      echo      $dCoOrd_yP2_                                      >>! $FPoint2.d$COORD_Y
$Z                                      echo      $dCoOrd_yP2D                                      >>! $FPoint2.d$COORD_Y

$Z                                      echo      $RaYoN_P2G                                        >>! $FPoint2.r
$Z                                      echo      $RaYoN_P2_                                        >>! $FPoint2.r
$Z                                      echo      $RaYoN_P2D                                        >>! $FPoint2.r

$Z                                      FileTmpB  Image2
$Z                                      # Images des images des niveaux superieurs.                                                   #

$Z                                      set       NPoInTsX=`$CA $FPoint2$COORD_X | $WCl`
$Z                                      set       NPoInTsY=`$CA $FPoint2$COORD_Y | $WCl`
$Z                                      set       NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`

$Z                                      $xrv/val_alea.01$X                                                                              \
$Z                                                          ne=$NPoInTs                                                                 \
$Z                                                          graine=$GrAiNe                                                              \
$Z                                                          LISTE_BORNES_INFERIEURES=$_____MinROUGE                                     \
$Z                                                          LISTE_BORNES_SUPERIEURES=$_____MaxROUGE                                     \
$Z                                                          entiers=VRAI                                                                \
$Z                                                                                                  >   $FPoint2$ROUGE

$Z                                      @         GrAiNe = $GrAiNe + $_____DGraine

$Z                                      $xrv/val_alea.01$X                                                                              \
$Z                                                          ne=$NPoInTs                                                                 \
$Z                                                          graine=$GrAiNe                                                              \
$Z                                                          LISTE_BORNES_INFERIEURES=$_____MinVERTE                                     \
$Z                                                          LISTE_BORNES_SUPERIEURES=$_____MaxVERTE                                     \
$Z                                                          entiers=VRAI                                                                \
$Z                                                                                                  >   $FPoint2$VERTE

$Z                                      @         GrAiNe = $GrAiNe + $_____DGraine

$Z                                      $xrv/val_alea.01$X                                                                              \
$Z                                                          ne=$NPoInTs                                                                 \
$Z                                                          graine=$GrAiNe                                                              \
$Z                                                          LISTE_BORNES_INFERIEURES=$_____MinBLEUE                                     \
$Z                                                          LISTE_BORNES_SUPERIEURES=$_____MaxBLEUE                                     \
$Z                                                          entiers=VRAI                                                                \
$Z                                                                                                  >   $FPoint2$BLEUE

$Z                                      @         GrAiNe = $GrAiNe + $_____DGraine

$Z                                      $xrv/particule.10$X                                                                             \
$Z                                                          npoints=$NPoInTs                                                            \
$Z                                                          LISTE_X=$FPoint2$COORD_X                                                    \
$Z                                                          LISTE_Y=$FPoint2$COORD_Y                                                    \
$Z                                                          LISTE_Z=0                                                                   \
$Z                                                          LISTE_dX=$FPoint2.d$COORD_X                                                 \
$Z                                                          LISTE_dY=$FPoint2.d$COORD_Y                                                 \
$Z                                                          LISTE_dZ=0                                                                  \
$Z                                                          LISTE_RAYON=$FPoint2.r                                                      \
$Z                                                          LISTE_ROUGE=$FPoint2$ROUGE                                                  \
$Z                                                          LISTE_VERTE=$FPoint2$VERTE                                                  \
$Z                                                          LISTE_BLEUE=$FPoint2$BLEUE                                                  \
$Z                                                          isoles=FAUX                                                                 \
$Z                                                          Pajuster=VRAI                                                               \
$Z                                                          chainer=VRAI                                                                \
$Z                                                          equidistance=VRAI                                                           \
$Z                                                          cubique=$_____Cubique                                                       \
$Z                                                          ZOOM=1                                                                      \
$Z                                                          fond=VRAI F=$Image1                                                         \
$Z                                                          extrema_hors=FAUX                                                           \
$Z                                                          R=$Image2                                                                   \
$Z                                                          chiffres=0                                                                  \
$Z                                                                                                                      $formatI
$Z                                      # Generation de l'image des niveaux superieurs.                                               #

$Z                                      execRVB   $xci/neutre$X       A=$Image2%s R=$Image1%s                           $formatI

$Z                                      FileTmpE  Image2

$Z                                      FileTmpE  FPoint2

$Z                                      set       TrAnSlAtIoN=`calculNS $TrAnSlAtIoN+(2*$ReDuCtIoN*$RaYoN)`
$Z                                      @         NElEmEnTsH = $NElEmEnTsH - 1
$Z                            end

$Z                            @         NEtAgEs = $NEtAgEs - 1
$Z                                      # Passage a l'etage superieur...                                                              #
$Z                            @         SaVe_NElEmEnTsH = $SaVe_NElEmEnTsH * 2
$Z                                      # En passant d'un etage a l'etage superieur, le nombre d'elements est multiplie par deux...   #
$Z                            set       DiViSeUr=`calculNS $ReDuCtIoN*$DiViSeUr`
$Z                                      # En passant d'un etage a l'etage superieur, les elements sont deux fois plus petits...       #

$Z                            set       CoOrd_x0=`calculNS $CoOrd_x0-$RaYoN`

$Z                            set       RaYoN=`calculNS $RaYoN/$ReDuCtIoN`
$Z                                      # ATTENTION : la division faite ici est par '$ReDuCtIoN' et non pas par '$DiViSeUr (qui ne    #
$Z                                      # vaut 2 qu'au second etage...                                                                #

$Z                            set       CoOrd_y0=`calculNS $CoOrd_y0+$RaYoN`
$Z                  end

$Z                  execRVB   $xci/neutre$X       A=$Image1%s R=$_____ImageR%s                      $formatI

$Z                  FileTmpE  Image1



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.