#######################################################################################################################################
#                                                                                                                                     #
#         D E C O U P A G E   A U T O - S I M I L A I R E   D E   T R I A N G L E S   D ' O R  :                                      #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.TROR.11.$U' :                                                                                            #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20120507092031).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Profondeur               4

$Z                  setParam            _____Graine                   `GetParam $xci/valeurs_TriangleOr$X graine`
$Z                                      # Argument introduit le 20120507111305...                                                     #

$Z                  setParam            _____Centrer                  `GetParam $xci/valeurs_TriangleOr$X centrer_structure`
$Z                                      # Argument introduit le 20120510101757...                                                     #

$Z                  SETParam            _____Symetrique               `GetParam $xci/valeurs_TriangleOr$X triangle_symetrique`
$Z                                      # Argument introduit le 20120510113958...                                                     #

$Z                  SETParam            _____Etoile                   $NEXIST
$Z                                      # Argument introduit le 20120510101757...                                                     #

$Z                  SETParam            _____Segments                 `GetParam $xci/valeurs_TriangleOr$X segments`

$Z                  setParam            _____PseudoPeriodique         `GetParam $xci/valeurs_TriangleOr$X pseudo_periodique`
$Z                                      # Argument introduit le 20120508110944...                                                     #
$Z                                      #                                                                                             #
$Z                                      # On rappelle le 20170603100020 que si :                                                      #
$Z                                      #                                                                                             #
$Z                                      #                   _____PseudoPeriodique=VRAI                                                #
$Z                                      #                                                                                             #
$Z                                      # alors la valeur de '$_____Graine' n'a aucune importance car, en effet, l'argument           #
$Z                                      # "graine=" n'est pas utilise ('v $xci/valeurs_TriangleOr$K 20170603093541')...               #

$Z                  setParam       _____SymetriePP     `GetParam $xci/valeurs_TriangleOr$X symetriser_initialement_pseudo_periodique`
$Z                                      # Argument introduit le 20120508110944...                                                     #

$Z                  setParam       _____Tquelconque    `GetParam $xci/valeurs_TriangleOr$X triangle_quelconque`

$Z                  setParam       _____Tplats         `GetParam $xci/valeurs_TriangleOr$X triangle_plat`

$Z                  setParam       _____GaleatoireP    `GetParam $xci/valeurs_TriangleOr$X generation_aleatoire_triangles_plats`

$Z                  setParam       _____PbrancheP      `GetParam $xci/valeurs_TriangleOr$X premiere_branche_triangles_plats`

$Z                  setParam       _____GaleatoireM    `GetParam $xci/valeurs_TriangleOr$X generation_aleatoire_triangles_minces`

$Z                  setParam       _____MbrancheP      `GetParam $xci/valeurs_TriangleOr$X premiere_branche_triangles_minces`

$Z                  SETParam            _____TriNumerique             $NEXIST
$Z                                      # Argument introduit le 20120514115202...                                                     #

$Z                  SETParam            _____Simplifier               $NEXIST
$Z                                      # Argument introduit le 20120508130149...                                                     #

$Z                  SETParam            _____FSavePavage              $NEXIST
$Z                                      # Argument introduit le 20170605091158...                                                     #

$Z                  setParam            _____CoordonneeZ              0
$Z                                      # Argument introduit le 20170605100344...                                                     #

$Z                  _____include(_____xiirv/.TROR.11.1._____U)
$Z                                      # Introduit sous cette forme le 20170605090224...                                             #

$Z                  FileTmpB            FiLeTmP_TRIANGLE_OR

$Z                  if                  (($_____Simplifier == $NEXIST) && ($_____Segments == VRAI)) then
$Z                                      EROR                "le mode _____Segments=$_____Segments implique la simplication (forcee)."
$Z                                      SET                 _____Simplifier=$EXIST
$Z                  else
$Z                  endif

$Z                  if                  (($_____Simplifier == $EXIST) && ($_____Segments == FAUX)) then
$Z                                      SET                 _____Segments=VRAI
$Z                                      EROR                "La simplification implique le mode _____Segments=$_____Segments (force)."
$Z                  else
$Z                  endif

