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