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