#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   I T E R A T I V E   D ' U N   F L O C O N   D E   V O N   K O C H  :                                  #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirc/.VONK.71.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20151204100514).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Recursions               (1 2 3 4 5)

$Z                  setParam            _____Grossissement            1

$Z                  setParam            _____Rayon                    0.010

$Z                  setParam            _____Connexion                VRAI

$Z                  setParam            _____DistanceMini             0.005

$Z                  setParam            _____Cubique                  FAUX

$Z                  setParam            _____Zoom                     2.2

$Z                  setParam            _____NAuCarre                 VRAI

$Z                  setParam            _____Palette                  $xiP/arc_ciel.C1

$Z                  setParam            _____CNiveau0                 $GRIS_8
$Z                                      # Definition des niveaux des Courbes.                                                         #

$Z                  setParam            _____PasCNiveau               0
$Z                                      # Definition des niveaux des Courbes.                                                         #

$Z                  setParam            _____RNiveau0                 $GRIS_0
$Z                                      # Definition des niveaux de Remplissage.                                                      #

$Z                  setParam            _____PasRNiveau               40
$Z                                      # Definition des niveaux de Remplissage.                                                      #

$Z                  FilSTmpB            FAnGlEs

$Z                  $xcg/scale$X        multiplicateur=0 nombre=-$pi diviseur=3                     >> $FAnGlEs
$Z                  $xcg/scale$X        multiplicateur=1 nombre=-$pi diviseur=3                     >> $FAnGlEs
$Z                  $xcg/scale$X        multiplicateur=4 nombre=-$pi diviseur=3                     >> $FAnGlEs
$Z                  $xcg/scale$X        multiplicateur=1 nombre=-$pi diviseur=3                     >> $FAnGlEs

$Z                  set                 HaUtEuR=`calcul sqrt(3)/2`

$Z                  set                 CoOrD_XA=`calcul -1/2`
$Z                  set                 CoOrD_YA=`calcul -($HaUtEuR/3)`

$Z                  set                 CoOrD_XB=`calcul +1/2`
$Z                  set                 CoOrD_YB=`calcul -($HaUtEuR/3)`

$Z                  set                 CoOrD_XC=0
$Z                  set                 CoOrD_YC=`calcul +2*($HaUtEuR/3)`
$Z                                      # Definition d'un triangle equilateral ABC. L'origine est situee au 1/3 de sa hauteur         #
$Z                                      # verticale...                                                                                #

$Z                  set                 FArGuMeNtS="$K_VIDE"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" iterations=4"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" complexe=FAUX"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" aleatoire=FAUX"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" Lz=1000"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" grossissement=$_____Grossissement"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" RVB=VRAI"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" ANGLE_DE_ROTATION=$FAnGlEs"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" rapport=3"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" connexions=$_____Connexion"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" ajuster_points=VRAI"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" equidistance=VRAI"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" compatibilite_20051230=FAUX"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" distance_minimale=$_____DistanceMini"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" cubique=$_____Cubique"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" N_AU_CARRE=$_____NAuCarre"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" chiffres=0"

$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" ROTATION_OY=0.01"
$Z                  set                 FArGuMeNtS="$FArGuMeNtS"" projection_parallele=VRAI"
$Z                                      # Ceci a ete introduit le 20151205080503 afin que deux points d'un meme segment ne soient     #
$Z                                      # pas a la meme profondeur et qu'ainsi il n'y ait pas de defauts lies a un ordre de trace     #
$Z                                      # qui ne serait pas l'ordre "naturel" (c'est-a-dire d'une extremite a l'autre...).            #

$Z                  FilSTmpB            FImAgEs

$Z        alias     genere    'set       ReC=\!:1 ; set CoOrD=(\!:2) ; set ZoO=\!:3 ; set RaY=\!:4 ; set ImG=\!:5                 ;    \\
$Z                             set       CoOrD=($CoOrD)                                                                           ;    \\
$Z                             $xrc/Cfract_2D.12$X                                                                                     \\
$Z                                                recursion=$ReC                                                                       \\
$Z                                                xG=$CoOrD[1] yG=$CoOrD[2] xD=$CoOrD[3] yD=$CoOrD[4]                                  \\
$Z                                                ZOOM=$ZoO                                                                            \\
$Z                                                composante_ROUGE=$CNiveau composante_VERTE=$CNiveau composante_BLEUE=$CNiveau        \\
$Z                                                rayon_de_visualisation=$RaY                                                          \\
$Z                                                $FArGuMeNtS                                                                          \\
$Z                                                R=$ImG.$ReC $formatI                                                            ;    \\
$Z                             unset     ReC CxG CyG CxD CyD ZoO RaY ImG'

$Z                  set                 InTeRpOlAtIoN="p=1 d=$#_____Recursions rD=1 rA=1 lineaire=VRAI"
$Z                  set                 LZoOmC=`$xci/valeurs_poly$X $InTeRpOlAtIoN xD=0 xA=0.5 n00=0.05 n01=1 n02=0.9`
$Z                                      # Cette interpolation du second degre est destinee a faire que les differentes iterations     #
$Z                                      # du flocon soient bien imbriquees les unes dans les autres et sans se toucher...             #
$Z                  set                 CNiveau=$_____CNiveau0
$Z                  set                 RNiveau=$_____RNiveau0

