####################################################################################################################################### # # # D E F I N I T I O N D ' U N O R N E M E N T D E Y O U R T E F U N E R A I R E # # E N V E R S I O N N O N R E C U R S I V E : # # # # # # Author of '$xiirf/.YOUF.11.1.$U' : # # # # Jean-Francois COLONNA (LACTAMME, 20070717164834). # # # ####################################################################################################################################### $Z setParam _____Cubique VRAI $Z # Parametre introduit le 20070719111851... # $Z setParam _____Etages 4 $Z setParam _____RVisu1 0.02 $Z setParam _____RVisu2 0.08 $Z setParam _____dxP1G 0 $Z # Parametre introduit le 20070718113400... # $Z setParam _____dyP1G -1 $Z # Parametre introduit le 20070718113400... # $Z setParam _____dxP1_ 1 $Z # Parametre introduit le 20070718113400... # $Z setParam _____dyP1_ 0 $Z # Parametre introduit le 20070718113400... # $Z setParam _____dxP1D 0 $Z # Parametre introduit le 20070718113400... # $Z setParam _____dyP1D +1 $Z # Parametre introduit le 20070718113400... # $Z setParam _____MinROUGE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____MaxROUGE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____MinVERTE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____MaxVERTE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____MinBLEUE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____MaxBLEUE $BLANC $Z # Parametre introduit le 20070718091733... # $Z setParam _____Graine 1789 $Z # Parametre introduit le 20070718091733... # $Z setParam _____DGraine 11 $Z # Parametre introduit le 20070718093056... # #20250211120543____:$Z setenv LONGUEUR_NOMS 60 # $Z set PrecisionCalcul=4 $Z # Parametrage general... # $Z set CoOrd_x0=0.5 $Z set CoOrd_y0=0.5 $Z set RaYoN=0.4 $Z # L'ornement de yourte funeraire est defini a l'aide du motif suivant : # $Z # # $Z # R R # $Z # P1G _______M_______ P1D # $Z # \ | / # $Z # \ R / # $Z # \ | / # $Z # \|/ # $Z # # $Z # P1 # $Z # # $Z # ou "R" vaut '$RaYoN' et ou {x0,y0} sont les coordonnees du point 'M' ci-dessus... # $Z # # $Z # Ce motif est ensuite reproduit recursivement aux points 'P1G' et 'P1D' apres reduction de # $Z # moitie... # $Z set dCoOrd_xP1G=$_____dxP1G $Z set dCoOrd_yP1G=$_____dyP1G $Z set RaYoN_P1G=$_____RVisu1 $Z # Definition du point 'P1G'. # $Z set dCoOrd_xP1_=$_____dxP1_ $Z set dCoOrd_yP1_=$_____dyP1_ $Z set RaYoN_P1_=$_____RVisu2 $Z # Definition du point 'P1'. # $Z set dCoOrd_xP1D=$_____dxP1D $Z set dCoOrd_yP1D=$_____dyP1D $Z set RaYoN_P1D=$_____RVisu1 $Z # Definition du point 'P1D'. # $Z FileTmpB Image1 $Z # Image du fond... # $Z execRVB $xci/init$X niveau=$NOIR R=$Image1%s $formatI $Z # Generation de l'image du fond... # $Z set ReDuCtIoN=2 $Z # Facteur de reduction (constant) de passage d'un etage a l'autre... # $Z # # $Z # ATTENTION : ce facteur de reduction ne peut valoir que 2. Ceci est du a la methode non # $Z # recursive de construction qui fait que l'on construit etage apres etage au moyen d'une # $Z # translation qui est propre a chaque etage et qui est constante sur chaque etage ; or cette # $Z # constance n'est vraie que pour un facteur egal a 2. On verra avec profit le programme # $Z # 'v $xiirf/.YOUF.31.1.$U _____Reduction' qui corrige ce defaut... # $Z set DiViSeUr=1 $Z # Diviseur courant des coordonnees, du rayon,... # $Z set SaVe_NElEmEnTsH=1 $Z # Nombre d'elements du premier etage (puis ensuite des etages superieurs...). # $Z set NEtAgEs=$_____Etages $Z # Nombre d'etages... # $Z set GrAiNe=$_____Graine $Z # Graine du generateur aleatoire de couleurs... # $Z while ($NEtAgEs > 0) $Z set NElEmEnTsH=$SaVe_NElEmEnTsH $Z set TrAnSlAtIoN=0 $Z # Translation horizontale permettant de passer d'un element a son voisin de droite... # $Z while ($NElEmEnTsH > 0) $Z FileTmpB FPoint2 $Z # Fichiers decrivant les trois points {P2G,P2,P2D}. # $Z set CoOrd_xP2G=`calculNS $CoOrd_x0-$RaYoN+$TrAnSlAtIoN` $Z set CoOrd_yP2G=`calculNS $CoOrd_y0` $Z set dCoOrd_xP2G=`calculNS $dCoOrd_xP1G/$DiViSeUr` $Z set dCoOrd_yP2G=`calculNS $dCoOrd_yP1G/$DiViSeUr` $Z set RaYoN_P2G=`calculNS $RaYoN_P1G/$DiViSeUr` $Z # Definition du point 'P2G' courant. # $Z set CoOrd_xP2_=`calculNS $CoOrd_x0+$TrAnSlAtIoN` $Z set CoOrd_yP2_=`calculNS $CoOrd_y0-$RaYoN` $Z set dCoOrd_xP2_=`calculNS $dCoOrd_xP1_/$DiViSeUr` $Z set dCoOrd_yP2_=`calculNS $dCoOrd_yP1_/$DiViSeUr` $Z set RaYoN_P2_=`calculNS $RaYoN_P1_/$DiViSeUr` $Z # Definition du point 'P2' courant. # $Z set CoOrd_xP2D=`calculNS $CoOrd_x0+$RaYoN+$TrAnSlAtIoN` $Z set CoOrd_yP2D=`calculNS $CoOrd_y0` $Z set dCoOrd_xP2D=`calculNS $dCoOrd_xP1D/$DiViSeUr` $Z set dCoOrd_yP2D=`calculNS $dCoOrd_yP1D/$DiViSeUr` $Z set RaYoN_P2D=`calculNS $RaYoN_P1D/$DiViSeUr` $Z # Definition du point 'P2D' courant. # $Z FileTmpB FPoint2 $Z echo $CoOrd_xP2G >>! $FPoint2$COORD_X $Z echo $CoOrd_xP2_ >>! $FPoint2$COORD_X $Z echo $CoOrd_xP2D >>! $FPoint2$COORD_X $Z echo $CoOrd_yP2G >>! $FPoint2$COORD_Y $Z echo $CoOrd_yP2_ >>! $FPoint2$COORD_Y $Z echo $CoOrd_yP2D >>! $FPoint2$COORD_Y $Z echo $dCoOrd_xP2G >>! $FPoint2.d$COORD_X $Z echo $dCoOrd_xP2_ >>! $FPoint2.d$COORD_X $Z echo $dCoOrd_xP2D >>! $FPoint2.d$COORD_X $Z echo $dCoOrd_yP2G >>! $FPoint2.d$COORD_Y $Z echo $dCoOrd_yP2_ >>! $FPoint2.d$COORD_Y $Z echo $dCoOrd_yP2D >>! $FPoint2.d$COORD_Y $Z echo $RaYoN_P2G >>! $FPoint2.r $Z echo $RaYoN_P2_ >>! $FPoint2.r $Z echo $RaYoN_P2D >>! $FPoint2.r $Z FileTmpB Image2 $Z # Images des images des niveaux superieurs. # $Z set NPoInTsX=`$CA $FPoint2$COORD_X | $WCl` $Z set NPoInTsY=`$CA $FPoint2$COORD_Y | $WCl` $Z set NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY` $Z $xrv/val_alea.01$X \ $Z ne=$NPoInTs \ $Z graine=$GrAiNe \ $Z LISTE_BORNES_INFERIEURES=$_____MinROUGE \ $Z LISTE_BORNES_SUPERIEURES=$_____MaxROUGE \ $Z entiers=VRAI \ $Z > $FPoint2$ROUGE $Z @ GrAiNe = $GrAiNe + $_____DGraine $Z $xrv/val_alea.01$X \ $Z ne=$NPoInTs \ $Z graine=$GrAiNe \ $Z LISTE_BORNES_INFERIEURES=$_____MinVERTE \ $Z LISTE_BORNES_SUPERIEURES=$_____MaxVERTE \ $Z entiers=VRAI \ $Z > $FPoint2$VERTE $Z @ GrAiNe = $GrAiNe + $_____DGraine $Z $xrv/val_alea.01$X \ $Z ne=$NPoInTs \ $Z graine=$GrAiNe \ $Z LISTE_BORNES_INFERIEURES=$_____MinBLEUE \ $Z LISTE_BORNES_SUPERIEURES=$_____MaxBLEUE \ $Z entiers=VRAI \ $Z > $FPoint2$BLEUE $Z @ GrAiNe = $GrAiNe + $_____DGraine $Z $xrv/particule.10$X \ $Z npoints=$NPoInTs \ $Z LISTE_X=$FPoint2$COORD_X \ $Z LISTE_Y=$FPoint2$COORD_Y \ $Z LISTE_Z=0 \ $Z LISTE_dX=$FPoint2.d$COORD_X \ $Z LISTE_dY=$FPoint2.d$COORD_Y \ $Z LISTE_dZ=0 \ $Z LISTE_RAYON=$FPoint2.r \ $Z LISTE_ROUGE=$FPoint2$ROUGE \ $Z LISTE_VERTE=$FPoint2$VERTE \ $Z LISTE_BLEUE=$FPoint2$BLEUE \ $Z isoles=FAUX \ $Z Pajuster=VRAI \ $Z chainer=VRAI \ $Z equidistance=VRAI \ $Z cubique=$_____Cubique \ $Z ZOOM=1 \ $Z fond=VRAI F=$Image1 \ $Z extrema_hors=FAUX \ $Z R=$Image2 \ $Z chiffres=0 \ $Z $formatI $Z # Generation de l'image des niveaux superieurs. # $Z execRVB $xci/neutre$X A=$Image2%s R=$Image1%s $formatI $Z FileTmpE Image2 $Z FileTmpE FPoint2 $Z set TrAnSlAtIoN=`calculNS $TrAnSlAtIoN+(2*$ReDuCtIoN*$RaYoN)` $Z @ NElEmEnTsH = $NElEmEnTsH - 1 $Z end $Z @ NEtAgEs = $NEtAgEs - 1 $Z # Passage a l'etage superieur... # $Z @ SaVe_NElEmEnTsH = $SaVe_NElEmEnTsH * 2 $Z # En passant d'un etage a l'etage superieur, le nombre d'elements est multiplie par deux... # $Z set DiViSeUr=`calculNS $ReDuCtIoN*$DiViSeUr` $Z # En passant d'un etage a l'etage superieur, les elements sont deux fois plus petits... # $Z set CoOrd_x0=`calculNS $CoOrd_x0-$RaYoN` $Z set RaYoN=`calculNS $RaYoN/$ReDuCtIoN` $Z # ATTENTION : la division faite ici est par '$ReDuCtIoN' et non pas par '$DiViSeUr (qui ne # $Z # vaut 2 qu'au second etage... # $Z set CoOrd_y0=`calculNS $CoOrd_y0+$RaYoN` $Z end $Z execRVB $xci/neutre$X A=$Image1%s R=$_____ImageR%s $formatI $Z FileTmpE Image1