#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D ' U N   E N T R E L A C S   D Y N A M I Q U E   A L E A T O I R E  :                                #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.ENTR.41.2.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20051119102845).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  SETParam            Premiere                      1

$Z                  SETParam            Derniere                      64

$Z                  setParam            _____NParticule               40

$Z                  setParam            _____NDuplication             3

$Z                  SETParam            _____Aleatoire                $EXIST
$Z                                      # Parametre permettant a '$xTV/SELECTEUR' d'etre ou pas aleatoire...                          #

$Z                  setParam            _____Graine                   1234567

$Z                  setParam            _____Increment                123

$Z                  setParam            _____Periode                  3
$Z                                      # Parametre fixant la periode de '$xTV/SELECTEUR' lorsqu'il n'est pas aleatoire...            #

$Z                  SETParam            _____Edition                  $NEXIST

$Z                  set       NDuplication=$_____NDuplication
$Z                  set       NSegment=2
$Z                  @         NGroupe = $NSegment * $NSegment
$Z                                      # Un segment est fait de deux elements...                                                     #

$Z                  setParam            _____MinX                     0.0

$Z                  setParam            _____MaxX                     1.0

$Z                  setParam            _____MinY                     0.0

$Z                  setParam            _____MaxY                     1.0

$Z                  setParam            _____MinZ                     0.0

$Z                  setParam            _____MaxZ                     1.0

$Z                                      # A priori les parties communes (1) sont en ROUGE :                                           #

$Z                  setParam            _____Niveau1R_D               $BLANC

$Z                  setParam            _____Niveau1V_D               $NOIR

$Z                  setParam            _____Niveau1B_D               $NOIR

$Z                  setParam            _____Niveau1R_A               $_____Niveau1R_D

$Z                  setParam            _____Niveau1V_A               $_____Niveau1V_D

$Z                  setParam            _____Niveau1B_A               $_____Niveau1B_D

$Z                                      # A priori les parties non communes (2 et 3) sont en VERTE et BLEUE :                         #

$Z                  setParam            _____Niveau2R_D               $NOIR

$Z                  setParam            _____Niveau2V_D               $BLANC

$Z                  setParam            _____Niveau2B_D               $NOIR

$Z                  setParam            _____Niveau2R_A               $_____Niveau2R_D

$Z                  setParam            _____Niveau2V_A               $_____Niveau2V_D

$Z                  setParam            _____Niveau2B_A               $_____Niveau2B_D

$Z                                      # A priori les parties non communes (2 et 3) sont en VERTE et BLEUE :                         #

$Z                  setParam            _____Niveau3R_D               $NOIR

$Z                  setParam            _____Niveau3V_D               $NOIR

$Z                  setParam            _____Niveau3B_D               $BLANC

$Z                  setParam            _____Niveau3R_A               $_____Niveau3R_D

$Z                  setParam            _____Niveau3V_A               $_____Niveau3V_D

$Z                  setParam            _____Niveau3B_A               $_____Niveau3B_D

$Z                  setParam            _____RayonInf                 0.01

$Z                  setParam            _____RayonSup                 $_____RayonInf

$Z                  setParam            _____Zoom                     0.8

$Z                  setParam            _____RotationOX               0.0

$Z                  setParam            _____RotationOY               0.0

$Z                  setParam            _____RotationOZ               0.0

$Z                  setParam            _____Points                   32

$Z                  setParam            _____NombreR                  8

$Z                  setParam            _____Derivee                  1.0

$Z                  @         NDuplication = $NDuplication * $NSegment
$Z                                      # Afin de parametrer la longueur de recouvrement des zones communes. On notera que            #
$Z                                      # '$NDuplication' doit etre pair afin de ne pas trouver des branches coupees...               #
$Z                  @         DiViSeUr = $NGroupe * $NDuplication
$Z                  @         _____NParticule = $_____NParticule / $DiViSeUr
$Z                  @         _____NParticule = $_____NParticule * $DiViSeUr
$Z                  @         _____NParticuleSG = $_____NParticule / $NGroupe
$Z                  @         _____NParticuleSD = $_____NParticule / $NDuplication
$Z                  @         _____NParticuleSS = $_____NParticule / $NSegment
$Z                                      # Nombre de particules a generer...                                                           #