$Z                  if                  (($_____Simplifier == $EXIST) && ($_____Segments == VRAI)) then
$Z                                      set                 ChiffresFlot=8
$Z                                      # Afin de ne pas avoir de problemes d'arrondi. En effet deux points identiques peuvent avoir  #
$Z                                      # des coordonnees legerement differentes et cela serait dramatique lors du '$SOR' qui suivra. #
$Z                                      # Mais cela n'a pas suffit, il a fallu ajouter 'v $xci/valeurs_TriangleOr$K TROP_PETIT'...    #
$Z                                      set                 EtiquetteP="1"
$Z                                      set                 EtiquetteM="2"
$Z                                      # Afin d'etiquetter les triangles de facon numerique, cela permettant alors d'utiliser        #
$Z                                      # 'v $xrv/permute.11$K' par exemple sur toutes les sorties (introduit le 20120510090334).     #
$Z                  else
$Z                                      set                 ChiffresFlot=`GetParam $xci/valeurs_TriangleOr$X  ChiffresFlot`
$Z                                      set                 EtiquetteP=`GetParam $xci/valeurs_TriangleOr$X etiquette_triangles_plats`
$Z                                      set                 EtiquetteM=`GetParam $xci/valeurs_TriangleOr$X etiquette_triangles_minces`
$Z                  endif

$Z                  $xci/valeurs_TriangleOr$X                                                                                           \
$Z                                      graine=$_____Graine                                                                             \
$Z                                      pseudo_periodique=$_____PseudoPeriodique                                                        \
$Z                                      symetriser_initialement_pseudo_periodique=$_____SymetriePP                                      \
$Z                                      triangle_quelconque=$_____Tquelconque                                                           \
$Z                                      triangle_plat=$_____Tplats                                                                      \
$Z                                      generation_aleatoire_triangles_plats=$_____GaleatoireP                                          \
$Z                                      premiere_branche_triangles_plats=$_____PbrancheP                                                \
$Z                                      generation_aleatoire_triangles_minces=$_____GaleatoireM                                         \
$Z                                      premiere_branche_triangles_minces=$_____MbrancheP                                               \
$Z                                      profondeur=$_____Profondeur                                                                     \
$Z                                      centrer_structure=$_____Centrer                                                                 \
$Z                                      triangle_symetrique=$_____Symetrique                                                            \
$Z                                      segments=$_____Segments                                                                         \
$Z                                      etiquette_triangles_plats=$EtiquetteP                                                           \
$Z                                      etiquette_triangles_minces=$EtiquetteM                                                          \
$Z                                      ChiffresFlot=$ChiffresFlot                                                                      \
$Z                                                          > $FiLeTmP_TRIANGLE_OR
$Z                                      # L'argument "graine=" a ete introduit le 20170603092116 (oublie le 20120507111305 !)...      #

