#######################################################################################################################################
#                                                                                                                                     #
#         G E N E R A T I O N   D E   R E C T A N G L E S  :                                                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirv/.NBOR.11.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20120504092222).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  SETParam            cPremiere                     1

$Z                  SETParam            cDerniere                     32

$Z                  SETParam            _____Rayon                    0.04

$Z                  SETParam            _____Zoom                     0.25

$Z                  SETParam            _____Palette                  $xiP/arc_ciel.E1

$Z                  FileTmpB            FiLeTmP_RECTANGLES

$c                  #include  <stdio.h>
$c
$c                  #define   ABSO(x)   (((x)>0)?(x):(-(x)))
$c                  #define   MIN2(x,y) (((x)<(y))?(x):(y))
$c
$c                  #define   NBOR      1.6180339887498949
$c
$c                  #define   N0        cPremiere
$c                  #define   N         cDerniere
$c
$c                  #define   OH        2.0
$c                  #define   EH        0.5
$c
$c                  #define   OV        0.1
$c                                      /* ATTENTION : le 20120504133825, 'OV' est passe de 0.5 a 0.1...                             */
$c                  #define   EV        2.0
$c
$c                  #define   XCentre   0.5
$c                  #define   YCentre   0.5
$c
$c                  #define   NOIR      0
$c                  #define   BLANC     255
$c
$c                  #define   OLUMIN    (NOIR+1)
$c                  #define   ELUMIN    (BLANC-1)
$c
$c                  int       main()
$c                            {
$c                            int       n;
$c                            double    signe,correction=1.0e300;
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      double    H=((EH*(n-N0))+(OH*(N-n)))/(N-N0);
$c                                      double    V=((EV*(n-N0))+(OV*(N-n)))/(N-N0);
$c                                      double    RAPPORT;
$c                                      double    ecart;
$c
$c                                      RAPPORT=H/V;
$c
$c                                      ecart=RAPPORT-NBOR;
$c                                      signe=((ecart>=0)?+1:-1);
$c                                      correction=MIN2(ABSO(ecart),correction);
$c                                      /* Afin d'etre sur de tomber (a epsilon pres) sur un rectangle d'or dans le 'for(...)' qui   */
$c                                      /* suit...                                                                                   */
$c                                      }
$c
$c                            correction=signe*correction;
$c
$c                            for       (n=N0 ; n<=N ; n++)
$c                                      {
$c                                      double    H=((EH*(n-N0))+(OH*(N-n)))/(N-N0);
$c                                      double    V=((EV*(n-N0))+(OV*(N-n)))/(N-N0);
$c                                      double    RAPPORT;
$c
$c                                      int       LUMIN=(int)((((double)(ELUMIN*(n-N0)))+((double)(OLUMIN*(N-n))))/(double)((N-N0)));
$c                                      double    Z=0;
$c
$c                                      RAPPORT=(H/V)+correction;
$c                                      /* C'est cette correction de 'RAPPORT' qui fait que l'image obtenue (en oubliant les         */
$c                                      /* couleurs...) n'est pas invariante par rotation de pi/2. Les intialisations ci-dessus      */
$c                                      /* pourrait laisser esperer une interpolation entre 4 (=OH/EH) et 1/4 (=OV/EV) pour RAPPORT, */
$c                                      /* alors qu'en fait, a cause de cette correction, il varie entre 4.077050 et 0.327050,       */
$c                                      /* l'amplitude etant bien egale a 19.75 (=20-0.25=19.919192-0.169192)...                     */
$c
$c                                      H = V*RAPPORT;
$c
$c                                      if        (ABSO(RAPPORT-NBOR) < 0.0001)
$c                                                {
$c                                                LUMIN=BLANC;
$c                                                Z=Z-0.0001;
$c                                      /* La coordonnee 'Z' a ete introduite le 20150809105425 afin de decaler tres legerement      */
$c                                      /* vers l'avant le rectangle d'or de facon a ce que ses cotes verticaux ne soient plus       */
$c                                      /* en pointilles...                                                                          */
$c                                                }
$c                                      else
$c                                                {
$c                                                }
$c
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre-H,YCentre-V,Z,LUMIN,RAPPORT
$c                                             );
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre+H,YCentre-V,Z,LUMIN,RAPPORT
$c                                             );
$c
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre+H,YCentre-V,Z,LUMIN,RAPPORT
$c                                             );
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre+H,YCentre+V,Z,LUMIN,RAPPORT
$c                                             );
$c
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre+H,YCentre+V,Z,LUMIN,RAPPORT
$c                                             );
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre-H,YCentre+V,Z,LUMIN,RAPPORT
$c                                             );
$c
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre-H,YCentre+V,Z,LUMIN,RAPPORT
$c                                             );
$c                                      printf("echo ' X=%f Y=%f Z=%f L=%d RAPPORT=%f ' >>! $FiLeTmP_RECTANGLES\n"
$c                                            ,XCentre-H,YCentre-V,Z,LUMIN,RAPPORT
$c                                             );
$c                                      }
$c                            }