$Z                  alias     Graines   'set       VaRiAbLe="\!*"                                                                 ;    \\
$Z                                       GenRdn                                                                                   ;    \\
$Z                                       eval      "set $VaRiAbLe=$GenRdnValeur"                                                  ;    \\
$Z                                       unset     VaRiAbLe FiLeT'
$Z                                      # Generateur des differentes graines ...                                                      #
$Z
$Z                  set       GenRdnGraine=$_____Graine
$Z                  set       GenRdnIncrement=$_____Increment
$Z                                      # Parametrage du generateur aleatoire...                                                      #

$Z                  $DELETE   $xTV/SELECTEUR

$Z                  Graines   Graine_S

$Z                  if        ($_____Aleatoire == $EXIST) then
$Z                            $xrv/val_alea.01$X  ne=$_____NParticuleSD                                                                 \
$Z                                                graine=$Graine_S                                                                      \
$Z                                                                                                                                |     \
$Z                            $xrv/booleens.01$X  ne=0                                                                                  \
$Z                                                fichier==                                                                             \
$Z                                                exemplaires=$NDuplication                                                             \
$Z                                                                                                            > $xTV/SELECTEUR
$Z                  else
$Z                            $xrv/accumule.01$X  ne=$_____NParticuleSD                                                                 \
$Z                                                fichier=$_____Periode                                                                 \
$Z                                                                                                                                |     \
$Z                            $xrv/SINX.01$X      ne=0                                                                                  \
$Z                                                fichier==                                                                             \
$Z                                                                                                                                |     \
$Z                            $xrv/booleens.01$X  ne=0                                                                                  \
$Z                                                seuil=0                                                                               \
$Z                                                fichier==                                                                             \
$Z                                                exemplaires=$NDuplication                                                             \
$Z                                                                                                            > $xTV/SELECTEUR
$Z                  endif
$Z                                      # Le principe est de generer trois listes de points (representes par les chiffres {1,2,3}) :  #
$Z                                      #                                                                                             #
$Z                                      #                   111111111111111111111111111111111111111111111111111111111111              #
$Z                                      #                   222222222222222222222222222222222222222222222222222222222222              #
$Z                                      #                   333333333333333333333333333333333333333333333333333333333333              #
$Z                                      #                                                                                             #
$Z                                      # Ensuite un vecteur de selection aleatoire booleen est genere ('$xTV/SELECTEUR') :           #
$Z                                      #                                                                                             #
$Z                                      #                   VVVVVVVFFFFFFFVVVFFFFFFVVVVVVVVVVFFFFFFFFFFVVVVVVVFFFFFFFVVV              #
$Z                                      #                                                                                             #
$Z                                      # (ou 'V' et 'F' signifient 'VRAI' et 'FAUX' respectivement). Ensuite les suites de           #
$Z                                      # points precedents sont "trouees" grace a ce vecteur de selection suivant l'association      #
$Z                                      #                                                                                             #
$Z                                      #                   VRAI --> {1}                                                              #
$Z                                      #                   FAUX --> {2,3}                                                            #
$Z                                      #                                                                                             #
$Z                                      # ce qui donne :                                                                              #
$Z                                      #                                                                                             #
$Z                                      #                   1111111       111      1111111111          1111111       111              #
$Z                                      #                          2222222   222222          2222222222       2222222                 #
$Z                                      #                          3333333   333333          3333333333       3333333                 #
$Z                                      #                                                                                             #
$Z                                      # Cela permet ensuite de creer deux nouvelles listes de points en faisant les reunions        #
$Z                                      # {1,2} et {1,3} :                                                                            #
$Z                                      #                                                                                             #
$Z                                      #                   1111111       111      1111111111          1111111       111              #
$Z                                      #                          2222222   222222          2222222222       2222222                 #
$Z                                      #                                                                                             #
$Z                                      #                   1111111       111      1111111111          1111111       111              #
$Z                                      #                          3333333   333333          3333333333       3333333                 #
$Z                                      #                                                                                             #
$Z                                      # soit :                                                                                      #
$Z                                      #                                                                                             #
$Z                                      #                   111111122222221112222221111111111222222222211111112222222                 #
$Z                                      #                   111111133333331113333331111111111333333333311111113333333                 #
$Z                                      #                                                                                             #
$Z                                      # qui sont ensuite concatenees ce qui donne la liste finale des points a visualiser. Ainsi    #
$Z                                      # les points '1' designent les "troncs" commun, alors que les '2' et les '3' designent les    #
$Z                                      # branches paralleles...                                                                      #

