#######################################################################################################################################
# #
# T R A C E D ' U N P A V A G E H E X A G O N A L : #
# #
# #
# Author of '$xiirv/.CARR.31.1.$U' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20161013090627). #
# #
#######################################################################################################################################
$Z # On notera que le carrelage que l'on va generer n'est pas contenu dans un rectangle #
$Z # homothetique a l'image, mais bien plutot dans une sorte de losange. Afin de faire #
$Z # croire a une etendue infinie, on genere donc plus d'hexagones qu'a priori necessaires #
$Z # et on choisit un rapport de zoom suffisant... #
$Z SETParam _____Getoile $NEXIST
$Z # Parametre introduit le 20161014101032... #
$Z # #
$Z # Je rappelle le 20220315113508 que : #
$Z # #
$Z # _____Getoile=$EXIST ==> Maillages de triangles equilateraux ('v $xiirv/CARR.41') #
$Z # #
$Z # _____Getoile=$NEXIST ==> Maillages d'hexagones ('v $xiirv/CARR.31') #
$Z # #
$Z setParam _____NAuCarre `GetParam $xrv/particule.10$X N_AU_CARRE`
$Z setParam _____NiterationsX 7
$Z setParam _____NiterationsY 6
$Z setParam _____ItranslationX -2.250
$Z setParam _____ItranslationY -3.455
$Z setParam _____DistanceMini 0.002
$Z setParam _____X 0
$Z setParam _____Y 0
$Z setParam _____EpaisseurP 0.015
$Z setParam _____RougeP $GRIS_8
$Z setParam _____VerteP $GRIS_4
$Z setParam _____BleueP $GRIS_0
$Z setParam _____EpaisseurE 0.015
$Z setParam _____RougeE $GRIS_8
$Z setParam _____VerteE $GRIS_4
$Z setParam _____BleueE $GRIS_0
$Z setParam _____NSommets 6
$Z setParam _____Rayon 0.5
$Z setParam _____Zoom 0.60
$Z SETParam _____Elaguer $NEXIST
$Z # Parametre introduit le 20220315151414... #
$Z setParam _____GElaguage 1947
$Z # Parametre introduit le 20220315151414... #
$Z setParam _____ParticulePara1 "$K_VIDE"
$Z # Parametre introduit le 20161015093134... #
$Z FileTmpB FPolygone
$Z set NSommets=`calculI $_____NSommets + 1`
$Z set PaRaMeTrEs1="$K_VIDE"
$Z set PaRaMeTrEs1="$PaRaMeTrEs1"" premiere=1 derniere=$NSommets"
$Z set PaRaMeTrEs1="$PaRaMeTrEs1"" lineaire=VRAI"
$Z set PaRaMeTrEs1="$PaRaMeTrEs1"" gamma=0"
$Z set PaRaMeTrEs1="$PaRaMeTrEs1"" tD=0 tA=$dpi"
$Z set PaRaMeTrEs1="$PaRaMeTrEs1"" rD=$_____Rayon rA=$_____Rayon"
$Z set PaRaMeTrEs2="$K_VIDE"
$Z set PaRaMeTrEs2="$PaRaMeTrEs2"" premiere=1 derniere=$NSommets"
$Z set PaRaMeTrEs2="$PaRaMeTrEs2"" lineaire=VRAI"
$Z $xci/valeurs_trig$X \
$Z $PaRaMeTrEs1 \
$Z translation=$_____X \
$Z alpha=1 beta=0 | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$COORD_X
$Z $xci/valeurs_trig$X \
$Z $PaRaMeTrEs1 \
$Z translation=$_____Y \
$Z alpha=0 beta=1 | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$COORD_Y
$Z # Definition du polygone. #
$Z $xci/valeurs_inte$X \
$Z $PaRaMeTrEs2 \
$Z vD=$_____EpaisseurP vA=$_____EpaisseurP | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$RAYON
$Z if ($?_____Palette == $NEXIST) then
$Z # Test introduit le 20161013130440... #
$Z $xci/valeurs_inte$X \
$Z $PaRaMeTrEs2 \
$Z vD=$_____RougeP vA=$_____RougeP | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$ROUGE
$Z $xci/valeurs_inte$X \
$Z $PaRaMeTrEs2 \
$Z vD=$_____VerteP vA=$_____VerteP | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$VERTE
$Z $xci/valeurs_inte$X \
$Z $PaRaMeTrEs2 \
$Z vD=$_____BleueP vA=$_____BleueP | \
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier== \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FPolygone$BLEUE
$Z else
$Z endif
$Z if ($_____Getoile == $EXIST) then
$Z # Test introduit le 20161013130440... #
$Z set SoMmEtS2=`calcul 2*$_____NSommets`
$Z set CeNtRe_X=`$xrv/extrema.01$X ne=$SoMmEtS2 fichier=$FPolygone$COORD_X mys=VRAI`
$Z set CeNtRe_Y=`$xrv/extrema.01$X ne=$SoMmEtS2 fichier=$FPolygone$COORD_Y mys=VRAI`
$Z # Calcul du centre de gravite du polygone... #
$Z FileTmpB FEtoile
$Z set NPoInTsX=`$CA $FPolygone$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FPolygone$COORD_Y | $WCl`
$Z set NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z $xrv/neutre$X ne=$NPoInTs fichier=$CeNtRe_X \
$Z > $FEtoile.1$COORD_X
$Z $xrv/neutre$X ne=$NPoInTs fichier=$CeNtRe_Y \
$Z > $FEtoile.1$COORD_Y
$Z $PAST $FEtoile.1$COORD_X $FPolygone$COORD_X | \
$Z $AW ' { print $1 "\n" $2 } ' \
$Z > $FEtoile.2$COORD_X
$Z $PAST $FEtoile.1$COORD_Y $FPolygone$COORD_Y | \
$Z $AW ' { print $1 "\n" $2 } ' \
$Z > $FEtoile.2$COORD_Y
$Z set NPoInTsX=`$CA $FEtoile.2$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FEtoile.2$COORD_Y | $WCl`
$Z set NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z $xrv/neutre$X ne=$NPoInTs fichier=$_____EpaisseurE \
$Z > $FEtoile.2$RAYON
$Z $CA $FEtoile.2$COORD_X \
$Z >> $FPolygone$COORD_X
$Z $CA $FEtoile.2$COORD_Y \
$Z >> $FPolygone$COORD_Y
$Z $CA $FEtoile.2$RAYON \
$Z >> $FPolygone$RAYON
$Z if ($?_____Palette == $NEXIST) then
$Z $xrv/neutre$X ne=$NPoInTs fichier=$_____RougeE \
$Z > $FEtoile.2$ROUGE
$Z $xrv/neutre$X ne=$NPoInTs fichier=$_____VerteE \
$Z > $FEtoile.2$VERTE
$Z $xrv/neutre$X ne=$NPoInTs fichier=$_____BleueE \
$Z > $FEtoile.2$BLEUE
$Z $CA $FEtoile.2$ROUGE \
$Z >> $FPolygone$ROUGE
$Z $CA $FEtoile.2$VERTE \
$Z >> $FPolygone$VERTE
$Z $CA $FEtoile.2$BLEUE \
$Z >> $FPolygone$BLEUE
$Z else
$Z endif
$Z FileTmpE FEtoile
$Z else
$Z endif
$Z FileTmpB FPoints
$Z if ($NEXIST) then
$Z # Test utilise en phase de test... #
$Z $CA $FPolygone$COORD_X \
$Z > $FPoints$COORD_X
$Z $CA $FPolygone$COORD_Y \
$Z > $FPoints$COORD_Y
$Z $CA $FPolygone$RAYON \
$Z > $FPoints$RAYON
$Z if ($?_____Palette == $NEXIST) then
$Z # Test introduit le 20161013130440... #
$Z $CA $FPolygone$ROUGE \
$Z > $FPoints$ROUGE
$Z $CA $FPolygone$VERTE \
$Z > $FPoints$VERTE
$Z $CA $FPolygone$BLEUE \
$Z > $FPoints$BLEUE
$Z else
$Z endif
$Z else
$Z endif
$Z set AnGlE=`calculNS $dpi/$_____NSommets`
$Z set AnGlEs2=`calculNS $AnGlE/2`
$Z set HaUtEuR=`calculNS $_____Rayon*cos($AnGlEs2)`
$Z set ITrAnSlAtIoN_X=$_____ItranslationX
$Z set ITrAnSlAtIoN_Y=$_____ItranslationY
$Z # Valeurs initiales des translations des coordonnees {X,Y} des polygones. #
$Z set DTrAnSlAtIoN_X=`calculNS 2*$HaUtEuR*cos($AnGlEs2)`
$Z set DTrAnSlAtIoN_Y=`calculNS 2*$HaUtEuR*sin($AnGlEs2)`
$Z # Amplitudes constantes des translations des coordonnees {X,Y} permettant de passer d'un #
$Z # polygone au suivant sur la diagonale {$DTrAnSlAtIoN_X,$DTrAnSlAtIoN_Y}. #
$Z set ItErAtIoNsY=1
$Z while ($ItErAtIoNsY <= $_____NiterationsY)
$Z set TrAnSlAtIoN_X=$ITrAnSlAtIoN_X
$Z set TrAnSlAtIoN_Y=$ITrAnSlAtIoN_Y
$Z set ItErAtIoNsX=1
$Z while ($ItErAtIoNsX <= $_____NiterationsX)
$Z $xrv/ADD2.11$X ne=0 \
$Z fichier1=$FPolygone$COORD_X \
$Z fichier2=$TrAnSlAtIoN_X \
$Z >>! $FPoints$COORD_X
$Z $xrv/ADD2.11$X ne=0 \
$Z fichier1=$FPolygone$COORD_Y \
$Z fichier2=$TrAnSlAtIoN_Y \
$Z >>! $FPoints$COORD_Y
$Z # Translation des polygones : dans le cas d'hexagones, le collage se fait par le cote #
$Z # oblique situe en haut et adroite... #
$Z $xrv/neutre$X ne=0 \
$Z fichier=$FPolygone$RAYON \
$Z >>! $FPoints$RAYON
$Z if ($?_____Palette == $NEXIST) then
$Z # Test introduit le 20161013130440... #
$Z $xrv/neutre$X ne=0 \
$Z fichier=$FPolygone$ROUGE \
$Z >>! $FPoints$ROUGE
$Z $xrv/neutre$X ne=0 \
$Z fichier=$FPolygone$VERTE \
$Z >>! $FPoints$VERTE
$Z $xrv/neutre$X ne=0 \
$Z fichier=$FPolygone$BLEUE \
$Z >>! $FPoints$BLEUE
$Z else
$Z endif
$Z set TrAnSlAtIoN_X=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_X b=$DTrAnSlAtIoN_X`
$Z set TrAnSlAtIoN_Y=`$xcg/ADD2.01$X a=$TrAnSlAtIoN_Y b=$DTrAnSlAtIoN_Y`
$Z # Amplitude de l'eventuelle prochaine translation... #
$Z @ ItErAtIoNsX = $ItErAtIoNsX + 1
$Z end
$Z set ITrAnSlAtIoN_X=`calculNS $ITrAnSlAtIoN_X+(2*$HaUtEuR*cos($AnGlEs2+$AnGlE))`
$Z set ITrAnSlAtIoN_Y=`calculNS $ITrAnSlAtIoN_Y+(2*$HaUtEuR*sin($AnGlEs2+$AnGlE))`
$Z # Progression des translations initiales en 'X' et en 'Y'... #
$Z @ ItErAtIoNsY = $ItErAtIoNsY + 1
$Z end
$Z FileTmpE FPolygone
$Z set CoOrDoNnEe_Z=0.5
$Z set AXYZ_BXYZ="AXYZ=1 BXYZ=0"
$Z set NPoInTsX=`$CA $FPoints$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FPoints$COORD_Y | $WCl`
$Z set NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z if ($?_____Palette == $NEXIST) then
$Z # Test introduit le 20161013130440... #
$Z set CoUlEuRs="$CoUlEuRs"" LISTE_ROUGE=$FPoints$ROUGE"
$Z set CoUlEuRs="$CoUlEuRs"" LISTE_VERTE=$FPoints$VERTE"
$Z set CoUlEuRs="$CoUlEuRs"" LISTE_BLEUE=$FPoints$BLEUE"
$Z else
$Z $xci/valeurs_inte$X \
$Z premiere=1 derniere=$NPoInTs \
$Z vD=$NOIR_PLANCHER vA=$BLANC \
$Z lineaire=VRAI \
$Z entiers=VRAI \
$Z > $FPoints$LUMIN
$Z if ($_____Elaguer == $EXIST) then
$Z # Test introduit le 20220315151414... #
$Z set MoItIe=2
$Z set NPoInTsS2=`$xcg/DIVZ.01$X a=$NPoInTs b=$MoItIe`
$Z FileTmpB FSelection
$Z set RdnMin=0
$Z set RdnMax=+1
$Z set RdnSeuil=`$xcg/MOYE.01$X a=$RdnMin b=$RdnMax`
$Z $xrv/val_alea.01$X \
$Z ne=$NPoInTsS2 \
$Z graine=$_____GElaguage \
$Z LISTE_BORNES_INFERIEURES=$RdnMin \
$Z LISTE_BORNES_SUPERIEURES=$RdnMax | \
$Z $xrv/IFGE.11$X \
$Z ne=0 \
$Z fichier1== \
$Z fichier2=$RdnSeuil \
$Z exemplaires=$MoItIe \
$Z > $FSelection
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$COORD_X \
$Z selection=$FSelection \
$Z > $FSelection$COORD_X
$Z $DELETE $FPoints$COORD_X
$Z $MV $FSelection$COORD_X $FPoints$COORD_X
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$COORD_Y \
$Z selection=$FSelection \
$Z > $FSelection$COORD_Y
$Z $DELETE $FPoints$COORD_Y
$Z $MV $FSelection$COORD_Y $FPoints$COORD_Y
$Z if ($?_____Palette == $NEXIST) then
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$ROUGE \
$Z selection=$FSelection \
$Z > $FSelection$ROUGE
$Z $DELETE $FPoints$ROUGE
$Z $MV $FSelection$ROUGE $FPoints$ROUGE
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$VERTE \
$Z selection=$FSelection \
$Z > $FSelection$VERTE
$Z $DELETE $FPoints$VERTE
$Z $MV $FSelection$VERTE $FPoints$VERTE
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$BLEUE \
$Z selection=$FSelection \
$Z > $FSelection$BLEUE
$Z $DELETE $FPoints$BLEUE
$Z $MV $FSelection$BLEUE $FPoints$BLEUE
$Z else
$Z $xrv/selection.01$X \
$Z ne=0 \
$Z fichier=$FPoints$LUMIN \
$Z selection=$FSelection \
$Z > $FSelection$LUMIN
$Z $DELETE $FPoints$LUMIN
$Z $MV $FSelection$LUMIN $FPoints$LUMIN
$Z endif
$Z FileTmpE FSelection
$Z set NPoInTsX=`$CA $FPoints$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FPoints$COORD_Y | $WCl`
$Z set NPoInTs=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z else
$Z endif
$Z set CoUlEuRs="$K_VIDE"
$Z set CoUlEuRs="$CoUlEuRs"" LISTE_NIVEAU=$FPoints$LUMIN"
$Z set CoUlEuRs="$CoUlEuRs"" paletteA=$_____Palette"
$Z endif
$Z $xrv/particule.10$X \
$Z np=1 \
$Z iterations=$NPoInTs \
$Z $AXYZ_BXYZ \
$Z LISTE_X=$FPoints$COORD_X \
$Z LISTE_Y=$FPoints$COORD_Y \
$Z LISTE_Z=$CoOrDoNnEe_Z \
$Z LISTE_RAYON=$FPoints$RAYON \
$Z $CoUlEuRs \
$Z ZOOM=$_____Zoom \
$Z isoles=FAUX \
$Z ajuster_points=VRAI equidistance=VRAI \
$Z distance_minimale=$_____DistanceMini \
$Z Lz=100 \
$Z editer_extrema_hors=FAUX \
$Z N_AU_CARRE=$_____NAuCarre \
$Z $_____ParticulePara1 \
$Z chiffres=0 \
$Z R=$_____ImagesR \
$Z $formatI
$Z # Trace du polygone. #
$Z FileTmpE FPoints