$Z                  set                 Npoints=`$CA $FiLeTmP_RECTANGLES | $WCl`

$Z                  $CA                 $FiLeTmP_RECTANGLES                                                                       |     \
$Z                  $SE                 -e "s/^.* X=//"                                                                                 \
$Z                                      -e 's/ .*$//'                                                                                   \
$Z                                                                                        >   $FiLeTmP_RECTANGLES$COORD_X

$Z                  $CA                 $FiLeTmP_RECTANGLES                                                                       |     \
$Z                  $SE                 -e "s/^.* Y=//"                                                                                 \
$Z                                      -e 's/ .*$//'                                                                                   \
$Z                                                                                        >   $FiLeTmP_RECTANGLES$COORD_Y

$Z                  $CA                 $FiLeTmP_RECTANGLES                                                                       |     \
$Z                  $SE                 -e "s/^.* Z=//"                                                                                 \
$Z                                      -e 's/ .*$//'                                                                                   \
$Z                                                                                        >   $FiLeTmP_RECTANGLES$COORD_Z

$Z                  $CA                 $FiLeTmP_RECTANGLES                                                                       |     \
$Z                  $SE                 -e "s/^.* L=//"                                                                                 \
$Z                                      -e 's/ .*$//'                                                                                   \
$Z                                                                                        >   $FiLeTmP_RECTANGLES$LUMIN

$Z                  $xrv/particule.10$X                                                                                                 \
$Z                                      np=1                                                                                            \
$Z                                      npoints=$Npoints                                                                                \
$Z                                      LISTE_X=$FiLeTmP_RECTANGLES$COORD_X                                                             \
$Z                                      LISTE_Y=$FiLeTmP_RECTANGLES$COORD_Y                                                             \
$Z                                      LISTE_Z=$FiLeTmP_RECTANGLES$COORD_Z                                                             \
$Z                                      LISTE_NIVEAU=$FiLeTmP_RECTANGLES$LUMIN                                                          \
$Z                                      paletteA=$_____Palette                                                                          \
$Z                                      isoles=FAUX                                                                                     \
$Z                                      chainer=FAUX Pajuster=VRAI equidistance=VRAI Rpoints=1                                          \
$Z                                      Vrayon=$_____Rayon                                                                              \
$Z                                      Lz=1000                                                                                         \
$Z                                      ZOOM=$_____Zoom                                                                                 \
$Z                                      ROTATION_OX=0                                                                                   \
$Z                                      ROTATION_OY=0                                                                                   \
$Z                                      ROTATION_OZ=0                                                                                   \
$Z                                      N_au_carre=VRAI                                                                                 \
$Z                                      editer_extrema_hors=FAUX                                                                        \
$Z                                      chiffres=0                                                                                      \
$Z                                      R=$_____ImageR                                                                                  \
$Z                                                                                                                      $formatI
$Z                                      # Le 20150809105425, "N_au_carre=FAUX" a ete remplace par "N_au_carre=VRAI" afin de           #
$Z                                      # garantir la qualite...                                                                      #

$Z                  FileTmpE            FiLeTmP_RECTANGLES



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