$Z                  if        ($_____Edition == $EXIST) then
$Z                            saut
$Z                            echo      "Vecteur de Selection :"
$Z                            saut
$Z
$Z                            $CA       $xTV/SELECTEUR                                                                            |     \
$Z                            $R        "$K_NL" "$K_BLANC"                                                                        |     \
$Z                            $SE       -e "s/$NEXIST/F/g"                                                                              \
$Z                                      -e "s/$EXIST/V/g"                                                                               \
$Z                                      -e "s/  *//g"                                                                                   \
$Z                                      -e "s/\(V\)\(F\)/\1 \2/g"                                                                       \
$Z                                      -e "s/\(F\)\(V\)/\1 \2/g"                                                                       \
$Z                                      -e "s/^/$Prompt$Prompt/"
$Z
$Z                            saut
$Z                            saut
$Z                            saut
$Z                  else
$Z                  endif

$Z                  alias     GenAlea   'set       No=\!:1 ; set Gr=\!:2 ; set In=\!:3 ; set Su=\!:4 ; set Ex=\!:5 ; set FiR=\!:6 ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$No graine=$Gr                                                         \\
$Z                                                           LISTE_BORNES_INFERIEURES=$In LISTE_BORNES_SUPERIEURES=$Su                 \\
$Z                                                           exemplaires=$Ex                                            > $FiR    ;    \\
$Z                                       unset     No Gr In Su Ex FiR'
$Z                  alias     GenAleaC  'set       No=\!:1 ; set Gr=\!:2 ; set In=\!:3 ; set Su=\!:4 ; set Ex=\!:5 ; set FiR=\!:6 ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                             set       InD=`calcul -($Su-$In)/$_____FBrownien` ; set SuD=`calcul +($Su-$In)/$_____FBrownien`    ;    \\
$Z                                       $xrv/val_alea.01$X  ne=$No graine=$Gr brownien=VRAI iterer=VRAI                               \\
$Z                                                 LISTE_BORNES_INFERIEURES_CUMULEES=$In LISTE_BORNES_SUPERIEURES_CUMULEES=$Su         \\
$Z                                                 LISTE_BORNES_INFERIEURES=$InD LISTE_BORNES_SUPERIEURES=$SuD                         \\
$Z                                                           exemplaires=$Ex                                            > $FiR    ;    \\
$Z                                       unset     No Gr In Su InD SuD Ex FiR'

$Z                  alias     GenCOND   'set       No=\!:1 ; set FiV=\!:2 ; set FiF=\!:3 ; set FiR=\!:4                           ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $xrv/COND.11$X      ne=$No                                                                    \\
$Z                                                           selection=$xTV/SELECTEUR                                                  \\
$Z                                                           fichierV=$FiV                                                             \\
$Z                                                           fichierF=$FiF                                              > $FiR    ;    \\
$Z                                       unset     No FiV FiF FiR'

$Z                  alias     GenCA     'set       FiA1=\!:1 ; set FiA2=\!:2 ; set FiR=\!:3                                       ;    \\
$Z                                       $DELETE   $FiR                                                                           ;    \\
$Z                                       $CA                                                                                           \\
$Z                                                           $FiA1                                                                     \\
$Z                                                           $FiA2                                                      > $FiR    ;    \\
$Z                                       decaleC   $FiR      1                                                                    ;    \\
$Z                                       unset     FiA1 FiA2 FiR'