$Z                  if                  (($_____Etoile == $EXIST) && ($_____Symetrique == VRAI) && ($_____Segments == VRAI)) then
$Z                                      FileTmpB            FiLeTmP_ETOILE_OR
$Z
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR                                                  |     \
$Z                                      $SE                 -e "s/=/ /g"                                                                \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.10
$Z
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $1 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.mX1
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $2 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.X1
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $3 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.mY1
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $4 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.Y1
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $5 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.mX2
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $6 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.X2
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $7 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.mY2
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $8 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.Y2
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $9 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.etiquetteT
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.10                                               |     \
$Z                                      $AW                 ' { print $10 } '                                                           \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.etiquetteC
$Z
$Z                                      FileTmpB            FiLeTmP_ETOILE_OR
$Z
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.mX1                                                    \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.mX1
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.mY1                                                    \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.mY1
$Z
$Z                                      set                 ChiffresFlot=6
$Z
$Z                                      set                 Epsilon=`$xcg/PUIX.01$X a=10 exposant=-$ChiffresFlot`
$Z
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR.X1                                             \
$Z                                                          ChiffresFlot=$ChiffresFlot                                                  \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.X1
$Z                                      # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre        #
$Z                                      # ulterieurement un '$SOR' et un '$UNIQ' significatifs...                                     #
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR.Y1                                             \
$Z                                                          ChiffresFlot=$ChiffresFlot                                                  \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.Y1
$Z                                      # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre        #
$Z                                      # ulterieurement un '$SOR' et un '$UNIQ' significatifs...                                     #
$Z
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.mX2                                                    \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.mX2
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.mY2                                                    \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.mY2
$Z
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR.X2                                             \
$Z                                                          ChiffresFlot=$ChiffresFlot                                                  \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.X2
$Z                                      # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre        #
$Z                                      # ulterieurement un '$SOR' et un '$UNIQ' significatifs...                                     #
$Z                                      $xrv/neutre$X       ne=0                                                                        \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR.Y2                                             \
$Z                                                          ChiffresFlot=$ChiffresFlot                                                  \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.Y2
$Z                                      # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre        #
$Z                                      # ulterieurement un '$SOR' et un '$UNIQ' significatifs...                                     #
$Z
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.etiquetteT                                             \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.etiquetteT
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.etiquetteC                                             \
$Z                                                                              >>! $FiLeTmP_ETOILE_OR.etiquetteC
$Z
$Z                                      set                 NumeroBranche=1
$Z
$Z                                      while               ($NumeroBranche <= 4)
$Z                                                          set                 AngleZ=`calcul $NumeroBranche*((2*$pi)/5)`
$Z
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.mX1                                \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.mX1
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.mY1                                \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.mY1
$Z
$Z                                                          $xrv/ROTATION.01$X  ne=0                                                    \
$Z                                                                              LISTE_X=$FiLeTmP_TRIANGLE_OR.X1                         \
$Z                                                                              LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y1                         \
$Z                                                                              LISTE_Z=0                                               \
$Z                                                                              rotation=VRAI                                           \
$Z                                                                              ROTATION_OX=0                                           \
$Z                                                                              ROTATION_OY=0                                           \
$Z                                                                              ROTATION_OZ=$AngleZ                                     \
$Z                                                                              pX=1 pY=0 pZ=0                                          \
$Z                                                                              ChiffresFlot=$ChiffresFlot                        |     \
$Z                                                          $xrv/TROP_PETIT.01$X                                                        \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier==                                               \
$Z                                                                              epsilon_annulation=$Epsilon                             \
$Z                                                                              ChiffresFlot=$ChiffresFlot                              \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.X1
$Z                                                          $xrv/ROTATION.01$X  ne=0                                                    \
$Z                                                                              LISTE_X=$FiLeTmP_TRIANGLE_OR.X1                         \
$Z                                                                              LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y1                         \
$Z                                                                              LISTE_Z=0                                               \
$Z                                                                              rotation=VRAI                                           \
$Z                                                                              ROTATION_OX=0                                           \
$Z                                                                              ROTATION_OY=0                                           \
$Z                                                                              ROTATION_OZ=$AngleZ                                     \
$Z                                                                              pX=0 pY=1 pZ=0                                          \
$Z                                                                              ChiffresFlot=$ChiffresFlot                        |     \
$Z                                                          $xrv/TROP_PETIT.01$X                                                        \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier==                                               \
$Z                                                                              epsilon_annulation=$Epsilon                             \
$Z                                                                              ChiffresFlot=$ChiffresFlot                              \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.Y1
$Z
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.mX2                                \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.mX2
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.mY2                                \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.mY2
$Z
$Z                                                          $xrv/ROTATION.01$X  ne=0                                                    \
$Z                                                                              LISTE_X=$FiLeTmP_TRIANGLE_OR.X2                         \
$Z                                                                              LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y2                         \
$Z                                                                              LISTE_Z=0                                               \
$Z                                                                              rotation=VRAI                                           \
$Z                                                                              ROTATION_OX=0                                           \
$Z                                                                              ROTATION_OY=0                                           \
$Z                                                                              ROTATION_OZ=$AngleZ                                     \
$Z                                                                              pX=1 pY=0 pZ=0                                          \
$Z                                                                              ChiffresFlot=$ChiffresFlot                        |     \
$Z                                                          $xrv/TROP_PETIT.01$X                                                        \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier==                                               \
$Z                                                                              epsilon_annulation=$Epsilon                             \
$Z                                                                              ChiffresFlot=$ChiffresFlot                              \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.X2
$Z                                                          $xrv/ROTATION.01$X  ne=0                                                    \
$Z                                                                              LISTE_X=$FiLeTmP_TRIANGLE_OR.X2                         \
$Z                                                                              LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y2                         \
$Z                                                                              LISTE_Z=0                                               \
$Z                                                                              rotation=VRAI                                           \
$Z                                                                              ROTATION_OX=0                                           \
$Z                                                                              ROTATION_OY=0                                           \
$Z                                                                              ROTATION_OZ=$AngleZ                                     \
$Z                                                                              pX=0 pY=1 pZ=0                                          \
$Z                                                                              ChiffresFlot=$ChiffresFlot                        |     \
$Z                                                          $xrv/TROP_PETIT.01$X                                                        \
$Z                                                                              ne=0                                                    \
$Z                                                                              fichier==                                               \
$Z                                                                              epsilon_annulation=$Epsilon                             \
$Z                                                                              ChiffresFlot=$ChiffresFlot                              \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.Y2
$Z
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.etiquetteT                         \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.etiquetteT
$Z                                                          $CA                 $FiLeTmP_TRIANGLE_OR.etiquetteC                         \
$Z                                                                                                  >>! $FiLeTmP_ETOILE_OR.etiquetteC
$Z
$Z                                                          @                   NumeroBranche = $NumeroBranche + 1
$Z                                      end
$Z
$Z                                      $PAST               $FiLeTmP_ETOILE_OR.mX1                                                      \
$Z                                                          $FiLeTmP_ETOILE_OR.X1                                                       \
$Z                                                          $FiLeTmP_ETOILE_OR.mY1                                                      \
$Z                                                          $FiLeTmP_ETOILE_OR.Y1                                                       \
$Z                                                          $FiLeTmP_ETOILE_OR.mX2                                                      \
$Z                                                          $FiLeTmP_ETOILE_OR.X2                                                       \
$Z                                                          $FiLeTmP_ETOILE_OR.mY2                                                      \
$Z                                                          $FiLeTmP_ETOILE_OR.Y2                                                       \
$Z                                                          $FiLeTmP_ETOILE_OR.etiquetteT                                               \
$Z                                                          $FiLeTmP_ETOILE_OR.etiquetteC                                         |     \
$Z                                      $AW       ' { print $1 "=" $2 " " $3 "=" $4 " " $5 "=" $6 " " $7 "=" $8 " " $9 " " $10 } '      \
$Z                                                                              > $FiLeTmP_ETOILE_OR
$Z                                      $DELETE             $FiLeTmP_TRIANGLE_OR
$Z                                      $MV                 $FiLeTmP_ETOILE_OR $FiLeTmP_TRIANGLE_OR
$Z
$Z                                      FileTmpE            FiLeTmP_ETOILE_OR
$Z                  else
$Z                  endif

