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