$Z                  Graines   Graine_1X
$Z                  Graines   Graine_2X
$Z                  Graines   Graine_3X
$Z                  Graines   Graine_1Y
$Z                  Graines   Graine_2Y
$Z                  Graines   Graine_3Y
$Z                  Graines   Graine_1Z
$Z                  Graines   Graine_2Z
$Z                  Graines   Graine_3Z

$Z                  if        ($?_____FBrownien == $EXIST) then
$Z                            GenAleaC  $_____NParticuleSG $Graine_1X $_____MinX $_____MaxX $NSegment $xTV/COORD.1$COORD_X
$Z                            GenAleaC  $_____NParticuleSG $Graine_2X $_____MinX $_____MaxX $NSegment $xTV/COORD.2$COORD_X
$Z                            GenAleaC  $_____NParticuleSG $Graine_3X $_____MinX $_____MaxX $NSegment $xTV/COORD.3$COORD_X

$Z                            GenAleaC  $_____NParticuleSG $Graine_1Y $_____MinY $_____MaxY $NSegment $xTV/COORD.1$COORD_Y
$Z                            GenAleaC  $_____NParticuleSG $Graine_2Y $_____MinY $_____MaxY $NSegment $xTV/COORD.2$COORD_Y
$Z                            GenAleaC  $_____NParticuleSG $Graine_3Y $_____MinY $_____MaxY $NSegment $xTV/COORD.3$COORD_Y

$Z                            GenAleaC  $_____NParticuleSG $Graine_1Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.1$COORD_Z
$Z                            GenAleaC  $_____NParticuleSG $Graine_2Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.2$COORD_Z
$Z                            GenAleaC  $_____NParticuleSG $Graine_3Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.3$COORD_Z
$Z                  else
$Z                            GenAlea   $_____NParticuleSG $Graine_1X $_____MinX $_____MaxX $NSegment $xTV/COORD.1$COORD_X
$Z                            GenAlea   $_____NParticuleSG $Graine_2X $_____MinX $_____MaxX $NSegment $xTV/COORD.2$COORD_X
$Z                            GenAlea   $_____NParticuleSG $Graine_3X $_____MinX $_____MaxX $NSegment $xTV/COORD.3$COORD_X

$Z                            GenAlea   $_____NParticuleSG $Graine_1Y $_____MinY $_____MaxY $NSegment $xTV/COORD.1$COORD_Y
$Z                            GenAlea   $_____NParticuleSG $Graine_2Y $_____MinY $_____MaxY $NSegment $xTV/COORD.2$COORD_Y
$Z                            GenAlea   $_____NParticuleSG $Graine_3Y $_____MinY $_____MaxY $NSegment $xTV/COORD.3$COORD_Y

$Z                            GenAlea   $_____NParticuleSG $Graine_1Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.1$COORD_Z
$Z                            GenAlea   $_____NParticuleSG $Graine_2Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.2$COORD_Z
$Z                            GenAlea   $_____NParticuleSG $Graine_3Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.3$COORD_Z
$Z                  endif

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_X $xTV/COORD.2$COORD_X $xTV/COORD.12$COORD_X
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_X $xTV/COORD.3$COORD_X $xTV/COORD.13$COORD_X

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Y $xTV/COORD.2$COORD_Y $xTV/COORD.12$COORD_Y
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Y $xTV/COORD.3$COORD_Y $xTV/COORD.13$COORD_Y

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Z $xTV/COORD.2$COORD_Z $xTV/COORD.12$COORD_Z
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Z $xTV/COORD.3$COORD_Z $xTV/COORD.13$COORD_Z

$Z                  GenCA     $xTV/COORD.12$COORD_X $xTV/COORD.13$COORD_X $xTV/COORDONNEES.1$COORD_X

$Z                  GenCA     $xTV/COORD.12$COORD_Y $xTV/COORD.13$COORD_Y $xTV/COORDONNEES.1$COORD_Y

$Z                  GenCA     $xTV/COORD.12$COORD_Z $xTV/COORD.13$COORD_Z $xTV/COORDONNEES.1$COORD_Z
$Z                                      # Generation des coordonnees des points du premier entrelacs...                               #

