#######################################################################################################################################
#                                                                                                                                     #
#         Q U A D R A G U L A T I O N   D ' U N   A R B R E                                                                           #
#         G R A C E   A   L A   B I J E C T I O N   D E   S C H A E F F E R  :                                                        #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.QUAD.11.2.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20150624093241).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  SETParam            _____SupRedondants            $NEXIST
$Z                                      # Parametre introduit le 20150628181208...                                                    #

$Z                  SETParam            _____ListerNoeudsEtiquettes   $EXIST
$Z                                      # Parametre introduit le 20150626112221...                                                    #

$Z                  SETParam            _____VisualiserArbre          $EXIST

$Z                  SETParam            _____VisualiserGraphe         $EXIST

$Z                  if        (($_____VisualiserArbre == $NEXIST) && ($_____VisualiserGraphe == $NEXIST)) then
$Z                            EROR      "Rien n'est a visualiser, tout sera donc visualise."
$Z                            SET       _____VisualiserArbre=$EXIST
$Z                            SET       _____VisualiserGraphe=$EXIST
$Z                  else
$Z                  endif

$Z                  setParam            _____Eval                     "$K_VIDE"

$Z                  setParam            _____RayonA                   0.020
$Z                                      # Le 20150629114547 les rayons de l'Arbre et du Graphe ont ete differencies...                #

$Z                  setParam            _____RayonG                   0.018
$Z                                      # Le 20150629114547 les rayons de l'Arbre et du Graphe ont ete differencies...                #

$Z                  setParam            _____Grossissement            2

$Z                  setParam            _____Zoom                     1.0

$Z                  setParam            _____RotationX                0

$Z                  setParam            _____RotationY                0

$Z                  setParam            _____RotationZ                0

$Z                  setParam            _____TranslationX             `GetParam $xrv/particule.10$X TRANSLATION_OX`

$Z                  setParam            _____TranslationY             `GetParam $xrv/particule.10$X TRANSLATION_OY`

$Z                  setParam            _____TranslationZ             `GetParam $xrv/particule.10$X TRANSLATION_OZ`

$Z                  setParam            _____Cubique                  VRAI

$Z                  SETParam            _____CDeriveeX                $NEXIST
$Z                                      # Parametre introduit le 20150626205206...                                                    #

$Z                  SETParam            _____CDeriveeY                $NEXIST
$Z                                      # Parametre introduit le 20150626205206...                                                    #

$Z                  setParam            _____DeriveeXA                0

$Z                  setParam            _____DeriveeYA                0

$Z                  setParam            _____DeriveeZA                0

$Z                  setParam            _____DeriveeXB                0

$Z                  setParam            _____DeriveeYB                0

$Z                  setParam            _____DeriveeZB                0

$Z                  setParam            _____DistanceMini             0.005

$Z                  setParam            _____Couronne                 `GetParam $xrv/particule.10$X couronne`
$Z                                      # Parametre introduit le 20191015141056...                                                    #

$Z                  setParam            _____SousArbre                "$K_VIDE"

$Z                  setParam            _____NiveauE                  "$GRIS_8"

$Z                  setParam            _____NiveauD                  "$GRIS_1"

$Z                  setParam            _____ARouge                   $GRIS_8

$Z                  setParam            _____AVerte                   $GRIS_8

$Z                  setParam            _____ABleue                   $GRIS_8

$Z                  SETParam            _____CGraine                  1789

$Z                  SETParam            _____GRouge                   $GRIS_8
$Z                                      # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0'      #
$Z                                      # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de      #
$Z                                      # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs).  #

$Z                  SETParam            _____GVerte                   $GRIS_6
$Z                                      # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0'      #
$Z                                      # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de      #
$Z                                      # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs).  #

