#######################################################################################################################################
# #
# 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