#######################################################################################################################################
# #
# 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
Copyright © Jean-François COLONNA, 2019-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2019-2024.