$Z                  SETParam            _____GBleue                   $GRIS_0
$Z                                      # Lorsque {$_____GRouge,$_____GVerte,$_____GBleue} sont tous les trois egaux a '$GRIS_0'      #
$Z                                      # (ATTENTION : '$GRIS_0' n'est pas egal a '0', mais a '000'), alors les trois niveaux de      #
$Z                                      # gris sont tires au sort (cela permet de differencier plus facilement les differents arcs).  #

$Z                  setParam            _____Fond                     "$K_VIDE"

$Z                  setParam            _____NAuCarre                 VRAI

$Z                  setParam            _____ParticulePara1           "$K_VIDE"

$Z                  setParam            _____Redirection              "$K_VIDE"

$Z                  $CA                 $FiLeTmP_ARBRE                                                                            |     \
$Z                  $SE                 -e "s/^.*NumeroNoeud=//"                                                                        \
$Z                                      -e 's/^\([^ ][^ ]*\) .*$/\1/'                                                                   \
$Z                                                          >   $FiLeTmP_ARBRE.NUMEROS

$Z                  $CA                 $FiLeTmP_ARBRE                                                                            |     \
$Z                  $GRE                " NumeroPere="                                                                            |     \
$Z                  $SE                 -e "s/^.* NumeroPere=//"                                                                        \
$Z                                      -e 's/\(  *\)NumeroNoeud=\([^ ][^ ]*\) .*$/\1\2/'                                         |     \
$Z                  $SOR                -u -n                                                                                           \
$Z                                                          >   $FiLeTmP_ARBRE.ARETES_ARBRE

$Z                  $CA                 $FiLeTmP_ARBRE                                                                            |     \
$Z                  $SE                 -e "s/^.*EtiquetteNoeud=//"                                                                     \
$Z                                      -e 's/^\([^ ][^ ]*\) .*$/\1/'                                                                   \
$Z                                                          >   $FiLeTmP_ARBRE.ETIQUETTES

$Z                  if                  ($_____ListerNoeudsEtiquettes == $EXIST) then
$Z                                      $PAST               $FiLeTmP_ARBRE.NUMEROS $FiLeTmP_ARBRE.ETIQUETTES                      |     \
$Z                                      $AW                 ' { print "NumeroNoeud=" $1 " EtiquetteNoeud=" $2 } '
$Z                  else
$Z                  endif

$Z                  if                  ($_____SupRedondants == $EXIST) then
$Z                                      # Test introduit le 20150629101303...                                                         #
$Z                                      set                 TrIeR_NoEuDs=VRAI
$Z                  else
$Z                                      # Test introduit le 20150629101303...                                                         #
$Z                                      set                 TrIeR_NoEuDs=FAUX
$Z                  endif

$Z                  $xrv/QuadrangulationArbre.11$X                                                                                      \
$Z                                      ne=0                                                                                            \
$Z                                      numeros=$FiLeTmP_ARBRE.NUMEROS                                                                  \
$Z                                      etiquettes=$FiLeTmP_ARBRE.ETIQUETTES                                                            \
$Z                                      aretes=VRAI                                                                                     \
$Z                                      trier_noeuds=$TrIeR_NoEuDs                                                                      \
$Z                                      editer_dernier_numero=FAUX                                                                      \
$Z                                      formater=VRAI signe="$K_VIDE"                                                             |     \
$Z                  $SOR                -u                                                                                              \
$Z                                                          >   $FiLeTmP_ARBRE.ARETES_GRAPHE
$Z                                      # Le 20150628181208709 j'ai supprime les "+" devant les numeros car, en effet, pour que le    #
$Z                                      # tri numerique fonctionne correctement il faut que les nombres de plus d'un chiffre ne       #
$Z                                      # soient pas signes...                                                                        #
$Z                                      #                                                                                             #
$Z                                      # ATTENTION, ne surtout pas utiliser :                                                        #
$Z                                      #                                                                                             #
$Z                                      #                   $SOR                -u -n                                                 #
$Z                                      #                                                                                             #
$Z                                      # Le 20150629101303 j'ai supprime l'edition du dernier numero afin de ne pas revenir sur      #
$Z                                      # la racine de quadragulation...                                                              #

