#######################################################################################################################################
# #
# R E F L E X I O N D ' U N T R I A N G L E : #
# #
# #
# Author of '$xiirv/.REFT.11.1.$U' : #
# #
# Jean-Francois Colonna (LACTAMME, 20160722151910). #
# #
#######################################################################################################################################
$Z setParam _____NIterationsT 1
$Z # Parametre introduit le 20160805150744... #
$Z setParam _____FRayon 1.1
$Z # Parametre introduit le 20160809152737 afin de permettre la variation des rayons au cours #
$Z # des iterations et ainsi de choisir la couleur des tetraedres "intermediaires" : #
$Z # #
$Z # $_____FRayon < 1 : meme couleur que le DERNIER, #
$Z # $_____FRayon = 1 : meme couleur que le DERNIER, #
$Z # $_____FRayon > 1 : meme couleur que le PREMIER. #
$Z # #
$Z # La valeur par defaut (>1) est destinee a assurer la compatibilite des coloriages #
$Z # avec 'v $xiirv/$xiirv/.REFT.11.1.$U' (et donc en particulier 'v $xiirv/REFT.12'... #
$Z setParam _____Zoom 1.1
$Z setParam _____DistanceMini 0.010
$Z setParam _____Grossissement 2.0
$Z setParam _____ParticulePara "$K_VIDE"
$Z setParam _____Rouge1 $GRIS_8
$Z # ATTENTION : cette valeur doit etre egale a 'v $xiirv/.CERC.11.1.$U _____Rouge'. #
$Z setParam _____Verte1 $GRIS_4
$Z # ATTENTION : cette valeur doit etre egale a 'v $xiirv/.CERC.11.1.$U _____Verte'. #
$Z setParam _____Bleue1 $GRIS_0
$Z # ATTENTION : cette valeur doit etre egale a 'v $xiirv/.CERC.11.1.$U _____Bleue'. #
$Z setParam _____Rayon1 0.01
$Z setParam _____Rouge2 $GRIS_4
$Z setParam _____Verte2 $GRIS_8
$Z setParam _____Bleue2 $GRIS_0
$Z setParam _____Rayon2 0.01
$Z setParam _____RougeH $GRIS_0
$Z setParam _____VerteH $GRIS_4
$Z setParam _____BleueH $GRIS_8
$Z setParam _____RayonH 0.0075
$Z FilSTmpB FReFlExIoN
$Z FilSTmpB FTrIaNgLe1
#20160722164048____:$Z alias GSoMmEtS 'set SoMmEtS=(\!*) ; \\ #
#20160722164048____:$Z echo "$SoMmEtS[1]" >>! $FTrIaNgLe1$COORD_X ; \\ #
#20160722164048____:$Z echo "$SoMmEtS[2]" >>! $FTrIaNgLe1$COORD_Y ; \\ #
#20160722164048____:$Z unset SoMmEtS' #
$Z alias GSoMmEtS 'set SoMmEtX="\!:1" ; set SoMmEtY="\!:2" ; \\
$Z echo "$SoMmEtX" | \\
$Z $SE -e "s/ */ /g" | \\
$Z $R "$K_BLANC" "$K_NL" > $FTrIaNgLe1$COORD_X ; \\
$Z echo "$SoMmEtY" | \\
$Z $SE -e "s/ */ /g" | \\
$Z $R "$K_BLANC" "$K_NL" > $FTrIaNgLe1$COORD_Y ; \\
$Z unset SoMmEtX SoMmEtY'
$Z # Generation d'un sommet du triangle... #
#20160722164048____:$Z GSoMmEtS $_____Sommet1 #
#20160722164048____:$Z GSoMmEtS $_____Sommet2 #
#20160722164048____:$Z GSoMmEtS $_____Sommet3 #
$Z GSoMmEtS $_____SommetX $_____SommetY
$Z # Definition du triangle 1. #
$Z set NItErAtIoNsR=1
$Z # Parametre introduit le 20160723105510... #
$Z set ArGs_Reflexion="$K_VIDE"
$Z set ArGs_Reflexion="$ArGs_Reflexion"" iterations=$NItErAtIoNsR"
$Z set ArGs_particule="$K_VIDE"
$Z set ArGs_particule="$ArGs_particule"" LISTE_Z=0.5"
$Z set ArGs_particule="$ArGs_particule"" ajuster_points=VRAI equidistance=VRAI"
$Z set ArGs_particule="$ArGs_particule"" distance_minimale=$_____DistanceMini"
$Z set ArGs_particule="$ArGs_particule"" grossissement=$_____Grossissement"
$Z set ArGs_particule="$ArGs_particule"" Lz=1000"
$Z set ArGs_particule="$ArGs_particule"" ZOOM=$_____Zoom"
$Z set ArGs_particule="$ArGs_particule"" N_au_carre=VRAI"
$Z set ArGs_particule="$ArGs_particule"" editer_extrema_hors=FAUX"
$Z set ArGs_particule="$ArGs_particule"" editer_mauvais_encadrement_niveaux_interpoles=FAUX"
$Z set ArGs_particule="$ArGs_particule"" $_____ParticulePara"
$Z set ArGs_particule="$ArGs_particule"" chiffres=0"
$Z @ NItErAtIoNsTp1 = $_____NIterationsT + 1
$Z # Il est imperatif d'ajouter une unite afin de ne pas atteindre le triplet #
$Z # {$_____Rouge2,$_____Verte2,$_____Bleue2} ci-apres... #
$Z set ArGs_Interpolation="$K_VIDE"
$Z set ArGs_Interpolation="$ArGs_Interpolation"" p=1 d=$NItErAtIoNsTp1"
$Z set ArGs_Interpolation="$ArGs_Interpolation"" lineaire=VRAI"
$Z set ArGs_Interpolation="$ArGs_Interpolation"" entiers=VRAI"
$Z set LRouge12=`$xci/valeurs_inte$X vD=$_____Rouge1 vA=$_____Rouge2 $ArGs_Interpolation`
$Z set LVerte12=`$xci/valeurs_inte$X vD=$_____Verte1 vA=$_____Verte2 $ArGs_Interpolation`
$Z set LBleue12=`$xci/valeurs_inte$X vD=$_____Bleue1 vA=$_____Bleue2 $ArGs_Interpolation`
$Z # Introduit le 20160808105720 afin de permettre le changement de couleur du triangle 1... #
$Z set RaYoN1=$_____Rayon1
$Z set RaYoN2=$_____Rayon2
$Z set RaYoNH=$_____RayonH
$Z # Introduit le 20160806093130 afin de permettre leur variation au cours des iterations... #
$Z set NItErAtIoNsT=1
$Z set index=1
$Z while ($NItErAtIoNsT <= $_____NIterationsT)
$Z FilSTmpB FTrIaNgLe2
$Z $xrv/ReflexionTriangle.01$X \
$Z ne=0 \
$Z LISTE_X=$FTrIaNgLe1$COORD_X \
$Z LISTE_Y=$FTrIaNgLe1$COORD_Y \
$Z $ArGs_Reflexion \
$Z pX=1 pY=0 \
$Z > $FTrIaNgLe2$COORD_X
$Z $xrv/ReflexionTriangle.01$X \
$Z ne=0 \
$Z LISTE_X=$FTrIaNgLe1$COORD_X \
$Z LISTE_Y=$FTrIaNgLe1$COORD_Y \
$Z $ArGs_Reflexion \
$Z pX=0 pY=1 \
$Z > $FTrIaNgLe2$COORD_Y
$Z FilSTmpB FTrIaNgLeH
$Z $xrv/mixage_2.11$X \
$Z ne=0 \
$Z fichier1=$FTrIaNgLe1$COORD_X \
$Z fichier2=$FTrIaNgLe2$COORD_X \
$Z > $FTrIaNgLeH$COORD_X
$Z $xrv/mixage_2.11$X \
$Z ne=0 \
$Z fichier1=$FTrIaNgLe1$COORD_Y \
$Z fichier2=$FTrIaNgLe2$COORD_Y \
$Z > $FTrIaNgLeH$COORD_Y
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier=$FTrIaNgLe2$COORD_X \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FTrIaNgLe2.1$COORD_X
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier=$FTrIaNgLe2$COORD_Y \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FTrIaNgLe2.1$COORD_Y
$Z if ($NItErAtIoNsR == 1) then
$Z # Test introduit le 20160723105510... #
$Z set NPoInTsHX=`$CA $FTrIaNgLeH$COORD_X | $WCl`
$Z set NPoInTsHY=`$CA $FTrIaNgLeH$COORD_Y | $WCl`
$Z set NPoInTsH=`$xcg/MIN2.01$X x=$NPoInTsHX y=$NPoInTsHY`
$Z $CA $FTrIaNgLeH$COORD_X \
$Z >>! $FReFlExIoN$COORD_X
$Z $CA $FTrIaNgLeH$COORD_Y \
$Z >>! $FReFlExIoN$COORD_Y
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____RougeH \
$Z >>! $FReFlExIoN$ROUGE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____VerteH \
$Z >>! $FReFlExIoN$VERTE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____BleueH \
$Z >>! $FReFlExIoN$BLEUE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$RaYoNH \
$Z >>! $FReFlExIoN$RAYON
$Z # Generation des hauteurs. #
$Z else
$Z endif
$Z set NPoInTs1X=`$CA $FTrIaNgLe1$COORD_X | $WCl`
$Z set NPoInTs1Y=`$CA $FTrIaNgLe1$COORD_Y | $WCl`
$Z set NPoInTs1=`$xcg/MIN2.01$X x=$NPoInTs1X y=$NPoInTs1Y`
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier=$FTrIaNgLe1$COORD_X \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FTrIaNgLe1.1$COORD_X
$Z $xrv/duplique.01$X \
$Z ne=0 \
$Z fichier=$FTrIaNgLe1$COORD_Y \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=1 \
$Z > $FTrIaNgLe1.1$COORD_Y
$Z set NPoInTs1X=`$CA $FTrIaNgLe1.1$COORD_X | $WCl`
$Z set NPoInTs1Y=`$CA $FTrIaNgLe1.1$COORD_Y | $WCl`
$Z set NPoInTs1=`$xcg/MIN2.01$X x=$NPoInTs1X y=$NPoInTs1Y`
$Z $CA $FTrIaNgLe1.1$COORD_X \
$Z >>! $FReFlExIoN$COORD_X
$Z $CA $FTrIaNgLe1.1$COORD_Y \
$Z >>! $FReFlExIoN$COORD_Y
$Z $xrv/neutre$X \
$Z ne=$NPoInTs1 \
$Z fichier=$LRouge12[$index] \
$Z >>! $FReFlExIoN$ROUGE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs1 \
$Z fichier=$LVerte12[$index] \
$Z >>! $FReFlExIoN$VERTE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs1 \
$Z fichier=$LBleue12[$index] \
$Z >>! $FReFlExIoN$BLEUE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs1 \
$Z fichier=$RaYoN1 \
$Z >>! $FReFlExIoN$RAYON
$Z # Generation du triangle 1. #
$Z set NPoInTs2X=`$CA $FTrIaNgLe2.1$COORD_X | $WCl`
$Z set NPoInTs2Y=`$CA $FTrIaNgLe2.1$COORD_Y | $WCl`
$Z set NPoInTs2=`$xcg/MIN2.01$X x=$NPoInTs2X y=$NPoInTs2Y`
$Z $CA $FTrIaNgLe2.1$COORD_X \
$Z >>! $FReFlExIoN$COORD_X
$Z $CA $FTrIaNgLe2.1$COORD_Y \
$Z >>! $FReFlExIoN$COORD_Y
$Z $xrv/neutre$X \
$Z ne=$NPoInTs2 \
$Z fichier=$_____Rouge2 \
$Z >>! $FReFlExIoN$ROUGE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs2 \
$Z fichier=$_____Verte2 \
$Z >>! $FReFlExIoN$VERTE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs2 \
$Z fichier=$_____Bleue2 \
$Z >>! $FReFlExIoN$BLEUE
$Z $xrv/neutre$X \
$Z ne=$NPoInTs2 \
$Z fichier=$RaYoN2 \
$Z >>! $FReFlExIoN$RAYON
$Z # Generation du triangle 2 (reflexion du triangle 1). #
$Z if ($NItErAtIoNsR == 1) then
$Z $xrv/LIN2.11$X \
$Z ne=0 \
$Z alpha=0.5 \
$Z fichier1=$FTrIaNgLe1$COORD_X \
$Z beta=0.5 \
$Z fichier2=$FTrIaNgLe2$COORD_X \
$Z > $FTrIaNgLeH.1$COORD_X
$Z $xrv/LIN2.11$X \
$Z ne=0 \
$Z alpha=0.5 \
$Z fichier1=$FTrIaNgLe1$COORD_Y \
$Z beta=0.5 \
$Z fichier2=$FTrIaNgLe2$COORD_Y \
$Z > $FTrIaNgLeH.1$COORD_Y
$Z set NPoInTsHX=`$CA $FTrIaNgLeH.1$COORD_X | $WCl`
$Z set NPoInTsHY=`$CA $FTrIaNgLeH.1$COORD_Y | $WCl`
$Z set NPoInTsH=`$xcg/MIN2.01$X x=$NPoInTsHX y=$NPoInTsHY`
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$FTrIaNgLeH.1$COORD_X \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$COORD_X
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$FTrIaNgLeH.1$COORD_Y \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$COORD_Y
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____RougeH \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$ROUGE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____VerteH \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$VERTE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$_____BleueH \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$BLEUE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsH \
$Z fichier=$RaYoNH \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$RAYON
$Z # Generation des pieds des hauteurs (introduite le 20160805120341... #
$Z else
$Z endif
$Z FilSTmpE FTrIaNgLeH
$Z $DELETE $FTrIaNgLe1$COORD_X
$Z $DELETE $FTrIaNgLe1$COORD_Y
$Z $DELETE $FTrIaNgLe1.1$COORD_X
$Z $DELETE $FTrIaNgLe1.1$COORD_Y
$Z $CA $FTrIaNgLe2$COORD_X \
$Z > $FTrIaNgLe1$COORD_X
$Z $CA $FTrIaNgLe2$COORD_Y \
$Z > $FTrIaNgLe1$COORD_Y
$Z FilSTmpE FTrIaNgLe2
$Z set RaYoN1=`$xcg/MUL2.01$X a=$_____FRayon b=$RaYoN1`
$Z set RaYoN2=`$xcg/MUL2.01$X a=$_____FRayon b=$RaYoN2`
$Z set RaYoNH=`$xcg/MUL2.01$X a=$_____FRayon b=$RaYoNH`
$Z # Introduit le 20160809152737 afin de permettre leur variation au cours des iterations et #
$Z # ainsi de choisir la couleur des tetraedres "intermediaires"... #
$Z @ NItErAtIoNsT = $NItErAtIoNsT + 1
$Z @ index = $index + 1
$Z end
$Z if ($_____NIterationsT == 0) then
$Z # Possibilite introduite le 20161004170218 pour permettre le simple trace de polygones... #
$Z set NPoInTsX=`$CA $FTrIaNgLe1$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FTrIaNgLe1$COORD_Y | $WCl`
$Z set NPoInTsR=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$FTrIaNgLe1$COORD_X \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=+1 \
$Z > $FReFlExIoN$COORD_X
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$FTrIaNgLe1$COORD_Y \
$Z exemplaires=2 | \
$Z $xrv/decalage.01$X \
$Z ne=0 \
$Z fichier== \
$Z amplitude_decalage=+1 \
$Z > $FReFlExIoN$COORD_Y
$Z else
$Z endif
$Z set NPoInTsX=`$CA $FReFlExIoN$COORD_X | $WCl`
$Z set NPoInTsY=`$CA $FReFlExIoN$COORD_Y | $WCl`
$Z set NPoInTsR=`$xcg/MIN2.01$X x=$NPoInTsX y=$NPoInTsY`
$Z if ($_____NIterationsT == 0) then
$Z # Possibilite introduite le 20161004170218 pour permettre le simple trace de polygones... #
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$_____Rouge1 \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$ROUGE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$_____Verte1 \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$VERTE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$_____Bleue1 \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$BLEUE
$Z $xrv/neutre$X \
$Z ne=$NPoInTsR \
$Z fichier=$_____Rayon1 \
$Z exemplaires=2 \
$Z >>! $FReFlExIoN$RAYON
$Z else
$Z endif
$Z $xrv/particule.10$X \
$Z npoints=$NPoInTsR \
$Z LISTE_X=$FReFlExIoN$COORD_X \
$Z LISTE_Y=$FReFlExIoN$COORD_Y \
$Z LISTE_ROUGE=$FReFlExIoN$ROUGE \
$Z LISTE_VERTE=$FReFlExIoN$VERTE \
$Z LISTE_BLEUE=$FReFlExIoN$BLEUE \
$Z LISTE_RAYON=$FReFlExIoN$RAYON \
$Z chainer=FAUX isoles=FAUX \
$Z $ArGs_particule \
$Z R=$_____ImageR \
$Z $formatI
$Z FilSTmpE FTrIaNgLe1
$Z FilSTmpE FReFlExIoN