$Z                  Graines   Graine_1R
$Z                  Graines   Graine_2R
$Z                  Graines   Graine_3R
$Z                  Graines   Graine_1V
$Z                  Graines   Graine_2V
$Z                  Graines   Graine_3V
$Z                  Graines   Graine_1B
$Z                  Graines   Graine_2B
$Z                  Graines   Graine_3B
$Z                                      # Il aurait ete plus logique de mettre la generation de ces graines juste avant la            #
$Z                                      # generation des fichiers '$xTV/COUL*', mais le 20051119121938, elle a ete placee ici         #
$Z                                      # (avant la generation des fichiers '$xTV/COORDONNEES.2*') afin d'assurer la compatibilite    #
$Z                                      # avec 'v $xiirv/.ENTR.11.1.$U Graines' en ce qui concerne le coloriage...                    #

$Z                  Graines   Graine_1r
$Z                  Graines   Graine_2r
$Z                  Graines   Graine_3r
$Z                                      # Il aurait ete plus logique de mettre la generation de ces graines juste avant la            #
$Z                                      # generation des fichiers '$xTV/RAYON*', mais le 20051119121938, elle a ete placee ici        #
$Z                                      # (avant la generation des fichiers '$xTV/COORDONNEES.2*') afin d'assurer la compatibilite    #
$Z                                      # avec 'v $xiirv/.ENTR.11.1.$U Graines' en ce qui concerne le coloriage...                    #

$Z                  Graines   Graine_1X
$Z                  Graines   Graine_2X
$Z                  Graines   Graine_3X
$Z                  Graines   Graine_1Y
$Z                  Graines   Graine_2Y
$Z                  Graines   Graine_3Y
$Z                  Graines   Graine_1Z
$Z                  Graines   Graine_2Z
$Z                  Graines   Graine_3Z

$Z                  if        ($?_____FBrownien == $EXIST) then
$Z                            GenAleaC  $_____NParticuleSG $Graine_1X $_____MinX $_____MaxX $NSegment $xTV/COORD.1$COORD_X
$Z                            GenAleaC  $_____NParticuleSG $Graine_2X $_____MinX $_____MaxX $NSegment $xTV/COORD.2$COORD_X
$Z                            GenAleaC  $_____NParticuleSG $Graine_3X $_____MinX $_____MaxX $NSegment $xTV/COORD.3$COORD_X

$Z                            GenAleaC  $_____NParticuleSG $Graine_1Y $_____MinY $_____MaxY $NSegment $xTV/COORD.1$COORD_Y
$Z                            GenAleaC  $_____NParticuleSG $Graine_2Y $_____MinY $_____MaxY $NSegment $xTV/COORD.2$COORD_Y
$Z                            GenAleaC  $_____NParticuleSG $Graine_3Y $_____MinY $_____MaxY $NSegment $xTV/COORD.3$COORD_Y

$Z                            GenAleaC  $_____NParticuleSG $Graine_1Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.1$COORD_Z
$Z                            GenAleaC  $_____NParticuleSG $Graine_2Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.2$COORD_Z
$Z                            GenAleaC  $_____NParticuleSG $Graine_3Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.3$COORD_Z
$Z                  else
$Z                            GenAlea   $_____NParticuleSG $Graine_1X $_____MinX $_____MaxX $NSegment $xTV/COORD.1$COORD_X
$Z                            GenAlea   $_____NParticuleSG $Graine_2X $_____MinX $_____MaxX $NSegment $xTV/COORD.2$COORD_X
$Z                            GenAlea   $_____NParticuleSG $Graine_3X $_____MinX $_____MaxX $NSegment $xTV/COORD.3$COORD_X

$Z                            GenAlea   $_____NParticuleSG $Graine_1Y $_____MinY $_____MaxY $NSegment $xTV/COORD.1$COORD_Y
$Z                            GenAlea   $_____NParticuleSG $Graine_2Y $_____MinY $_____MaxY $NSegment $xTV/COORD.2$COORD_Y
$Z                            GenAlea   $_____NParticuleSG $Graine_3Y $_____MinY $_____MaxY $NSegment $xTV/COORD.3$COORD_Y