$Z                  $CA                 $FiLeTmP_ARBRE                                                                            |     \
$Z                  $SE                 -e "s/^.*NumeroNoeud=//"                                                                        \
$Z                                      -e "s/^\([^ ][^ ]*\) .*\( X2=\)/\1\2/"                                                          \
$Z                                      -e "s/[XYZ]2=//g"                                                                               \
$Z                                                          >   $FiLeTmP_ARBRE.NOEUDS

$Z                  if                  ($_____SupRedondants == $EXIST) then
$Z                                      # Test introduit le 20150628181208...                                                         #
$Z                                      set                 MaRqUeUr="_"

$Z                                      $CA                 $FiLeTmP_ARBRE.NOEUDS                                                 |     \
$Z                                      $AW                 ' { print $1 " " $2 "'"$MaRqUeUr"'" $3 "'"$MaRqUeUr"'" $4 } '         |     \
$Z                                      $SOR                --key=2                                                                     \
$Z                                                                              >   $FiLeTmP_ARBRE.NOEUDS_TRIES
$Z                                      $CA                 $FiLeTmP_ARBRE.NOEUDS_TRIES                                           |     \
$Z                                      $UNI                --skip-fields=1                                                             \
$Z                                                                              >   $FiLeTmP_ARBRE.NOEUDS_UNIQUES

$Z                                      set                 NNoEuDs=`$CA $FiLeTmP_ARBRE.NOEUDS_UNIQUES | $WCl`
$Z                                      set                 NoEuD=1

$Z                                      while               ($NoEuD <= $NNoEuDs)
$Z                                           set  NoEuDu=`(listMN $FiLeTmP_ARBRE.NOEUDS_UNIQUES $NoEuD $NoEuD) | $AW ' { print $1 }'`
$Z                                           set  XYZu=`(listMN $FiLeTmP_ARBRE.NOEUDS_UNIQUES $NoEuD $NoEuD) | $AW ' { print $2 }'`

$Z                                                          $CA                 $FiLeTmP_ARBRE.NOEUDS_TRIES                       |     \
$Z                                                          $GRE                " $XYZu"'$'                                       |     \
$Z                                                          $AW                 ' { print "s/^" $1 " /'"$NoEuDu "'/" } '                \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$sed

$Z                                                          $CA                 $FiLeTmP_ARBRE.NOEUDS_TRIES                       |     \
$Z                                                          $GRE                " $XYZu"'$'                                       |     \
$Z                                                          $AW                 ' { print "s/ " $1 "$/'" $NoEuDu"'/" } '                \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$sed
$Z                                      # Construction d'une table de conversion remplacant tous les numeros de noeud correspondant   #
$Z                                      # a un meme point {X,Y,Z} par le premier d'entre-eux. Ainsi dans cet exemple :                #
$Z                                      #                                                                                             #
$Z                                      #                                                                                             #
$Z                                      #                                          N=5                                                #
$Z                                      #                                                                                             #
$Z                                      #                                           *                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                       N=4 | N=6                                             #
$Z                                      #                   N=3 *-------------------*-------------------* N=7                         #
$Z                                      #                                       N=2 | N=8                                             #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                      N=0                  |                                                 #
$Z                                      #                                           |                                                 #
$Z                                      #                       *               N=1 * N=9                                             #
$Z                                      #                                                                                             #
$Z                                      #                                                                                             #
$Z                                      # (qui est un arbre ternaire) les noeuds {2,4,6,8} sont un seul noeud (2) et de meme les      #
$Z                                      # noeuds {1,9} sont un seul noeud (1)...                                                      #

$Z                                                          @                   NoEuD = $NoEuD + 1
$Z                                      end

$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_ARBRE                                           |     \
$Z                                      $SE                 -f $FiLeTmP_ARBRE$sed                                                 |     \
$Z                                      $AW                 ' { print $1 } '                                                            \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_ARBRE.1

