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



Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.