$Z                            GenAlea   $_____NParticuleSG $Graine_1Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.1$COORD_Z
$Z                            GenAlea   $_____NParticuleSG $Graine_2Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.2$COORD_Z
$Z                            GenAlea   $_____NParticuleSG $Graine_3Z $_____MinZ $_____MaxZ $NSegment $xTV/COORD.3$COORD_Z
$Z                  endif

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_X $xTV/COORD.2$COORD_X $xTV/COORD.12$COORD_X
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_X $xTV/COORD.3$COORD_X $xTV/COORD.13$COORD_X

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Y $xTV/COORD.2$COORD_Y $xTV/COORD.12$COORD_Y
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Y $xTV/COORD.3$COORD_Y $xTV/COORD.13$COORD_Y

$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Z $xTV/COORD.2$COORD_Z $xTV/COORD.12$COORD_Z
$Z                  GenCOND   $_____NParticuleSS $xTV/COORD.1$COORD_Z $xTV/COORD.3$COORD_Z $xTV/COORD.13$COORD_Z

$Z                  GenCA     $xTV/COORD.12$COORD_X $xTV/COORD.13$COORD_X $xTV/COORDONNEES.2$COORD_X

$Z                  GenCA     $xTV/COORD.12$COORD_Y $xTV/COORD.13$COORD_Y $xTV/COORDONNEES.2$COORD_Y

$Z                  GenCA     $xTV/COORD.12$COORD_Z $xTV/COORD.13$COORD_Z $xTV/COORDONNEES.2$COORD_Z
$Z                                      # Generation des coordonnees des points du second entrelacs...                                #

$Z                  GenAlea   $_____NParticuleSG $Graine_1R $_____Niveau1R_D $_____Niveau1R_A $NSegment $xTV/COUL.1$ROUGE
$Z                  GenAlea   $_____NParticuleSG $Graine_2R $_____Niveau2R_D $_____Niveau2R_A $NSegment $xTV/COUL.2$ROUGE
$Z                  GenAlea   $_____NParticuleSG $Graine_3R $_____Niveau3R_D $_____Niveau3R_A $NSegment $xTV/COUL.3$ROUGE

$Z                  GenAlea   $_____NParticuleSG $Graine_1V $_____Niveau1V_D $_____Niveau1V_A $NSegment $xTV/COUL.1$VERTE
$Z                  GenAlea   $_____NParticuleSG $Graine_2V $_____Niveau2V_D $_____Niveau2V_A $NSegment $xTV/COUL.2$VERTE
$Z                  GenAlea   $_____NParticuleSG $Graine_3V $_____Niveau3V_D $_____Niveau3V_A $NSegment $xTV/COUL.3$VERTE

$Z                  GenAlea   $_____NParticuleSG $Graine_1B $_____Niveau1B_D $_____Niveau1B_A $NSegment $xTV/COUL.1$BLEUE
$Z                  GenAlea   $_____NParticuleSG $Graine_2B $_____Niveau2B_D $_____Niveau2B_A $NSegment $xTV/COUL.2$BLEUE
$Z                  GenAlea   $_____NParticuleSG $Graine_3B $_____Niveau3B_D $_____Niveau3B_A $NSegment $xTV/COUL.3$BLEUE

$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$ROUGE $xTV/COUL.2$ROUGE $xTV/COUL.12$ROUGE
$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$ROUGE $xTV/COUL.3$ROUGE $xTV/COUL.13$ROUGE

$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$VERTE $xTV/COUL.2$VERTE $xTV/COUL.12$VERTE
$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$VERTE $xTV/COUL.3$VERTE $xTV/COUL.13$VERTE

$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$BLEUE $xTV/COUL.2$BLEUE $xTV/COUL.12$BLEUE
$Z                  GenCOND   $_____NParticuleSS $xTV/COUL.1$BLEUE $xTV/COUL.3$BLEUE $xTV/COUL.13$BLEUE