$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_ARBRE                                           |     \
$Z                                      $SE                 -f $FiLeTmP_ARBRE$sed                                                 |     \
$Z                                      $AW                 ' { print $2 } '                                                            \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_ARBRE.2

$Z                                      $xrv/MIN2.11$X      ne=0                                                                        \
$Z                                                          fichier1=$FiLeTmP_ARBRE.ARETES_ARBRE.1                                      \
$Z                                                          fichier2=$FiLeTmP_ARBRE.ARETES_ARBRE.2                                      \
$Z                                                          formater=VRAI signe="$K_VIDE"                                               \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_ARBRE.min

$Z                                      $xrv/MAX2.11$X      ne=0                                                                        \
$Z                                                          fichier1=$FiLeTmP_ARBRE.ARETES_ARBRE.1                                      \
$Z                                                          fichier2=$FiLeTmP_ARBRE.ARETES_ARBRE.2                                      \
$Z                                                          formater=VRAI signe="$K_VIDE"                                               \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_ARBRE.max

$Z                                      $DELETE             $FiLeTmP_ARBRE.ARETES_ARBRE

$Z                                      $PAST               $FiLeTmP_ARBRE.ARETES_ARBRE.min $FiLeTmP_ARBRE.ARETES_ARBRE.max       |     \
$Z                                      $AW                 ' { print $1 " " $2 } '                                               |     \
$Z                                      $SOR                -u                                                                          \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_ARBRE
$Z                                      # Ainsi les aretes sont rangees par numero croissant de leurs noeuds...                       #

$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_GRAPHE                                          |     \
$Z                                      $SE                 -f $FiLeTmP_ARBRE$sed                                                 |     \
$Z                                      $AW                 ' { print $1 } '                                                            \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_GRAPHE.1

$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_GRAPHE                                          |     \
$Z                                      $SE                 -f $FiLeTmP_ARBRE$sed                                                 |     \
$Z                                      $AW                 ' { print $2 } '                                                            \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_GRAPHE.2

$Z                                      $xrv/MIN2.11$X      ne=0                                                                        \
$Z                                                          fichier1=$FiLeTmP_ARBRE.ARETES_GRAPHE.1                                     \
$Z                                                          fichier2=$FiLeTmP_ARBRE.ARETES_GRAPHE.2                                     \
$Z                                                          formater=VRAI signe="$K_VIDE"                                               \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_GRAPHE.min

$Z                                      $xrv/MAX2.11$X      ne=0                                                                        \
$Z                                                          fichier1=$FiLeTmP_ARBRE.ARETES_GRAPHE.1                                     \
$Z                                                          fichier2=$FiLeTmP_ARBRE.ARETES_GRAPHE.2                                     \
$Z                                                          formater=VRAI signe="$K_VIDE"                                               \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_GRAPHE.max

$Z                                      $DELETE             $FiLeTmP_ARBRE.ARETES_GRAPHE

$Z                                      $PAST               $FiLeTmP_ARBRE.ARETES_GRAPHE.min $FiLeTmP_ARBRE.ARETES_GRAPHE.max     |     \
$Z                                      $AW                 ' { print $1 " " $2 } '                                               |     \
$Z                                      $SOR                -u                                                                          \
$Z                                                                              >   $FiLeTmP_ARBRE.ARETES_GRAPHE
$Z                                      # Ainsi les aretes sont rangees par numero croissant de leurs noeuds...                       #
$Z                  else
$Z                  endif

$Z                  if                  ($_____VisualiserArbre == $EXIST) then
$Z                                      set                 NArEtEs_ArBrE=`$CA $FiLeTmP_ARBRE.ARETES_ARBRE | $WCl`
$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_ARBRE                                                 \
$Z                                                                              >>! $FiLeTmP_ARBRE.ARETES_SELECTION
$Z                  else
$Z                                      set                 NArEtEs_ArBrE=0
$Z                  endif

