#!/bin/csh
#######################################################################################################################################
# #
# D E F I N I T I O N D ' U N N O E U D N - T R E F L E : #
# #
# #
# Utilisation : #
# #
# $xrs/NoeudTrefle.11$Z <IR> [<FR> [<MinT> [<MaxT> [<PasT> [<Dmin> [<PaA> [<PaB> [<Zo> [<RoX> [<RoY> [<RoZ> [<Ar>]]]]]]]]]]]]] #
# #
# #
# Author of '$xrs/NoeudTrefle.11$Z' : #
# #
# Jean-Francois COLONNA (LACTAMME, 20220515122426). #
# #
#######################################################################################################################################
set ImageR=$1
set FileR=$2
set MinimumT=$3
set MaximumT=$4
set PasT=$5
set Dmin=$6
set ParamA=$7
set ParamB=$8
set Zoom=$9
set RotX=$10
set RotY=$11
set RotZ=$12
set Arguments=$13
# Parametre introduit le 20220623122753 pour, par exemple, redefinir "PARAMETRE_R1=" et/ou #
# "PARAMETRE_R2="... #
setArgum FileR "$K_VIDE"
setArgum MinimumT 0.25
setArgum MaximumT 10.00
setArgum PasT 0.01
setArgum Dmin 0.006
setArgum ParamA +3
setArgum ParamB -2
setArgum Zoom 1
setArgum RotX 0
setArgum RotY 0
setArgum RotZ 0
setArgum Arguments "$K_VIDE"
FilSTmpB FNoEuD_2
$xrs/NoeudTrefle.11$X \
np=1 \
Aduv=$ParamA Bduv=$ParamB \
mt=$MinimumT Mt=$MaximumT pas_t=$PasT \
ZOOM=$Zoom \
ROTATION_OX=$RotX ROTATION_OY=$RotY ROTATION_OZ=$RotZ \
lister_les_points=VRAI lister_les_points_apres=VRAI \
editer_extrema_hors=FAUX \
$Arguments \
R=$ImageR.2 chiffres=0 \
$formatI \
>> $FNoEuD_2
# Generation du noeud de trefle... #
# #
# Le 20220623122753 fut introduit "editer_extrema_hors=FAUX" rendu necessaire si, par #
# exemple, on introduit : #
# #
# PARAMETRE_R1=1 #
# PARAMETRE_R2=0.5 [=0.25 par defaut] #
# #
$CA $FNoEuD_2 | \
$AW ' { print $3 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD_2$COORD_X
$CA $FNoEuD_2 | \
$AW ' { print $4 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD_2$COORD_Y
$CA $FNoEuD_2 | \
$AW ' { print $5 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD_2$COORD_Z
# Definition des coordonnees {X,Y,Z} d'une partie ("Troncon2") du noeud de trefle... #
set MiNiMuM_X=`$CA $FNoEuD_2$COORD_X | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
set MiNiMuM_Y=`$CA $FNoEuD_2$COORD_Y | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
set MiNiMuM_Z=`$CA $FNoEuD_2$COORD_Z | $xrv/extrema.01$X ne=0 fichier== minimum_seul=VRAI`
set MaXiMuM_X=`$CA $FNoEuD_2$COORD_X | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`
set MaXiMuM_Y=`$CA $FNoEuD_2$COORD_Y | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`
set MaXiMuM_Z=`$CA $FNoEuD_2$COORD_Z | $xrv/extrema.01$X ne=0 fichier== maximum_seul=VRAI`
set OrIgInE___X=`$CA $FNoEuD_2$COORD_X | $HEA -2`
set OrIgInE___Y=`$CA $FNoEuD_2$COORD_Y | $HEA -2`
set OrIgInE___Z=`$CA $FNoEuD_2$COORD_Z | $HEA -2`
set ExTrEmItE_X=`$CA $FNoEuD_2$COORD_X | $TAI -2`
set ExTrEmItE_Y=`$CA $FNoEuD_2$COORD_Y | $TAI -2`
set ExTrEmItE_Z=`$CA $FNoEuD_2$COORD_Z | $TAI -2`
set CoIn1_____X=$MaXiMuM_X
set CoIn1_____Y=$MiNiMuM_Y
set CoIn1_____Z=$MiNiMuM_Z
# Definition du point de depart ("Coin1") du noeud de trefle "ouvert"... #
set CoIn2_____X=$MiNiMuM_X
set CoIn2_____Y=$MiNiMuM_Y
set CoIn2_____Z=$MiNiMuM_Z
# Definition du point d'arrivee ("Coin2") du noeud de trefle "ouvert"... #
FilSTmpB FNoEuD_11
echo "$CoIn1_____X""\n""$OrIgInE___X[1]" \
> $FNoEuD_11$COORD_X
echo "$CoIn1_____Y""\n""$OrIgInE___Y[1]" \
> $FNoEuD_11$COORD_Y
echo "$CoIn1_____Z""\n""$OrIgInE___Z[1]" \
> $FNoEuD_11$COORD_Z
echo `calcul ($OrIgInE___X[1])-($CoIn1_____X)`"\n"`calcul ($OrIgInE___X[2])-($OrIgInE___X[1])` \
> $FNoEuD_11.d$COORD_X
echo `calcul ($OrIgInE___Y[1])-($CoIn1_____Y)`"\n"`calcul ($OrIgInE___Y[2])-($OrIgInE___Y[1])` \
> $FNoEuD_11.d$COORD_Y
echo `calcul ($OrIgInE___Z[1])-($CoIn1_____Z)`"\n"`calcul ($OrIgInE___Z[2])-($OrIgInE___Z[1])` \
> $FNoEuD_11.d$COORD_Z
# Definition des coordonnees {X,Y,Z} d'une partie ("Troncon1") du noeud de trefle... #
FilSTmpB FNoEuD_31
echo "$ExTrEmItE_X[2]""\n""$CoIn2_____X" \
> $FNoEuD_31$COORD_X
echo "$ExTrEmItE_Y[2]""\n""$CoIn2_____Y" \
> $FNoEuD_31$COORD_Y
echo "$ExTrEmItE_Z[2]""\n""$CoIn2_____Z" \
> $FNoEuD_31$COORD_Z
echo `calcul ($ExTrEmItE_X[2])-($ExTrEmItE_X[1])`"\n"`calcul ($CoIn2_____X)-($ExTrEmItE_X[2])` \
> $FNoEuD_31.d$COORD_X
echo `calcul ($ExTrEmItE_Y[2])-($ExTrEmItE_Y[1])`"\n"`calcul ($CoIn2_____Y)-($ExTrEmItE_Y[2])` \
> $FNoEuD_31.d$COORD_Y
echo `calcul ($ExTrEmItE_Z[2])-($ExTrEmItE_Z[1])`"\n"`calcul ($CoIn2_____Z)-($ExTrEmItE_Z[2])` \
> $FNoEuD_31.d$COORD_Z
# Definition des coordonnees {X,Y,Z} d'une partie ("Troncon3") du noeud de trefle... #
set ArGuMeNtS="$K_VIDE"
set ArGuMeNtS="$ArGuMeNtS"" coordonnees_dans_0_1=FAUX AXYZ=1 BXYZ=0"
set ArGuMeNtS="$ArGuMeNtS"" AdXYZ=1"
set ArGuMeNtS="$ArGuMeNtS"" isoles=FAUX chainer=VRAI"
set ArGuMeNtS="$ArGuMeNtS"" ajuster_points=VRAI equidistance=VRAI dm=$Dmin"
set ArGuMeNtS="$ArGuMeNtS"" ZOOM=1"
set ArGuMeNtS="$ArGuMeNtS"" ROTATION_OX=0 ROTATION_OY=0 ROTATION_OZ=0"
set ArGuMeNtS="$ArGuMeNtS"" lister_les_points=VRAI lister_les_points_apres=VRAI"
set ArGuMeNtS="$ArGuMeNtS"" extrema_hors=FAUX"
FilSTmpB FNoEuD_12
$xrv/particule.10$X \
np=1 iterations=2 \
LISTE_X=$FNoEuD_11$COORD_X LISTE_Y=$FNoEuD_11$COORD_Y LISTE_Z=$FNoEuD_11$COORD_Z \
cubique=VRAI \
LISTE_dX=$FNoEuD_11.d$COORD_X LISTE_dY=$FNoEuD_11.d$COORD_Y LISTE_dZ=$FNoEuD_11.d$COORD_Z \
$ArGuMeNtS \
R=$ImageR.1 chiffres=0 \
$formatI \
>> $FNoEuD_12
# Interpolation des coordonnees {X,Y,Z} d'une partie ("Troncon1") du noeud de trefle... #
FilSTmpB FNoEuD_32
$xrv/particule.10$X \
np=1 iterations=2 \
LISTE_X=$FNoEuD_31$COORD_X LISTE_Y=$FNoEuD_31$COORD_Y LISTE_Z=$FNoEuD_31$COORD_Z \
cubique=VRAI \
LISTE_dX=$FNoEuD_31.d$COORD_X LISTE_dY=$FNoEuD_31.d$COORD_Y LISTE_dZ=$FNoEuD_31.d$COORD_Z \
$ArGuMeNtS \
R=$ImageR.3 chiffres=0 \
$formatI \
>> $FNoEuD_32
# Interpolation des coordonnees {X,Y,Z} d'une partie ("Troncon3") du noeud de trefle... #
FilSTmpB FNoEuD
$CA $FNoEuD_12 $FNoEuD_2 $FNoEuD_32 \
>> $FNoEuD
# Concatenation des trois morceaux {"Troncon1","Troncon2","Troncon3"} du noeud de trefle #
# "ouvert"... #
$CA $FNoEuD | \
$AW ' { print $3 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD$COORD_X
$CA $FNoEuD | \
$AW ' { print $4 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD$COORD_Y
$CA $FNoEuD | \
$AW ' { print $5 } ' | \
$SE -e "s/^.*=//" \
> $FNoEuD$COORD_Z
set NPoInTs_X=`$CA $FNoEuD$COORD_X | $WCl`
set NPoInTs_Y=`$CA $FNoEuD$COORD_Y | $WCl`
set NPoInTs_Z=`$CA $FNoEuD$COORD_Z | $WCl`
set NPoInTs=`$xcg/MIN3.01$X x=$NPoInTs_X y=$NPoInTs_Y z=$NPoInTs_Z`
$xci/valeurs_inte$X \
premiere=1 derniere=$NPoInTs \
vD=$NOIR_PLANCHER vA=$BLANC \
lineaire=VRAI \
entiers=VRAI \
> $FNoEuD$LUMIN
set PaLeTtE=$xiP/cercle.66
$xrv/particule.10$X \
np=1 iterations=$NPoInTs \
LISTE_X=$FNoEuD$COORD_X LISTE_Y=$FNoEuD$COORD_Y LISTE_Z=$FNoEuD$COORD_Z \
isoles=VRAI chainer=FAUX \
LISTE_NIVEAU=$FNoEuD$LUMIN \
paletteA=$PaLeTtE \
ajuster_points=VRAI equidistance=VRAI \
ZOOM=1.0 \
extrema_hors=FAUX \
R=$ImageR chiffres=0 \
$formatI
# Generation des coordonnees {X,Y,Z} du noeud de trefle "ouvert"... #
if ("$FileR" != "$K_VIDE") then
set NoRmAlIsE=$xrv/neutre$X
set NoRmAlIsE=$xrv/normalise.01$X
set PaSsEs=50000
set SaUt=20
# Parametres de lissage, operation destinee a ameliorer la continuite des tangentes au #
# au niveau des raccords entre les trois troncons... #
$CA $FNoEuD$COORD_X | \
$xrv/lissage.01$X ne=0 \
fichier== \
passes=$PaSsEs \
tete=$SaUt queue=$SaUt | \
$xrv/AXPB.01$X ne=0 \
fichier== \
a=-1 b=+1 | \
$NoRmAlIsE ne=0 \
fichier== \
> $FileR$COORD_Z
# On notera la permutation des coordonnees 'X' et 'Z' afin d'assurer la compatibilite de #
# comportement avec 'v $xiirv/PEAN.71', ainsi que l'inversions de la coordonnee 'Z'... #
$CA $FNoEuD$COORD_Y | \
$xrv/lissage.01$X ne=0 \
fichier== \
passes=$PaSsEs \
tete=$SaUt queue=$SaUt | \
$NoRmAlIsE ne=0 \
fichier== \
> $FileR$COORD_Y
$CA $FNoEuD$COORD_Z | \
$xrv/lissage.01$X ne=0 \
fichier== \
passes=$PaSsEs \
tete=$SaUt queue=$SaUt | \
$NoRmAlIsE ne=0 \
fichier== \
> $FileR$COORD_X
# On notera la permutation des coordonnees 'X' et 'Z' afin d'assurer la compatibilite de #
# comportement avec 'v $xiirv/PEAN.71', ainsi que l'inversions de la coordonnee 'Z'... #
else
endif
FilSTmpE FNoEuD
FilSTmpE FNoEuD_32
FilSTmpE FNoEuD_12
FilSTmpE FNoEuD_31
FilSTmpE FNoEuD_11
FilSTmpE FNoEuD_2