$Z                  GenCA     $xTV/COUL.12$ROUGE $xTV/COUL.13$ROUGE $xTV/COULEURS$ROUGE

$Z                  GenCA     $xTV/COUL.12$VERTE $xTV/COUL.13$VERTE $xTV/COULEURS$VERTE

$Z                  GenCA     $xTV/COUL.12$BLEUE $xTV/COUL.13$BLEUE $xTV/COULEURS$BLEUE
$Z                                      # Generation des couleurs des points...                                                       #

$Z                  GenAlea   $_____NParticuleSG $Graine_1r $_____RayonInf $_____RayonSup $NSegment $xTV/RAYON.1
$Z                  GenAlea   $_____NParticuleSG $Graine_2r $_____RayonInf $_____RayonSup $NSegment $xTV/RAYON.2
$Z                  GenAlea   $_____NParticuleSG $Graine_3r $_____RayonInf $_____RayonSup $NSegment $xTV/RAYON.3

$Z                  GenCOND   $_____NParticuleSS $xTV/RAYON.1 $xTV/RAYON.2 $xTV/RAYON.12
$Z                  GenCOND   $_____NParticuleSS $xTV/RAYON.1 $xTV/RAYON.3 $xTV/RAYON.13

$Z                  GenCA     $xTV/RAYON.12 $xTV/RAYON.13 $xTV/RAYONS
$Z                                      # Generation des rayons des points...                                                         #

$X                  echo      "neutre"
$X                                      # commande destinee uniquement a mettre a jour l'environnement 'env'...                       #

$c                  #include  <stdio.h>
$c
$c                  #define   N0        Premiere
$c                  #define   N         Derniere
$c
$c                  #define   Interpole(D,A,n,N0,N)         ((N==N0) ? (D) : (((double)((A*(n-N0))+(D*(N-n))))/((double)(N-N0))))
$c
$c                  int       main()
$c                            {
$c                            int       n;
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      double    lambda=Interpole(0.0,1.0,n,N0,N);
$c
$c                                      printf("$DELETE     $xTV/COORDONNEES$COORD_X\n");
$c                                      printf("$DELETE     $xTV/COORDONNEES$COORD_Y\n");
$c                                      printf("$DELETE     $xTV/COORDONNEES$COORD_Z\n");
$c
$c                                      printf("$xrv/BARY.11$X
$c                                                          ne=$_____NParticule
$c                                                          lambda=%f
$c                                                          fichier1=$xTV/COORDONNEES.1$COORD_X
$c                                                          fichier2=$xTV/COORDONNEES.2$COORD_X
$c                                                                                                  >   $xTV/COORDONNEES$COORD_X\n"
$c                                            ,lambda
$c                                             );
$c                                      printf("$xrv/BARY.11$X
$c                                                          ne=$_____NParticule
$c                                                          lambda=%f
$c                                                          fichier1=$xTV/COORDONNEES.1$COORD_Y
$c                                                          fichier2=$xTV/COORDONNEES.2$COORD_Y
$c                                                                                                  >   $xTV/COORDONNEES$COORD_Y\n"
$c                                            ,lambda
$c                                             );
$c                                      printf("$xrv/BARY.11$X
$c                                                          ne=$_____NParticule
$c                                                          lambda=%f
$c                                                          fichier1=$xTV/COORDONNEES.1$COORD_Z
$c                                                          fichier2=$xTV/COORDONNEES.2$COORD_Z
$c                                                                                                  >   $xTV/COORDONNEES$COORD_Z\n"
$c                                            ,lambda
$c                                             );
$c
$c                                      printf("$xrv/particule.10$X np=1 iterations=$_____NParticule
$c                                                          LISTE_X=$xTV/COORDONNEES$COORD_X
$c                                                          LISTE_Y=$xTV/COORDONNEES$COORD_Y
$c                                                          LISTE_Z=$xTV/COORDONNEES$COORD_Z
$c                                                          LISTE_RAYON=$xTV/RAYONS
$c                                                          LISTE_ROUGE=$xTV/COULEURS$ROUGE
$c                                                          LISTE_VERTE=$xTV/COULEURS$VERTE
$c                                                          LISTE_BLEUE=$xTV/COULEURS$BLEUE
$c                                                          Lz=1000 ZOOM=$_____Zoom
$c                                                          ROTATION_OX=$_____RotationOX
$c                                                          ROTATION_OY=$_____RotationOY
$c                                                          ROTATION_OZ=$_____RotationOZ
$c                                                          isoles=FAUX chainer=FAUX
$c                                                          ajuster_points=VRAI points=$_____Points nombreR=$_____NombreR
$c                                                          cubique=VRAI
$c                                                          LISTE_dX=$_____Derivee
$c                                                          LISTE_dY=$_____Derivee
$c                                                          LISTE_dZ=$_____Derivee
$c                                                          RVB=VRAI
$c                                                          R=$_____ImageR.%04d
$c                                                          chiffres=0
$c                                                                                                                      $formatI\n"
$c                                            ,n
$c                                             );
$c                                      /* Visualisation de l'entrelacs courant...                                                   */
$c                                      }
$c                            }