$Z                  if                  ($_____VisualiserGraphe == $EXIST) then
$Z                                      set                 NArEtEs_GrApHe=`$CA $FiLeTmP_ARBRE.ARETES_GRAPHE | $WCl`
$Z                                      $CA                 $FiLeTmP_ARBRE.ARETES_GRAPHE                                                \
$Z                                                                              >>! $FiLeTmP_ARBRE.ARETES_SELECTION
$Z                  else
$Z                                      set                 NArEtEs_GrApHe=0
$Z                  endif

$Z                  set                 NArEtEs=`$CA $FiLeTmP_ARBRE.ARETES_SELECTION | $WCl`
$Z                  set                 ArEtE=1

$Z                  set                 DeRiVeEs_ArBrE=0

$Z                  set                 DiViSe=0.1

$Z                  set                 GrAiNe=$_____CGraine

$Z                  set                 CInFeRiEuRe=$GRIS_1

$Z                  set                 CSuPeRiEuRe=$GRIS_8

$Z                  alias               CoulAlea  '$xci/valeurs_alea$X                                                                 \\
$Z                                                                    premiere=1 derniere=1                                            \\
$Z                                                                    inferieur=$CInFeRiEuRe superieur=$CSuPeRiEuRe                    \\
$Z                                                                    graine=$GrAiNe                                                   \\
$Z                                                                    entiers=VRAI message_borne_superieure_entiere=FAUX               \\
$Z                                                 '
$Z                                      # Generation d'une composante chromatique aleatoire...                                        #
$Z                                      #                                                                                             #
$Z                                      # On notera que cet alias ne peut contenir :                                                  #
$Z                                      #                                                                                             #
$Z                                      #                   @                   GrAiNe = $GrAiNe + 13                                 #
$Z                                      #                                                                                             #
$Z                                      # qui serait ineffectif dans :                                                                #
$Z                                      #                                                                                             #
$Z                                      #                   set                 CRoUgE=`CoulAlea`                                     #
$Z                                      #                                                                                             #
$Z                                      # puisqu'execute dans un sous-shell...                                                        #

$Z                  while               ($ArEtE <= $NArEtEs)
$Z                                      set       NoEuDA=`(listMN $FiLeTmP_ARBRE.ARETES_SELECTION $ArEtE $ArEtE) | $AW ' { print $1 }'`
$Z                                      set       NoEuDB=`(listMN $FiLeTmP_ARBRE.ARETES_SELECTION $ArEtE $ArEtE) | $AW ' { print $2 }'`

$Z                                      set       NoEuD_AB=`$xcg/SOUA.01$X a=$NoEuDA b=$NoEuDB signe="$K_VIDE"`
$Z                                      set       NoEuD_AB=`$xcg/LOGX.01$X facteur=1 x=$NoEuD_AB translateur=1`
$Z                                      # Introduit le 20150629103728 afin de pouvoir faire la difference entre deux arcs joignant    #
$Z                                      # la meme paire de noeuds via les dervivees associees. Ainsi, plus les numeros de neuds       #
$Z                                      # de 'A' et de 'B" sont differents, plus les derivees en 'A' et en 'B' seront importantes...  #

$Z                                      set       Co_XA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA " | $AW ' { print $2 } '`
$Z                                      echo      "$Co_XA"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_X

$Z                                      set       Co_YA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA " | $AW ' { print $3 } '`
$Z                                      echo      "$Co_YA"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_Y

$Z                                      set       Co_ZA=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDA "| $AW  ' { print $4 } '`
$Z                                      echo      "$Co_ZA"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_Z
$Z                                      # Recuperation du noeud 'A' de l'arete courante.                                              #

$Z                                      set       Co_XB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $2 } '`
$Z                                      echo      "$Co_XB"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_X

$Z                                      set       Co_YB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $3 } '`
$Z                                      echo      "$Co_YB"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_Y