$Z                  set                 LReCuRsIoNs=($_____Recursions)

$Z                  foreach             ReCuR ($LReCuRsIoNs)
$Z                                      set                 ZoOmC=`calcul $LZoOmC[$ReCuR]*$_____Zoom`

$Z                                      set                 RaYC=`calcul $_____Rayon/$ZoOmC`

$Z                                      genere              $ReCuR "$CoOrD_XA $CoOrD_YA $CoOrD_XB $CoOrD_YB" $ZoOmC $RaYC $FImAgEs.AB
$Z                                      genere              $ReCuR "$CoOrD_XB $CoOrD_YB $CoOrD_XC $CoOrD_YC" $ZoOmC $RaYC $FImAgEs.BC
$Z                                      genere              $ReCuR "$CoOrD_XC $CoOrD_YC $CoOrD_XA $CoOrD_YA" $ZoOmC $RaYC $FImAgEs.CA

$Z                            execRVB   $xci/maximum_03$X   A1=$FImAgEs.AB.$ReCuR%s                                                     \
$Z                                                          A2=$FImAgEs.BC.$ReCuR%s                                                     \
$Z                                                          A3=$FImAgEs.CA.$ReCuR%s                                                     \
$Z                                                          R=$FImAgEs.ABC.contour.$ReCuR%s                                             \
$Z                                                                                                                      $formatI

$Z                                      set                 CArGuMeNtS="$K_VIDE"
$Z                                      set                 CArGuMeNtS="$CArGuMeNtS"" x=0.5 y=0.5"
$Z                                      set                 CArGuMeNtS="$CArGuMeNtS"" seuil=$NOIR_PLANCHER"

$Z                                      set                 NiveauR=`$xciP/G_NIVEAU$X p=$_____Palette niveau=$RNiveau Prme=VRAI`
$Z                                      set                 NiveauR=$NiveauR[1]
$Z                                      $xci/contours.12$X  A=$FImAgEs.ABC.contour.$ReCuR$ROUGE                                         \
$Z                                                          $CArGuMeNtS                                                                 \
$Z                                                          niveau=$NiveauR                                                             \
$Z                                                          R=$FImAgEs.ABC.remplissage.$ReCuR$ROUGE                                     \
$Z                                                                                                                      $formatI

$Z                                      set                 NiveauV=`$xciP/G_NIVEAU$X p=$_____Palette niveau=$RNiveau Prme=VRAI`
$Z                                      set                 NiveauV=$NiveauV[2]
$Z                                      $xci/contours.12$X  A=$FImAgEs.ABC.contour.$ReCuR$ROUGE                                         \
$Z                                                          $CArGuMeNtS                                                                 \
$Z                                                          niveau=$NiveauV                                                             \
$Z                                                          R=$FImAgEs.ABC.remplissage.$ReCuR$VERTE                                     \
$Z                                                                                                                      $formatI

$Z                                      set                 NiveauB=`$xciP/G_NIVEAU$X p=$_____Palette niveau=$RNiveau Prme=VRAI`
$Z                                      set                 NiveauB=$NiveauB[3]
$Z                                      $xci/contours.12$X  A=$FImAgEs.ABC.contour.$ReCuR$ROUGE                                         \
$Z                                                          $CArGuMeNtS                                                                 \
$Z                                                          niveau=$NiveauB                                                             \
$Z                                                          R=$FImAgEs.ABC.remplissage.$ReCuR$BLEUE                                     \
$Z                                                                                                                      $formatI

$Z                            execRVB  "$xci/dilate.01$X    A=$FImAgEs.ABC.remplissage.$ReCuR%s                                         \
$Z                                                          dilater=VRAI                                                                \
$Z                                                          points=25                                                                   \
$Z                                                                                                                      $formatI  |     \
$Z                                      $xci/cache$X        M=$FImAgEs.ABC.contour.$ReCuR%s                                             \
$Z                                                          anti_aliaser=VRAI                                                           \
$Z                                                          R=$FImAgEs.ABC.$ReCuR%s                                                     \
$Z                                                                                                                      $formatI"

$Z                                      set                 CNiveau=`calcul $CNiveau-$_____PasCNiveau`
$Z                                      set                 RNiveau=`calcul $RNiveau+$_____PasRNiveau`
$Z                  end


$Z        execRVB   $xci/init$X         niveau=$NOIR                                                                                    \
$Z                                      R=$_____ImageR%s                                                                                \
$Z                                                                                                  $formatI

$Z                  set                 ILReCuRsIoNs=`echo $LReCuRsIoNs | $R "$K_BLANC" "$K_NL" | $AC`

$Z                  foreach             ReCuR ($ILReCuRsIoNs)
$Z                                      $xci/cache.41$Z     $_____ImageR                                                                \
$Z                                                          $FImAgEs.ABC.$ReCuR                                                         \
$Z                                                          $_____ImageR
$Z                  end

$Z                  FilSTmpE            FImAgEs
$Z                  FilSTmpE            FAnGlEs



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