$Z                  $DELETE   $xTV/SELECTEUR
$Z                  $DELETE   $xTV/COORD.1$COORD_X
$Z                  $DELETE   $xTV/COORD.2$COORD_X
$Z                  $DELETE   $xTV/COORD.3$COORD_X
$Z                  $DELETE   $xTV/COORD.1$COORD_Y
$Z                  $DELETE   $xTV/COORD.2$COORD_Y
$Z                  $DELETE   $xTV/COORD.3$COORD_Y
$Z                  $DELETE   $xTV/COORD.1$COORD_Z
$Z                  $DELETE   $xTV/COORD.2$COORD_Z
$Z                  $DELETE   $xTV/COORD.3$COORD_Z
$Z                  $DELETE   $xTV/COORD.12$COORD_X
$Z                  $DELETE   $xTV/COORD.13$COORD_X
$Z                  $DELETE   $xTV/COORD.12$COORD_Y
$Z                  $DELETE   $xTV/COORD.13$COORD_Y
$Z                  $DELETE   $xTV/COORD.12$COORD_Z
$Z                  $DELETE   $xTV/COORD.13$COORD_Z
$Z                  $DELETE   $xTV/COORDONNEES.1$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES.1$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES.1$COORD_Z
$Z                  $DELETE   $xTV/COORDONNEES.2$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES.2$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES.2$COORD_Z
$Z                  $DELETE   $xTV/COORDONNEES$COORD_X
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Y
$Z                  $DELETE   $xTV/COORDONNEES$COORD_Z
$Z                  $DELETE   $xTV/COUL.1$ROUGE
$Z                  $DELETE   $xTV/COUL.2$ROUGE
$Z                  $DELETE   $xTV/COUL.3$ROUGE
$Z                  $DELETE   $xTV/COUL.1$VERTE
$Z                  $DELETE   $xTV/COUL.2$VERTE
$Z                  $DELETE   $xTV/COUL.3$VERTE
$Z                  $DELETE   $xTV/COUL.1$BLEUE
$Z                  $DELETE   $xTV/COUL.2$BLEUE
$Z                  $DELETE   $xTV/COUL.3$BLEUE
$Z                  $DELETE   $xTV/COUL.12$ROUGE
$Z                  $DELETE   $xTV/COUL.13$ROUGE
$Z                  $DELETE   $xTV/COUL.12$VERTE
$Z                  $DELETE   $xTV/COUL.13$VERTE
$Z                  $DELETE   $xTV/COUL.12$BLEUE
$Z                  $DELETE   $xTV/COUL.13$BLEUE
$Z                  $DELETE   $xTV/COULEURS$ROUGE
$Z                  $DELETE   $xTV/COULEURS$VERTE
$Z                  $DELETE   $xTV/COULEURS$BLEUE
$Z                  $DELETE   $xTV/RAYON.1
1Z                  $DELETE   $xTV/RAYON.2
$Z                  $DELETE   $xTV/RAYON.3
$Z                  $DELETE   $xTV/RAYONS



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