$Z                                      set       Co_ZB=`$CA $FiLeTmP_ARBRE.NOEUDS | $GRE "^$NoEuDB " | $AW ' { print $4 } '`
$Z                                      echo      "$Co_ZB"                                                                              \
$Z                                                                              >>! $FiLeTmP_ARBRE$COORD_Z
$Z                                      # Recuperation du noeud 'B' de l'arete courante.                                              #

$Z                                      if                  (($NArEtEs_ArBrE != 0) && ($ArEtE <= $NArEtEs_ArBrE)) then
$Z                                                          echo                "$_____ARouge\n$_____ARouge"                            \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$ROUGE
$Z                                                          echo                "$_____AVerte\n$_____AVerte"                            \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$VERTE
$Z                                                          echo                "$_____ABleue\n$_____ABleue"                            \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$BLEUE

$Z                                                          echo                "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE"                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_X
$Z                                                          echo                "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE"                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Y
$Z                                                          echo                "$DeRiVeEs_ArBrE\n$DeRiVeEs_ArBrE"                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Z

$Z                                                          echo                "$_____RayonA\n$_____RayonA"                            \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$RAYON
$Z                                      # Cas des aretes appartenant a l'arbre.                                                       #
$Z                                      else
$Z                                                          if                  (         ($_____GRouge == $GRIS_0)                     \
$Z                                                                              &&        ($_____GVerte == $GRIS_0)                     \
$Z                                                                              &&        ($_____GBleue == $GRIS_0)                     \
$Z                                                                               ) then
$Z                                                                              set                 CRoUgE=`CoulAlea`
$Z                                                                              @                   GrAiNe = $GrAiNe + 13

$Z                                                                              set                 CVeRtE=`CoulAlea`
$Z                                                                              @                   GrAiNe = $GrAiNe + 13

$Z                                                                              set                 CBlEuE=`CoulAlea`
$Z                                                                              @                   GrAiNe = $GrAiNe + 13
$Z                                                          else
$Z                                                                              set                 CRoUgE=$_____GRouge
$Z                                                                              set                 CVeRtE=$_____GVerte
$Z                                                                              set                 CBlEuE=$_____GBleue
$Z                                                          endif

$Z                                                          echo                "$CRoUgE\n$CRoUgE"                                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$ROUGE
$Z                                                          echo                "$CVeRtE\n$CVeRtE"                                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$VERTE
$Z                                                          echo                "$CBlEuE\n$CBlEuE"                                      \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$BLEUE

$Z                                                          set                 DeRiVeE_XA=$_____DeriveeXA
$Z                                                          set                 DeRiVeE_YA=$_____DeriveeYA
$Z                                                          set                 DeRiVeE_ZA=$_____DeriveeZA

$Z                                                          set                 DeRiVeE_XB=$_____DeriveeXB
$Z                                                          set                 DeRiVeE_YB=$_____DeriveeYB
$Z                                                          set                 DeRiVeE_ZB=$_____DeriveeZB

$Z                                                          if                  ($_____CDeriveeX == $EXIST) then
$Z                                      # Le possible calcul des derivees en 'X' a ete introduit le 20150626205206...                 #
$Z                                                               set  DeRiVeE_XA=`$xcg/SOUS.01$X a=$Co_XA b=$Co_XB signe="$K_VIDE"`
$Z                                      # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #

$Z                                                                              if        ($DeRiVeE_XA == 0) then
$Z                                                                                        set       DeRiVeE_XA=1
$Z                                                                              else
$Z                                                                              endif

$Z                                                     set  DeRiVeE_XA=`$xcg/MUL3.01$X a=$_____DeriveeXA b=$DeRiVeE_XA c=$NoEuD_AB`
$Z                                                     set  DeRiVeE_ZA=`$xcg/MUL3.01$X a=$_____DeriveeZA b=$DeRiVeE_XA c=$NoEuD_AB`
$Z                                      # ATTENTION : cette valeur de '$DeRiVeE_ZA' peut etre "ecrasee" plus loin...                  #