$Z                  if                  ($_____TriNumerique == $EXIST) then
$Z                                      # Test introduit le 20120514115202....                                                        #
$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR                                                  |     \
$Z                                      $SE                 -e "s/[xy][ABC]=//g"                                                        \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.numerique
$Z                                      # Ainsi, on supprime tout ce qui n'est pas numerique afin de garantir un fonctionnement       #
$Z                                      # correct du '$SOR -n' qui suit...                                                            #

$Z                                      $DELETE             $FiLeTmP_TRIANGLE_OR
$Z                                      $MV                 $FiLeTmP_TRIANGLE_OR.numerique $FiLeTmP_TRIANGLE_OR
$Z                  else
$Z                  endif

$Z                  if                  (($_____Simplifier == $EXIST) && ($_____Segments == VRAI)) then
#20211018082349____:$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR                         |     \  #
#20211018082349____:$Z                                      $SOR                -n                                           |     \  #
#20211018082349____:$Z                                      $UNI                -c                                           |     \  #
#20211018082349____:$Z                                      $R                  "$K_TAB" "$K_BLANC"                          |     \  #
#20211018082349____:$Z                                      $GRE                "^ *1 "                                      |     \  #
#20211018082349____:$Z                                      $AW                 ' { print $2 " " $3 "\n" $4 " " $5 } '             \  #
#20211018082349____:$Z                                                                              > $FiLeTmP_TRIANGLE_OR.simplifie  #

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR                                                  |     \
$Z                                      $SOR                -n                                                                    |     \
$Z                                      $UNI                -c                                                                    |     \
$Z                                      $R                  "$K_TAB" "$K_BLANC"                                                         \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.all

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.all                                              |     \
$Z                                      $GRE                "^ *1 "                                                               |     \
$Z                                      $AW                 ' { print $2 " " $3 "\n" $4 " " $5 } '                                      \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.simplifie
$Z                                      # Ainsi, on supprime les segments qui ne sont pas uniques (via le '$UNI' et le '$GRE') et     #
$Z                                      # qui appartiennent au meme type de triangle (via le '$SOR').                                 #
$Z                                      #                                                                                             #
$Z                                      # On notera le 20211017120617 que c'est ainsi que l'on passe des deux sortes de triangles     #
$Z                                      # (les "plat"s et les "mince"s) aux deux sortes de losanges (les "plat"s et les "presque      #
$Z                                      # carres"s)...                                                                                #

