####################################################################################################################################### # # # D E C O U P A G E A U T O - S I M I L A I R E D E T R I A N G L E S D ' O R : # # # # # # Author of '$xiirv/.TROR.11.$U' : # # # # Jean-Francois Colonna (LACTAMME, 20120507092031). # # # ####################################################################################################################################### $Z setParam _____Profondeur 4 $Z setParam _____Graine `GetParam $xci/valeurs_TriangleOr$X graine` $Z # Argument introduit le 20120507111305... # $Z setParam _____Centrer `GetParam $xci/valeurs_TriangleOr$X centrer_structure` $Z # Argument introduit le 20120510101757... # $Z SETParam _____Symetrique `GetParam $xci/valeurs_TriangleOr$X triangle_symetrique` $Z # Argument introduit le 20120510113958... # $Z SETParam _____Etoile $NEXIST $Z # Argument introduit le 20120510101757... # $Z SETParam _____Segments `GetParam $xci/valeurs_TriangleOr$X segments` $Z setParam _____PseudoPeriodique `GetParam $xci/valeurs_TriangleOr$X pseudo_periodique` $Z # Argument introduit le 20120508110944... # $Z # # $Z # On rappelle le 20170603100020 que si : # $Z # # $Z # _____PseudoPeriodique=VRAI # $Z # # $Z # alors la valeur de '$_____Graine' n'a aucune importance car, en effet, l'argument # $Z # "graine=" n'est pas utilise ('v $xci/valeurs_TriangleOr$K 20170603093541')... # $Z setParam _____SymetriePP `GetParam $xci/valeurs_TriangleOr$X symetriser_initialement_pseudo_periodique` $Z # Argument introduit le 20120508110944... # $Z setParam _____Tquelconque `GetParam $xci/valeurs_TriangleOr$X triangle_quelconque` $Z setParam _____Tplats `GetParam $xci/valeurs_TriangleOr$X triangle_plat` $Z setParam _____GaleatoireP `GetParam $xci/valeurs_TriangleOr$X generation_aleatoire_triangles_plats` $Z setParam _____PbrancheP `GetParam $xci/valeurs_TriangleOr$X premiere_branche_triangles_plats` $Z setParam _____GaleatoireM `GetParam $xci/valeurs_TriangleOr$X generation_aleatoire_triangles_minces` $Z setParam _____MbrancheP `GetParam $xci/valeurs_TriangleOr$X premiere_branche_triangles_minces` $Z SETParam _____TriNumerique $NEXIST $Z # Argument introduit le 20120514115202... # $Z SETParam _____Simplifier $NEXIST $Z # Argument introduit le 20120508130149... # $Z SETParam _____FSavePavage $NEXIST $Z # Argument introduit le 20170605091158... # $Z setParam _____CoordonneeZ 0 $Z # Argument introduit le 20170605100344... # $Z _____include(_____xiirv/.TROR.11.1._____U) $Z # Introduit sous cette forme le 20170605090224... # $Z FileTmpB FiLeTmP_TRIANGLE_OR $Z if (($_____Simplifier == $NEXIST) && ($_____Segments == VRAI)) then $Z EROR "le mode _____Segments=$_____Segments implique la simplication (forcee)." $Z SET _____Simplifier=$EXIST $Z else $Z endif $Z if (($_____Simplifier == $EXIST) && ($_____Segments == FAUX)) then $Z SET _____Segments=VRAI $Z EROR "La simplification implique le mode _____Segments=$_____Segments (force)." $Z else $Z endif $Z if (($_____Simplifier == $EXIST) && ($_____Segments == VRAI)) then $Z set ChiffresFlot=8 $Z # Afin de ne pas avoir de problemes d'arrondi. En effet deux points identiques peuvent avoir # $Z # des coordonnees legerement differentes et cela serait dramatique lors du '$SOR' qui suivra. # $Z # Mais cela n'a pas suffit, il a fallu ajouter 'v $xci/valeurs_TriangleOr$K TROP_PETIT'... # $Z set EtiquetteP="1" $Z set EtiquetteM="2" $Z # Afin d'etiquetter les triangles de facon numerique, cela permettant alors d'utiliser # $Z # 'v $xrv/permute.11$K' par exemple sur toutes les sorties (introduit le 20120510090334). # $Z else $Z set ChiffresFlot=`GetParam $xci/valeurs_TriangleOr$X ChiffresFlot` $Z set EtiquetteP=`GetParam $xci/valeurs_TriangleOr$X etiquette_triangles_plats` $Z set EtiquetteM=`GetParam $xci/valeurs_TriangleOr$X etiquette_triangles_minces` $Z endif $Z $xci/valeurs_TriangleOr$X \ $Z graine=$_____Graine \ $Z pseudo_periodique=$_____PseudoPeriodique \ $Z symetriser_initialement_pseudo_periodique=$_____SymetriePP \ $Z triangle_quelconque=$_____Tquelconque \ $Z triangle_plat=$_____Tplats \ $Z generation_aleatoire_triangles_plats=$_____GaleatoireP \ $Z premiere_branche_triangles_plats=$_____PbrancheP \ $Z generation_aleatoire_triangles_minces=$_____GaleatoireM \ $Z premiere_branche_triangles_minces=$_____MbrancheP \ $Z profondeur=$_____Profondeur \ $Z centrer_structure=$_____Centrer \ $Z triangle_symetrique=$_____Symetrique \ $Z segments=$_____Segments \ $Z etiquette_triangles_plats=$EtiquetteP \ $Z etiquette_triangles_minces=$EtiquetteM \ $Z ChiffresFlot=$ChiffresFlot \ $Z > $FiLeTmP_TRIANGLE_OR $Z # L'argument "graine=" a ete introduit le 20170603092116 (oublie le 20120507111305 !)... # $Z if (($_____Etoile == $EXIST) && ($_____Symetrique == VRAI) && ($_____Segments == VRAI)) then $Z FileTmpB FiLeTmP_ETOILE_OR $Z $Z $CA $FiLeTmP_TRIANGLE_OR | \ $Z $SE -e "s/=/ /g" \ $Z > $FiLeTmP_TRIANGLE_OR.10 $Z $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $1 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.mX1 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $2 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.X1 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $3 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.mY1 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $4 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.Y1 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $5 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.mX2 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $6 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.X2 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $7 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.mY2 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $8 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.Y2 $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $9 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.etiquetteT $Z $CA $FiLeTmP_TRIANGLE_OR.10 | \ $Z $AW ' { print $10 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.etiquetteC $Z $Z FileTmpB FiLeTmP_ETOILE_OR $Z $Z $CA $FiLeTmP_TRIANGLE_OR.mX1 \ $Z >>! $FiLeTmP_ETOILE_OR.mX1 $Z $CA $FiLeTmP_TRIANGLE_OR.mY1 \ $Z >>! $FiLeTmP_ETOILE_OR.mY1 $Z $Z set ChiffresFlot=6 $Z $Z set Epsilon=`$xcg/PUIX.01$X a=10 exposant=-$ChiffresFlot` $Z $Z $xrv/neutre$X ne=0 \ $Z fichier=$FiLeTmP_TRIANGLE_OR.X1 \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.X1 $Z # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre # $Z # ulterieurement un '$SOR' et un '$UNIQ' significatifs... # $Z $xrv/neutre$X ne=0 \ $Z fichier=$FiLeTmP_TRIANGLE_OR.Y1 \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.Y1 $Z # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre # $Z # ulterieurement un '$SOR' et un '$UNIQ' significatifs... # $Z $Z $CA $FiLeTmP_TRIANGLE_OR.mX2 \ $Z >>! $FiLeTmP_ETOILE_OR.mX2 $Z $CA $FiLeTmP_TRIANGLE_OR.mY2 \ $Z >>! $FiLeTmP_ETOILE_OR.mY2 $Z $Z $xrv/neutre$X ne=0 \ $Z fichier=$FiLeTmP_TRIANGLE_OR.X2 \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.X2 $Z # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre # $Z # ulterieurement un '$SOR' et un '$UNIQ' significatifs... # $Z $xrv/neutre$X ne=0 \ $Z fichier=$FiLeTmP_TRIANGLE_OR.Y2 \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.Y2 $Z # L'usage de '$xrv/neutre$X' est destine a appliquer '$ChiffresFlot' afin de permettre # $Z # ulterieurement un '$SOR' et un '$UNIQ' significatifs... # $Z $Z $CA $FiLeTmP_TRIANGLE_OR.etiquetteT \ $Z >>! $FiLeTmP_ETOILE_OR.etiquetteT $Z $CA $FiLeTmP_TRIANGLE_OR.etiquetteC \ $Z >>! $FiLeTmP_ETOILE_OR.etiquetteC $Z $Z set NumeroBranche=1 $Z $Z while ($NumeroBranche <= 4) $Z set AngleZ=`calcul $NumeroBranche*((2*$pi)/5)` $Z $Z $CA $FiLeTmP_TRIANGLE_OR.mX1 \ $Z >>! $FiLeTmP_ETOILE_OR.mX1 $Z $CA $FiLeTmP_TRIANGLE_OR.mY1 \ $Z >>! $FiLeTmP_ETOILE_OR.mY1 $Z $Z $xrv/ROTATION.01$X ne=0 \ $Z LISTE_X=$FiLeTmP_TRIANGLE_OR.X1 \ $Z LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y1 \ $Z LISTE_Z=0 \ $Z rotation=VRAI \ $Z ROTATION_OX=0 \ $Z ROTATION_OY=0 \ $Z ROTATION_OZ=$AngleZ \ $Z pX=1 pY=0 pZ=0 \ $Z ChiffresFlot=$ChiffresFlot | \ $Z $xrv/TROP_PETIT.01$X \ $Z ne=0 \ $Z fichier== \ $Z epsilon_annulation=$Epsilon \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.X1 $Z $xrv/ROTATION.01$X ne=0 \ $Z LISTE_X=$FiLeTmP_TRIANGLE_OR.X1 \ $Z LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y1 \ $Z LISTE_Z=0 \ $Z rotation=VRAI \ $Z ROTATION_OX=0 \ $Z ROTATION_OY=0 \ $Z ROTATION_OZ=$AngleZ \ $Z pX=0 pY=1 pZ=0 \ $Z ChiffresFlot=$ChiffresFlot | \ $Z $xrv/TROP_PETIT.01$X \ $Z ne=0 \ $Z fichier== \ $Z epsilon_annulation=$Epsilon \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.Y1 $Z $Z $CA $FiLeTmP_TRIANGLE_OR.mX2 \ $Z >>! $FiLeTmP_ETOILE_OR.mX2 $Z $CA $FiLeTmP_TRIANGLE_OR.mY2 \ $Z >>! $FiLeTmP_ETOILE_OR.mY2 $Z $Z $xrv/ROTATION.01$X ne=0 \ $Z LISTE_X=$FiLeTmP_TRIANGLE_OR.X2 \ $Z LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y2 \ $Z LISTE_Z=0 \ $Z rotation=VRAI \ $Z ROTATION_OX=0 \ $Z ROTATION_OY=0 \ $Z ROTATION_OZ=$AngleZ \ $Z pX=1 pY=0 pZ=0 \ $Z ChiffresFlot=$ChiffresFlot | \ $Z $xrv/TROP_PETIT.01$X \ $Z ne=0 \ $Z fichier== \ $Z epsilon_annulation=$Epsilon \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.X2 $Z $xrv/ROTATION.01$X ne=0 \ $Z LISTE_X=$FiLeTmP_TRIANGLE_OR.X2 \ $Z LISTE_Y=$FiLeTmP_TRIANGLE_OR.Y2 \ $Z LISTE_Z=0 \ $Z rotation=VRAI \ $Z ROTATION_OX=0 \ $Z ROTATION_OY=0 \ $Z ROTATION_OZ=$AngleZ \ $Z pX=0 pY=1 pZ=0 \ $Z ChiffresFlot=$ChiffresFlot | \ $Z $xrv/TROP_PETIT.01$X \ $Z ne=0 \ $Z fichier== \ $Z epsilon_annulation=$Epsilon \ $Z ChiffresFlot=$ChiffresFlot \ $Z >>! $FiLeTmP_ETOILE_OR.Y2 $Z $Z $CA $FiLeTmP_TRIANGLE_OR.etiquetteT \ $Z >>! $FiLeTmP_ETOILE_OR.etiquetteT $Z $CA $FiLeTmP_TRIANGLE_OR.etiquetteC \ $Z >>! $FiLeTmP_ETOILE_OR.etiquetteC $Z $Z @ NumeroBranche = $NumeroBranche + 1 $Z end $Z $Z $PAST $FiLeTmP_ETOILE_OR.mX1 \ $Z $FiLeTmP_ETOILE_OR.X1 \ $Z $FiLeTmP_ETOILE_OR.mY1 \ $Z $FiLeTmP_ETOILE_OR.Y1 \ $Z $FiLeTmP_ETOILE_OR.mX2 \ $Z $FiLeTmP_ETOILE_OR.X2 \ $Z $FiLeTmP_ETOILE_OR.mY2 \ $Z $FiLeTmP_ETOILE_OR.Y2 \ $Z $FiLeTmP_ETOILE_OR.etiquetteT \ $Z $FiLeTmP_ETOILE_OR.etiquetteC | \ $Z $AW ' { print $1 "=" $2 " " $3 "=" $4 " " $5 "=" $6 " " $7 "=" $8 " " $9 " " $10 } ' \ $Z > $FiLeTmP_ETOILE_OR $Z $DELETE $FiLeTmP_TRIANGLE_OR $Z $MV $FiLeTmP_ETOILE_OR $FiLeTmP_TRIANGLE_OR $Z $Z FileTmpE FiLeTmP_ETOILE_OR $Z else $Z endif $Z if ($_____TriNumerique == $EXIST) then $Z # Test introduit le 20120514115202.... # $Z $CA $FiLeTmP_TRIANGLE_OR | \ $Z $SE -e "s/[xy][ABC]=//g" \ $Z > $FiLeTmP_TRIANGLE_OR.numerique $Z # Ainsi, on supprime tout ce qui n'est pas numerique afin de garantir un fonctionnement # $Z # correct du '$SOR -n' qui suit... # $Z $DELETE $FiLeTmP_TRIANGLE_OR $Z $MV $FiLeTmP_TRIANGLE_OR.numerique $FiLeTmP_TRIANGLE_OR $Z else $Z endif $Z if (($_____Simplifier == $EXIST) && ($_____Segments == VRAI)) then #20211018082349____:$Z $CA $FiLeTmP_TRIANGLE_OR | \ # #20211018082349____:$Z $SOR -n | \ # #20211018082349____:$Z $UNI -c | \ # #20211018082349____:$Z $R "$K_TAB" "$K_BLANC" | \ # #20211018082349____:$Z $GRE "^ *1 " | \ # #20211018082349____:$Z $AW ' { print $2 " " $3 "\n" $4 " " $5 } ' \ # #20211018082349____:$Z > $FiLeTmP_TRIANGLE_OR.simplifie # $Z $CA $FiLeTmP_TRIANGLE_OR | \ $Z $SOR -n | \ $Z $UNI -c | \ $Z $R "$K_TAB" "$K_BLANC" \ $Z > $FiLeTmP_TRIANGLE_OR.all $Z $CA $FiLeTmP_TRIANGLE_OR.all | \ $Z $GRE "^ *1 " | \ $Z $AW ' { print $2 " " $3 "\n" $4 " " $5 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.simplifie $Z # Ainsi, on supprime les segments qui ne sont pas uniques (via le '$UNI' et le '$GRE') et # $Z # qui appartiennent au meme type de triangle (via le '$SOR'). # $Z # # $Z # On notera le 20211017120617 que c'est ainsi que l'on passe des deux sortes de triangles # $Z # (les "plat"s et les "mince"s) aux deux sortes de losanges (les "plat"s et les "presque # $Z # carres"s)... # $Z $DELETE $FiLeTmP_TRIANGLE_OR $Z $MV $FiLeTmP_TRIANGLE_OR.simplifie $FiLeTmP_TRIANGLE_OR $Z $CA $FiLeTmP_TRIANGLE_OR.all | \ $Z $GRE -v "^ *1 " | \ $Z $AW ' { print $2 " " $3 " " $4 " " $5 } ' | \ $Z $SOR -u | \ $Z $SE -e "s/[$Alpha__A_Z_a_z][$Alpha__A_Z_a_z]*=//g" \ $Z > $FiLeTmP_TRIANGLE_OR.diagonales $Z $CA $FiLeTmP_TRIANGLE_OR.diagonales | \ $Z $AW ' { print $1 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.A$COORD_X $Z $CA $FiLeTmP_TRIANGLE_OR.diagonales | \ $Z $AW ' { print $2 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.A$COORD_Y $Z $CA $FiLeTmP_TRIANGLE_OR.diagonales | \ $Z $AW ' { print $3 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.B$COORD_X $Z $CA $FiLeTmP_TRIANGLE_OR.diagonales | \ $Z $AW ' { print $4 } ' \ $Z > $FiLeTmP_TRIANGLE_OR.B$COORD_Y $Z $xrv/distance.12$X ne=0 \ $Z LISTE_XA=$FiLeTmP_TRIANGLE_OR.A$COORD_X \ $Z LISTE_YA=$FiLeTmP_TRIANGLE_OR.A$COORD_Y \ $Z LISTE_XB=$FiLeTmP_TRIANGLE_OR.B$COORD_X \ $Z LISTE_YB=$FiLeTmP_TRIANGLE_OR.B$COORD_Y \ $Z > $FiLeTmP_TRIANGLE_OR.distances $Z set MiNiMuM=`$CA $FiLeTmP_TRIANGLE_OR.distances | $xrv/extrema.01$X ne=0 fichier== ms=VRAI` $Z set MaXiMuM=`$CA $FiLeTmP_TRIANGLE_OR.distances | $xrv/extrema.01$X ne=0 fichier== Ms=VRAI` $Z set MoYeNnE=`$xcg/MOYE.01$X a=$MiNiMuM b=$MaXiMuM` $Z $xrv/IFLT.11$X ne=0 \ $Z fichier1=$FiLeTmP_TRIANGLE_OR.distances \ $Z fichier2=$MoYeNnE \ $Z formater=VRAI signe="$K_VIDE" \ $Z > $FiLeTmP_TRIANGLE_OR.tri $Z # Il y a deux types de losanges : d'une part les "Carres" (ou "fat") qui ont une grande # $Z # diagonale ('$GrAnDs') et d'autre part les "Minces" (ou "slim") qui ont une petite # $Z # diagonale ('$PeTiTs'). Pour chacun de ces deux types de diagonale, la longueur est a # $Z # peu pres constante. Pour distinguer les deux type de losange, il suffit donc de savoir # $Z # comment chaque diagonale se situe par rapport a la moyenne ('$MoYeNnE')... # $Z set PeTiTs=`$CA $FiLeTmP_TRIANGLE_OR.tri | $GRE "^$EXIST"'$' | $WCl` $Z set GrAnDs=`$CA $FiLeTmP_TRIANGLE_OR.tri | $GRE "^$NEXIST"'$' | $WCl` $Z set RaPpOrT=`$xcg/DIVZ.01$X a=$GrAnDs b=$PeTiTs signe="$K_VIDE" ChiffresFlot=4` #20211018093203____:$Z echo "#GrandsLosanges/#PetitsLosanges=$RaPpOrT" # #20211018114930____:$Z echo "#LosangesCarres/#LosangesMinces=$RaPpOrT" # $Z saut #20211107140002____:$Z echo "#LosangesCarres/#LosangesMinces=$GrAnDs/$PeTiTs=$RaPpOrT" # $Z echo "#LosangesCarres/#LosangesMinces = $GrAnDs/$PeTiTs = $RaPpOrT" $Z saut $Z # Edition introduite le 20211018082349, ce rapport etant approximativement egal au # $Z # nombre d'or... # $Z else $Z endif $Z $CA $FiLeTmP_TRIANGLE_OR | \ $Z $AW ' { print $1 } ' | \ $Z $SE -e "s/^.*=//" \ $Z > $FiLeTmP_TRIANGLE_OR$COORD_X $Z $CA $FiLeTmP_TRIANGLE_OR | \ $Z $AW ' { print $2 } ' | \ $Z $SE -e "s/^.*=//" \ $Z > $FiLeTmP_TRIANGLE_OR$COORD_Y $Z set NpartX=`$CA $FiLeTmP_TRIANGLE_OR$COORD_X | $WCl` $Z set NpartY=`$CA $FiLeTmP_TRIANGLE_OR$COORD_Y | $WCl` $Z set Npart=`$xcg/MIN2.01$X x=$NpartX y=$NpartY` $Z $xci/valeurs_inte$X \ $Z premiere=1 derniere=$Npart \ $Z vD=$NOIR vA=$BLANC \ $Z lineaire=VRAI \ $Z entiers=VRAI \ $Z > $FiLeTmP_TRIANGLE_OR$LUMIN $Z # Generation de la liste des niveaux a utiliser pour acceder a la palette '$_____Palette'... # $Z if ($_____Distord == $EXIST) then $Z # Possibilite introduite le 20120511072309... # #20120511092544____:$Z $_____DistordGen ne=0 \ # #20120511092544____:$Z LISTE_X=$FiLeTmP_TRIANGLE_OR$COORD_X \ # #20120511092544____:$Z LISTE_Y=$FiLeTmP_TRIANGLE_OR$COORD_Y \ # #20120511092544____:$Z LISTE_Z=0 \ # #20120511092544____:$Z $_____DistordArg \ # #20120511092544____:$Z > $FiLeTmP_TRIANGLE_OR$COORD_Z # $Z $Z $xrv/champ_Z.01$X ne=0 \ $Z LISTE_X=$FiLeTmP_TRIANGLE_OR$COORD_X \ $Z LISTE_Y=$FiLeTmP_TRIANGLE_OR$COORD_Y \ $Z A=$_____DistordChamp \ $Z periodiser_X=$_____DistordPeriodX \ $Z periodiser_Y=$_____DistordPeriodY \ $Z > $FiLeTmP_TRIANGLE_OR$COORD_Z $Z # On notera le 20170602091128 que les extrema des coordonnees 'X' et 'Y' sont ceux du # $Z # triangle de base du processus de construction du pavage. Or etant donne, en particulier, # $Z # le rapport de zoom utilise, une grande partie de ce triangle est hors ecran et ce afin de # $Z # presenter un pavage a l'interieur du cadre de l'image donnant l'illusion d'un pavage # $Z # s'etendant a l'infini (hors de l'image)... # $Z # # $Z # En consequence de cela, le champ defini par '$_____DistordChamp' n'est pas superposable # $Z # a l'image en cours de generation, mais est le plus petit champ rectangulaire contenant # $Z # le triangle de base ; il est donc en general plus grand que cette image et possede des # $Z # proportions differentes, ainsi que le montre le shema suivant : # $Z # # $Z # # $Z # ------------------------------------------------------- # $Z # | Champ de * Distorsion | # $Z # | * * | # $Z # | * * | # $Z # | * * | # $Z # | * * | # $Z # | * ----------- * | # $Z # | * | | * | # $Z # | * | | * | # $Z # | * | Image | * | # $Z # | * | | * | # $Z # | * | | * | # $Z # | * ----------- * | # $Z # | * * | # $Z # | * Triangle de Base * | # $Z # |+ + + + + + + + + + + + + + + + + + + + + + + + + + + +| # $Z # ------------------------------------------------------- # $Z # # $Z $Z else $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$_____CoordonneeZ \ $Z > $FiLeTmP_TRIANGLE_OR$COORD_Z $Z # Introduit le 20170605091158 afin que le fichier '$FiLeTmP_TRIANGLE_OR$COORD_Z' existe # $Z # dans tous les cas et donc puisse faire l'objet de '$_____FSavePavage' ci-apres... # $Z endif $Z _____include(_____xiirv/.TROR.11.2._____U) $Z # Introduit sous cette forme le 20170605090224... # $Z if ($_____FSavePavage != $NEXIST) then $Z # Test introduit le 20170605091158... # $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$COORD_X \ $Z > $_____FSavePavage$COORD_X $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$COORD_Y \ $Z > $_____FSavePavage$COORD_Y $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$COORD_Z \ $Z > $_____FSavePavage$COORD_Z $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$ROUGE \ $Z > $_____FSavePavage$ROUGE $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$VERTE \ $Z > $_____FSavePavage$VERTE $Z $xrv/neutre$X ne=$Npart \ $Z fichier=$FiLeTmP_TRIANGLE_OR$BLEUE \ $Z > $_____FSavePavage$BLEUE $Z # Sauvegardes introduites le 20170605091158 afin de permettre ulterieurement une exploitation # $Z # du pavage courant... # $Z else $Z endif $Z FileTmpE FiLeTmP_TRIANGLE_OR