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