$Z                                      $DELETE             $FiLeTmP_TRIANGLE_OR
$Z                                      $MV                 $FiLeTmP_TRIANGLE_OR.simplifie $FiLeTmP_TRIANGLE_OR

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.all                                              |     \
$Z                                      $GRE                -v "^ *1 "                                                            |     \
$Z                                      $AW                 ' { print $2 " " $3 " " $4 " " $5 } '                                 |     \
$Z                                      $SOR                -u                                                                    |     \
$Z                                      $SE                 -e "s/[$Alpha__A_Z_a_z][$Alpha__A_Z_a_z]*=//g"                              \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.diagonales

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.diagonales                                       |     \
$Z                                      $AW                 ' { print $1 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.A$COORD_X

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.diagonales                                       |     \
$Z                                      $AW                 ' { print $2 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.A$COORD_Y

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.diagonales                                       |     \
$Z                                      $AW                 ' { print $3 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.B$COORD_X

$Z                                      $CA                 $FiLeTmP_TRIANGLE_OR.diagonales                                       |     \
$Z                                      $AW                 ' { print $4 } '                                                            \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.B$COORD_Y

$Z                                      $xrv/distance.12$X  ne=0                                                                        \
$Z                                                          LISTE_XA=$FiLeTmP_TRIANGLE_OR.A$COORD_X                                     \
$Z                                                          LISTE_YA=$FiLeTmP_TRIANGLE_OR.A$COORD_Y                                     \
$Z                                                          LISTE_XB=$FiLeTmP_TRIANGLE_OR.B$COORD_X                                     \
$Z                                                          LISTE_YB=$FiLeTmP_TRIANGLE_OR.B$COORD_Y                                     \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.distances

$Z                                      set  MiNiMuM=`$CA $FiLeTmP_TRIANGLE_OR.distances | $xrv/extrema.01$X ne=0 fichier== ms=VRAI`
$Z                                      set  MaXiMuM=`$CA $FiLeTmP_TRIANGLE_OR.distances | $xrv/extrema.01$X ne=0 fichier== Ms=VRAI`
$Z                                      set  MoYeNnE=`$xcg/MOYE.01$X a=$MiNiMuM b=$MaXiMuM`

$Z                                      $xrv/IFLT.11$X      ne=0                                                                        \
$Z                                                          fichier1=$FiLeTmP_TRIANGLE_OR.distances                                     \
$Z                                                          fichier2=$MoYeNnE                                                           \
$Z                                                          formater=VRAI signe="$K_VIDE"                                               \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR.tri
$Z                                      # Il y a deux types de losanges : d'une part les "Carres" (ou "fat") qui ont une grande        #
$Z                                      # diagonale ('$GrAnDs') et d'autre part les "Minces" (ou "slim") qui ont une petite            #
$Z                                      # diagonale ('$PeTiTs'). Pour chacun de ces deux types de diagonale, la longueur est a         #
$Z                                      # peu pres constante. Pour distinguer les deux type de losange, il suffit donc de savoir       #
$Z                                      # comment chaque diagonale se situe par rapport a la moyenne ('$MoYeNnE')...                   #

