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