$Z                                                               set  DeRiVeE_XB=`$xcg/SOUS.01$X a=$Co_XB b=$Co_XA signe="$K_VIDE"`
$Z                                      # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #

$Z                                                                              if        ($DeRiVeE_XB == 0) then
$Z                                                                                        set       DeRiVeE_XB=1
$Z                                                                              else
$Z                                                                              endif

$Z                                                     set  DeRiVeE_XB=`$xcg/MUL3.01$X a=$_____DeriveeXB b=$DeRiVeE_XB c=$NoEuD_AB`
$Z                                                     set  DeRiVeE_ZB=`$xcg/MUL3.01$X a=$_____DeriveeZB b=$DeRiVeE_XB c=$NoEuD_AB`
$Z                                      # ATTENTION : cette valeur de '$DeRiVeE_ZB' peut etre "ecrasee" plus loin...                  #
$Z                                                          else
$Z                                                          endif

$Z                                                          if                  ($_____CDeriveeY == $EXIST) then
$Z                                      # Le possible calcul des derivees en 'X' a ete introduit le 20150626205206...                 #
$Z                                                               set  DeRiVeE_YA=`$xcg/SOUS.01$X a=$Co_YA b=$Co_YB signe="$K_VIDE"`
$Z                                      # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #

$Z                                                                              if        ($DeRiVeE_YA == 0) then
$Z                                                                                        set       DeRiVeE_YA=1
$Z                                                                              else
$Z                                                                              endif

$Z                                                     set  DeRiVeE_YA=`$xcg/MUL3.01$X a=$_____DeriveeYA b=$DeRiVeE_YA c=$NoEuD_AB`
$Z                                                     set  DeRiVeE_ZA=`$xcg/MUL3.01$X a=$_____DeriveeZA b=$DeRiVeE_YA c=$NoEuD_AB`
$Z                                      # ATTENTION : cette valeur de '$DeRiVeE_ZA' peut "ecraser" la valeur precedente...            #

$Z                                                               set  DeRiVeE_YB=`$xcg/SOUS.01$X a=$Co_YB b=$Co_YA signe="$K_VIDE"`
$Z                                      # L'absence du signe du resultat est destine a permettre le test suivant par rapport a '0'... #

$Z                                                                              if        ($DeRiVeE_YB == 0) then
$Z                                                                                        set       DeRiVeE_YB=1
$Z                                                                              else
$Z                                                                              endif

$Z                                                     set  DeRiVeE_YB=`$xcg/MUL3.01$X a=$_____DeriveeYB b=$DeRiVeE_YB c=$NoEuD_AB`
$Z                                                     set  DeRiVeE_ZB=`$xcg/MUL3.01$X a=$_____DeriveeZB b=$DeRiVeE_YB c=$NoEuD_AB`
$Z                                      # ATTENTION : cette valeur de '$DeRiVeE_ZB' peut "ecraser" la valeur precedente...            #
$Z                                                          else
$Z                                                          endif

$Z                                                          echo                "$DeRiVeE_XA\n$DeRiVeE_XB"                              \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_X
$Z                                                          echo                "$DeRiVeE_YA\n$DeRiVeE_YB"                              \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Y
$Z                                                          echo                "$DeRiVeE_ZA\n$DeRiVeE_ZB"                              \
$Z                                                                                                  >>! $FiLeTmP_ARBRE.DERIVEES$COORD_Z

$Z                                                          echo                "$_____RayonG\n$_____RayonG"                            \
$Z                                                                                                  >>! $FiLeTmP_ARBRE$RAYON
$Z                                      # Cas des aretes appartenant au graphe (qui contient donc certaines aretes de l'arbre, mais   #
$Z                                      # pas toutes...                                                                               #
$Z                                      endif

$Z                                      @                   ArEtE = $ArEtE + 1
$Z                  end