$Z                                      set                 PeTiTs=`$CA $FiLeTmP_TRIANGLE_OR.tri | $GRE "^$EXIST"'$' | $WCl`
$Z                                      set                 GrAnDs=`$CA $FiLeTmP_TRIANGLE_OR.tri | $GRE "^$NEXIST"'$' | $WCl`

$Z                                      set                 RaPpOrT=`$xcg/DIVZ.01$X a=$GrAnDs b=$PeTiTs signe="$K_VIDE" ChiffresFlot=4`

#20211018093203____:$Z                                      echo                "#GrandsLosanges/#PetitsLosanges=$RaPpOrT"            #
#20211018114930____:$Z                                      echo                "#LosangesCarres/#LosangesMinces=$RaPpOrT"            #
$Z                                      saut
#20211107140002____:$Z                                 echo                "#LosangesCarres/#LosangesMinces=$GrAnDs/$PeTiTs=$RaPpOrT" #
$Z                                      echo                "#LosangesCarres/#LosangesMinces = $GrAnDs/$PeTiTs = $RaPpOrT"
$Z                                      saut
$Z                                      # Edition introduite le 20211018082349, ce rapport etant approximativement egal au            #
$Z                                      # nombre d'or...                                                                              #
$Z                  else
$Z                  endif

$Z                  $CA                 $FiLeTmP_TRIANGLE_OR                                                                      |     \
$Z                  $AW                 ' { print $1 } '                                                                          |     \
$Z                  $SE                 -e "s/^.*=//"                                                                                   \
$Z                                                          > $FiLeTmP_TRIANGLE_OR$COORD_X

$Z                  $CA                 $FiLeTmP_TRIANGLE_OR                                                                      |     \
$Z                  $AW                 ' { print $2 } '                                                                          |     \
$Z                  $SE                 -e "s/^.*=//"                                                                                   \
$Z                                                          > $FiLeTmP_TRIANGLE_OR$COORD_Y

$Z                  set                 NpartX=`$CA $FiLeTmP_TRIANGLE_OR$COORD_X | $WCl`
$Z                  set                 NpartY=`$CA $FiLeTmP_TRIANGLE_OR$COORD_Y | $WCl`
$Z                  set                 Npart=`$xcg/MIN2.01$X x=$NpartX y=$NpartY`

$Z                  $xci/valeurs_inte$X                                                                                                 \
$Z                                      premiere=1 derniere=$Npart                                                                      \
$Z                                      vD=$NOIR vA=$BLANC                                                                              \
$Z                                      lineaire=VRAI                                                                                   \
$Z                                      entiers=VRAI                                                                                    \
$Z                                                          >   $FiLeTmP_TRIANGLE_OR$LUMIN
$Z                                      # Generation de la liste des niveaux a utiliser pour acceder a la palette '$_____Palette'...  #

