####################################################################################################################################### # # # R E F L E X I O N D ' U N T E T R A E D R E ( O U P Y R A M I D E ) : # # # # # # Author of '$xiirv/.REFP.11.1.$U' : # # # # Jean-Francois COLONNA (LACTAMME, 20160724102323). # # # ####################################################################################################################################### $Z setParam _____NIterationsP 1 $Z # Parametre introduit le 20160805160433... # $Z setParam _____FRayon 1.1 $Z # Parametre introduit le 20160806094124 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 _____RotationX `GetParam $xrv/particule.10$X ROTATION_OX` $Z setParam _____RotationY `GetParam $xrv/particule.10$X ROTATION_OY` $Z setParam _____RotationZ `GetParam $xrv/particule.10$X ROTATION_OZ` $Z setParam _____Zoom 1.1 $Z setParam _____DistanceMini 0.010 $Z setParam _____Grossissement 2.0 $Z setParam _____DepthCueing 0.4 $Z # Parametre introduit le 20160801100046... # $Z setParam _____ParticulePara "$K_VIDE" $Z setParam _____Rouge1 $GRIS_8 $Z setParam _____Verte1 $GRIS_4 $Z setParam _____Bleue1 $GRIS_0 $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 if ( (`$xcg/IFGE.01$X n1=$_____RayonH n2=$_____Rayon1` == $EXIST) \ $Z || (`$xcg/IFGE.01$X n1=$_____RayonH n2=$_____Rayon2` == $EXIST) \ $Z ) then $Z EROR "Le rayon des hauteurs doit etre inferieur a celui des tetraedres." $Z # En effet, il faut que : # $Z # # $Z # $_____RayonH < $_____Rayon1 # $Z # $_____RayonH < $_____Rayon2 # $Z # # $Z # afin qu'aucun sommet de tetraedre n'apparaisse avec la couleur des hauteurs... # $Z else $Z endif $Z FilSTmpB FReFlExIoN $Z FilSTmpB FTeTrAeDrE1 $Z alias GSoMmEtS 'set SoMmEtX="\!:1" ; set SoMmEtY="\!:2" ; set SoMmEtZ="\!:3" ; \\ $Z echo "$SoMmEtX" | \\ $Z $SE -e "s/ */ /g" | \\ $Z $R "$K_BLANC" "$K_NL" > $FTeTrAeDrE1$COORD_X ; \\ $Z echo "$SoMmEtY" | \\ $Z $SE -e "s/ */ /g" | \\ $Z $R "$K_BLANC" "$K_NL" > $FTeTrAeDrE1$COORD_Y ; \\ $Z echo "$SoMmEtZ" | \\ $Z $SE -e "s/ */ /g" | \\ $Z $R "$K_BLANC" "$K_NL" > $FTeTrAeDrE1$COORD_Z ; \\ $Z unset SoMmEtX SoMmEtY SoMmEtZ' $Z # Generation d'un sommet du tetraedre... # $Z GSoMmEtS $_____SommetX $_____SommetY $_____SommetZ $Z # Definition du tetraedre 1. # $Z set NItErAtIoNsR=1 $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"" 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"" ROTATION_OX=$_____RotationX" $Z set ArGs_particule="$ArGs_particule"" ROTATION_OY=$_____RotationY" $Z set ArGs_particule="$ArGs_particule"" ROTATION_OZ=$_____RotationZ" $Z set ArGs_particule="$ArGs_particule"" ZOOM=$_____Zoom" $Z set ArGs_particule="$ArGs_particule"" Zminimum=$_____DepthCueing ZminimumT=$_____DepthCueing" $Z set ArGs_particule="$ArGs_particule"" Zmaximum=1 ZmaximumT=1" $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 @ NItErAtIoNsPp1 = $_____NIterationsP + 1 $Z set ArGs_Interpolation="$K_VIDE" $Z set ArGs_Interpolation="$ArGs_Interpolation"" p=1 d=$NItErAtIoNsPp1" $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 20160808094717 afin de permettre le changement de couleur du tetraedre 1... # $Z set RaYoN1=$_____Rayon1 $Z set RaYoN2=$_____Rayon2 $Z set RaYoNH=$_____RayonH $Z # Introduit le 20160806082116 afin de permettre leur variation au cours des iterations... # $Z set NItErAtIoNsP=1 $Z set index=1 $Z while ($NItErAtIoNsP <= $_____NIterationsP) $Z FilSTmpB FTeTrAeDrE2 $Z $xrv/ReflexionTetraedre.01$X \ $Z ne=0 \ $Z LISTE_X=$FTeTrAeDrE1$COORD_X \ $Z LISTE_Y=$FTeTrAeDrE1$COORD_Y \ $Z LISTE_Z=$FTeTrAeDrE1$COORD_Z \ $Z $ArGs_Reflexion \ $Z pX=1 pY=0 pZ=0 \ $Z > $FTeTrAeDrE2$COORD_X $Z $xrv/ReflexionTetraedre.01$X \ $Z ne=0 \ $Z LISTE_X=$FTeTrAeDrE1$COORD_X \ $Z LISTE_Y=$FTeTrAeDrE1$COORD_Y \ $Z LISTE_Z=$FTeTrAeDrE1$COORD_Z \ $Z $ArGs_Reflexion \ $Z pX=0 pY=1 pZ=0 \ $Z > $FTeTrAeDrE2$COORD_Y $Z $xrv/ReflexionTetraedre.01$X \ $Z ne=0 \ $Z LISTE_X=$FTeTrAeDrE1$COORD_X \ $Z LISTE_Y=$FTeTrAeDrE1$COORD_Y \ $Z LISTE_Z=$FTeTrAeDrE1$COORD_Z \ $Z $ArGs_Reflexion \ $Z pX=0 pY=0 pZ=1 \ $Z > $FTeTrAeDrE2$COORD_Z $Z FilSTmpB FTeTrAeDrEH $Z set ArGs_Hauteur="$K_VIDE" $Z set ArGs_Hauteur="$ArGs_Hauteur"" nombre_points=1" $Z set ArGs_Hauteur="$ArGs_Hauteur"" pas=2" $Z set ArGs_Hauteur="$ArGs_Hauteur"" dupliquer=VRAI" $Z # Le marquage du "pied" des hauteurs a ete introduit le 20160802105938... # $Z $xrv/mixage_2.11$X \ $Z ne=0 \ $Z fichier1=$FTeTrAeDrE1$COORD_X \ $Z fichier2=$FTeTrAeDrE2$COORD_X | \ $Z $xrv/decoupage.01$X \ $Z ne=0 \ $Z fichier== \ $Z $ArGs_Hauteur \ $Z > $FTeTrAeDrEH$COORD_X $Z $xrv/mixage_2.11$X \ $Z ne=0 \ $Z fichier1=$FTeTrAeDrE1$COORD_Y \ $Z fichier2=$FTeTrAeDrE2$COORD_Y | \ $Z $xrv/decoupage.01$X \ $Z ne=0 \ $Z fichier== \ $Z $ArGs_Hauteur \ $Z > $FTeTrAeDrEH$COORD_Y $Z $xrv/mixage_2.11$X \ $Z ne=0 \ $Z fichier1=$FTeTrAeDrE1$COORD_Z \ $Z fichier2=$FTeTrAeDrE2$COORD_Z | \ $Z $xrv/decoupage.01$X \ $Z ne=0 \ $Z fichier== \ $Z $ArGs_Hauteur \ $Z > $FTeTrAeDrEH$COORD_Z $Z if ($NItErAtIoNsR == 1) then $Z set NPoInTsHX=`$CA $FTeTrAeDrEH$COORD_X | $WCl` $Z set NPoInTsHY=`$CA $FTeTrAeDrEH$COORD_Y | $WCl` $Z set NPoInTsHZ=`$CA $FTeTrAeDrEH$COORD_Z | $WCl` #20220615104244____:$Z set NPoInTsH=`$xcg/MAX3.01$X x=$NPoInTsHX y=$NPoInTsHY z=$NPoInTsHZ` # $Z set NPoInTsH=`$xcg/MIN3.01$X x=$NPoInTsHX y=$NPoInTsHY z=$NPoInTsHZ` $Z $CA $FTeTrAeDrEH$COORD_X \ $Z >>! $FReFlExIoN$COORD_X $Z $CA $FTeTrAeDrEH$COORD_Y \ $Z >>! $FReFlExIoN$COORD_Y $Z $CA $FTeTrAeDrEH$COORD_Z \ $Z >>! $FReFlExIoN$COORD_Z $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 FilSTmpE FTeTrAeDrEH $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE2$COORD_X \ $Z > $FTeTrAeDrE2.1$COORD_X $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE2$COORD_Y \ $Z > $FTeTrAeDrE2.1$COORD_Y $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE2$COORD_Z \ $Z > $FTeTrAeDrE2.1$COORD_Z $Z # Generation des aretes du tetraedre 2 : # $Z # # $Z # PQ # $Z # PR QR # $Z # PS QS RS # $Z # # $Z set NPoInTsX=`$CA $FTeTrAeDrE2.1$COORD_X | $WCl` $Z set NPoInTsY=`$CA $FTeTrAeDrE2.1$COORD_Y | $WCl` $Z set NPoInTsZ=`$CA $FTeTrAeDrE2.1$COORD_Z | $WCl` #20220615104244____:$Z set NPoInTs2=`$xcg/MAX3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` # $Z set NPoInTs2=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` $Z $CA $FTeTrAeDrE2.1$COORD_X \ $Z >>! $FReFlExIoN$COORD_X $Z $CA $FTeTrAeDrE2.1$COORD_Y \ $Z >>! $FReFlExIoN$COORD_Y $Z $CA $FTeTrAeDrE2.1$COORD_Z \ $Z >>! $FReFlExIoN$COORD_Z $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 tetraedre 2 (reflexion du tetraedre 1). # $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE1$COORD_X \ $Z > $FTeTrAeDrE1.1$COORD_X $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE1$COORD_Y \ $Z > $FTeTrAeDrE1.1$COORD_Y $Z $xrv/deux_a_deux.01$X \ $Z ne=0 \ $Z fichier=$FTeTrAeDrE1$COORD_Z \ $Z > $FTeTrAeDrE1.1$COORD_Z $Z # Generation des aretes du tetraedre 1 : # $Z # # $Z # PQ # $Z # PR QR # $Z # PS QS RS # $Z # # $Z set NPoInTsX=`$CA $FTeTrAeDrE1.1$COORD_X | $WCl` $Z set NPoInTsY=`$CA $FTeTrAeDrE1.1$COORD_Y | $WCl` $Z set NPoInTsZ=`$CA $FTeTrAeDrE1.1$COORD_Z | $WCl` #20220615104244____:$Z set NPoInTs2=`$xcg/MAX3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` # $Z set NPoInTs2=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` $Z $CA $FTeTrAeDrE1.1$COORD_X \ $Z >>! $FReFlExIoN$COORD_X $Z $CA $FTeTrAeDrE1.1$COORD_Y \ $Z >>! $FReFlExIoN$COORD_Y $Z $CA $FTeTrAeDrE1.1$COORD_Z \ $Z >>! $FReFlExIoN$COORD_Z $Z $xrv/neutre$X \ $Z ne=$NPoInTs2 \ $Z fichier=$LRouge12[$index] \ $Z >>! $FReFlExIoN$ROUGE $Z $xrv/neutre$X \ $Z ne=$NPoInTs2 \ $Z fichier=$LVerte12[$index] \ $Z >>! $FReFlExIoN$VERTE $Z $xrv/neutre$X \ $Z ne=$NPoInTs2 \ $Z fichier=$LBleue12[$index] \ $Z >>! $FReFlExIoN$BLEUE $Z $xrv/neutre$X \ $Z ne=$NPoInTs2 \ $Z fichier=$RaYoN1 \ $Z >>! $FReFlExIoN$RAYON $Z # Generation du tetraedre 1. # $Z $DELETE $FTeTrAeDrE1$COORD_X $Z $DELETE $FTeTrAeDrE1$COORD_Y $Z $DELETE $FTeTrAeDrE1$COORD_Z $Z $DELETE $FTeTrAeDrE1.1$COORD_X $Z $DELETE $FTeTrAeDrE1.1$COORD_Y $Z $DELETE $FTeTrAeDrE1.1$COORD_Z $Z $CA $FTeTrAeDrE2$COORD_X \ $Z > $FTeTrAeDrE1$COORD_X $Z $CA $FTeTrAeDrE2$COORD_Y \ $Z > $FTeTrAeDrE1$COORD_Y $Z $CA $FTeTrAeDrE2$COORD_Z \ $Z > $FTeTrAeDrE1$COORD_Z $Z FilSTmpE FTeTrAeDrE2 $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 20160806094124 afin de permettre leur variation au cours des iterations et # $Z # ainsi de choisir la couleur des tetraedres "intermediaires"... # $Z @ NItErAtIoNsP = $NItErAtIoNsP + 1 $Z @ index = $index + 1 $Z end $Z if ($_____NIterationsP == 0) then $Z # Possibilite introduite le 20161005074414 pour permettre le simple trace de polyedres... # $Z set NPoInTsX=`$CA $FTeTrAeDrE1$COORD_X | $WCl` $Z set NPoInTsY=`$CA $FTeTrAeDrE1$COORD_Y | $WCl` $Z set NPoInTsZ=`$CA $FTeTrAeDrE1$COORD_Z | $WCl` $Z set NPoInTsR=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` $Z $xrv/deux_a_deux.01$X \ $Z ne=$NPoInTsR \ $Z fichier=$FTeTrAeDrE1$COORD_X \ $Z > $FReFlExIoN$COORD_X $Z $xrv/deux_a_deux.01$X \ $Z ne=$NPoInTsR \ $Z fichier=$FTeTrAeDrE1$COORD_Y \ $Z > $FReFlExIoN$COORD_Y $Z $xrv/deux_a_deux.01$X \ $Z ne=$NPoInTsR \ $Z fichier=$FTeTrAeDrE1$COORD_Z \ $Z > $FReFlExIoN$COORD_Z $Z else $Z endif $Z set NPoInTsX=`$CA $FReFlExIoN$COORD_X | $WCl` $Z set NPoInTsY=`$CA $FReFlExIoN$COORD_Y | $WCl` $Z set NPoInTsZ=`$CA $FReFlExIoN$COORD_Z | $WCl` #20220615104244____:$Z set NPoInTsR=`$xcg/MAX3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` # $Z set NPoInTsR=`$xcg/MIN3.01$X x=$NPoInTsX y=$NPoInTsY z=$NPoInTsZ` $Z if ($_____NIterationsP == 0) then $Z # Possibilite introduite le 20161005074414 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_Z=$FReFlExIoN$COORD_Z \ $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 FTeTrAeDrE1 $Z FilSTmpE FReFlExIoN