$Z                  set                 CoLoRiAgE="$K_VIDE"
$Z                  set                 CoLoRiAgE="$CoLoRiAgE"" LISTE_ROUGE=$FiLeTmP_ARBRE$ROUGE"
$Z                  set                 CoLoRiAgE="$CoLoRiAgE"" LISTE_VERTE=$FiLeTmP_ARBRE$VERTE"
$Z                  set                 CoLoRiAgE="$CoLoRiAgE"" LISTE_BLEUE=$FiLeTmP_ARBRE$BLEUE"

$Z                  set                 DeRiVeEs="$K_VIDE"
$Z                  set                 DeRiVeEs="$DeRiVeEs"" LISTE_dX=$FiLeTmP_ARBRE.DERIVEES$COORD_X"
$Z                  set                 DeRiVeEs="$DeRiVeEs"" LISTE_dY=$FiLeTmP_ARBRE.DERIVEES$COORD_Y"
$Z                  set                 DeRiVeEs="$DeRiVeEs"" LISTE_dZ=$FiLeTmP_ARBRE.DERIVEES$COORD_Z"

$Z                  set                 NpartX=`$CA $FiLeTmP_ARBRE$COORD_X | $WCl`
$Z                  set                 NpartY=`$CA $FiLeTmP_ARBRE$COORD_Y | $WCl`
$Z                  set                 NpartZ=`$CA $FiLeTmP_ARBRE$COORD_Z | $WCl`
$Z                  set                 Npart=`$xcg/MIN3.01$X x=$NpartX y=$NpartY z=$NpartZ`

$Z                  eval      $xrv/particule.10$X np=1 iterations=$Npart                                                                \
$Z                                                dernier_premier=VRAI                                                                  \
$Z                                                LISTE_X=$FiLeTmP_ARBRE$COORD_X                                                        \
$Z                                                LISTE_Y=$FiLeTmP_ARBRE$COORD_Y                                                        \
$Z                                                LISTE_Z=$FiLeTmP_ARBRE$COORD_Z                                                        \
$Z                                                LISTE_RAYON=$FiLeTmP_ARBRE$RAYON                                                      \
$Z                                                grossissement=$_____Grossissement                                                     \
$Z                                                $CoLoRiAgE                                                                            \
$Z                                                Lz=1000                                                                               \
$Z                                                ZOOM=$_____Zoom                                                                       \
$Z                                                ROTATION_OX=$_____RotationX                                                           \
$Z                                                ROTATION_OY=$_____RotationY                                                           \
$Z                                                ROTATION_OZ=$_____RotationZ                                                           \
$Z                                                TRANSLATION_OX=$_____TranslationX                                                     \
$Z                                                TRANSLATION_OY=$_____TranslationY                                                     \
$Z                                                TRANSLATION_OZ=$_____TranslationZ                                                     \
$Z                                                isoles=FAUX chainer=FAUX                                                              \
$Z                                                ajuster_points=VRAI                                                                   \
$Z                                                equidistance=VRAI compatibilite_20051230=FAUX                                         \
$Z                                                distance_minimale=$_____DistanceMini                                                  \
$Z                                                couronne=$_____Couronne                                                               \
$Z                                                cubique=$_____Cubique                                                                 \
$Z                                                derivees_automatiques=FAUX                                                            \
$Z                                                $DeRiVeEs                                                                             \
$Z                                                RVB=VRAI                                                                              \
$Z                                                N_AU_CARRE=$_____NAuCarre                                                             \
$Z                                                editer_extrema_hors=FAUX                                                              \
$Z                                                editer_mauvais_encadrement_niveaux_interpoles=FAUX                                    \
$Z                                                $_____Fond                                                                            \
$Z                                                $_____ParticulePara1                                                                  \
$Z                                                R=$_____ImageR                                                                        \
$Z                                                chiffres=0                                                                            \
$Z                                                                                                                      $formatI        \
$Z                                                                                                            $_____Redirection

$Z                  FilSTmpE            FiLeTmP_ARBRE



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