$Z                  if                  ($_____Distord == $EXIST) then
$Z                                      # Possibilite introduite le 20120511072309...                                                 #
#20120511092544____:$Z                                      $_____DistordGen    ne=0                                               \  #
#20120511092544____:$Z                                                          LISTE_X=$FiLeTmP_TRIANGLE_OR$COORD_X               \  #
#20120511092544____:$Z                                                          LISTE_Y=$FiLeTmP_TRIANGLE_OR$COORD_Y               \  #
#20120511092544____:$Z                                                          LISTE_Z=0                                          \  #
#20120511092544____:$Z                                                          $_____DistordArg                                   \  #
#20120511092544____:$Z                                                                              > $FiLeTmP_TRIANGLE_OR$COORD_Z    #
$Z
$Z                                      $xrv/champ_Z.01$X   ne=0                                                                        \
$Z                                                          LISTE_X=$FiLeTmP_TRIANGLE_OR$COORD_X                                        \
$Z                                                          LISTE_Y=$FiLeTmP_TRIANGLE_OR$COORD_Y                                        \
$Z                                                          A=$_____DistordChamp                                                        \
$Z                                                          periodiser_X=$_____DistordPeriodX                                           \
$Z                                                          periodiser_Y=$_____DistordPeriodY                                           \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR$COORD_Z
$Z                                      # On notera le 20170602091128 que les extrema des coordonnees 'X' et 'Y' sont ceux du         #
$Z                                      # triangle de base du processus de construction du pavage. Or etant donne, en particulier,    #
$Z                                      # le rapport de zoom utilise, une grande partie de ce triangle est hors ecran et ce afin de   #
$Z                                      # presenter un pavage a l'interieur du cadre de l'image donnant l'illusion d'un pavage        #
$Z                                      # s'etendant a l'infini (hors de l'image)...                                                  #
$Z                                      #                                                                                             #
$Z                                      # En consequence de cela, le champ defini par '$_____DistordChamp' n'est pas superposable     #
$Z                                      # a l'image en cours de generation, mais est le plus petit champ rectangulaire contenant      #
$Z                                      # le triangle de base ; il est donc en general plus grand que cette image et possede des      #
$Z                                      # proportions differentes, ainsi que le montre le shema suivant :                             #
$Z                                      #                                                                                             #
$Z                                      #                                                                                             #
$Z                                      #                    -------------------------------------------------------                  #
$Z                                      #                   |               Champ   de  *  Distorsion               |                 #
$Z                                      #                   |                         *   *                         |                 #
$Z                                      #                   |                       *       *                       |                 #
$Z                                      #                   |                     *           *                     |                 #
$Z                                      #                   |                   *               *                   |                 #
$Z                                      #                   |                 *    -----------    *                 |                 #
$Z                                      #                   |               *     |           |     *               |                 #
$Z                                      #                   |             *       |           |       *             |                 #
$Z                                      #                   |           *         |   Image   |         *           |                 #
$Z                                      #                   |         *           |           |           *         |                 #
$Z                                      #                   |       *             |           |             *       |                 #
$Z                                      #                   |     *                -----------                *     |                 #
$Z                                      #                   |   *                                               *   |                 #
$Z                                      #                   | *                 Triangle  de Base                 * |                 #
$Z                                      #                   |+ + + + + + + + + + + + + + + + + + + + + + + + + + + +|                 #
$Z                                      #                    -------------------------------------------------------                  #
$Z                                      #                                                                                             #
$Z
$Z                  else
$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$_____CoordonneeZ                                                   \
$Z                                                                              > $FiLeTmP_TRIANGLE_OR$COORD_Z
$Z                                      # Introduit le 20170605091158 afin que le fichier '$FiLeTmP_TRIANGLE_OR$COORD_Z' existe       #
$Z                                      # dans tous les cas et donc puisse faire l'objet de '$_____FSavePavage' ci-apres...           #
$Z                  endif


$Z                  _____include(_____xiirv/.TROR.11.2._____U)
$Z                                      # Introduit sous cette forme le 20170605090224...                                             #

$Z                  if        ($_____FSavePavage != $NEXIST) then
$Z                                      # Test introduit le 20170605091158...                                                         #
$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$COORD_X                                        \
$Z                                                                              > $_____FSavePavage$COORD_X

$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$COORD_Y                                        \
$Z                                                                              > $_____FSavePavage$COORD_Y

$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$COORD_Z                                        \
$Z                                                                              > $_____FSavePavage$COORD_Z

$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$ROUGE                                          \
$Z                                                                              > $_____FSavePavage$ROUGE

$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$VERTE                                          \
$Z                                                                              > $_____FSavePavage$VERTE

$Z                                      $xrv/neutre$X       ne=$Npart                                                                   \
$Z                                                          fichier=$FiLeTmP_TRIANGLE_OR$BLEUE                                          \
$Z                                                                              > $_____FSavePavage$BLEUE
$Z                                      # Sauvegardes introduites le 20170605091158 afin de permettre ulterieurement une exploitation #
$Z                                      # du pavage courant...                                                                        #
$Z                  else
$Z                  endif

$Z                  FileTmpE            FiLeTmP_TRIANGLE_OR



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