#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         V I S U A L I S A T I O N   B I D I M E N S I O N N E L L E                                                                 #
#         D ' U N   P O I N T   N - D I M E N S I O N N E L  :                                                                        #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xrv/pt_ND_2D.11$Z  [<PointA>] [<imageR>] [<Interpolation>] [<Mapping>] [<RayonA>]                                #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xrv/pt_ND_2D.11$Z' :                                                                                            #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

GetArg    PointA=$xT/PointA                                                                                                             \
          imageR=$xT/imageR                                                                                                             \
          Interpolation=0.0                                                                                                             \
          Mapping=FAUX                                                                                                                  \
          RayonA=0.01125
                                        # Interpolation   : facteur de passage de la representation etoilee ou centree (0) a une      #
                                        #                   representation polygonale (1) du referentiel de l'espace a N dimensions.  #
                                        #                                                                                             #
                                        # Mapping         : afin de faire eventuellement un mapping de ]-infini,+infini[ --> ]-1,+1[. #
                                        #                                                                                             #
                                        # RayonA          : definition de la taille des spheres materialisant les axes (ATTENTION,    #
                                        #                   avant le 19971113103239, la valeur 0.030 etait utilisee).                 #

if        (-e $PointA) then
          set       NPoints=50
                                        # Nombre de points sur une chaine de connexion.                                               #

          source    $xrv/map_ND_2D.11$Y
                                        # Definition de la representation des axes.                                                   #
          set       Zaxes=0.0
                                        # Definition de la troisieme dimension des axes.                                              #

          set       RayonP=0.01500
                                        # Rayon des boules de materialisation des points (ATTENTION, avant le 19971113103239, la      #
                                        # valeur 0.040 etait utilisee).                                                               #

          FileTmpB  nomT1
          FileTmpB  nomT2
          FileTmpB  nomT3
          FileTmpB  nomT4

          FileTmpB  nomTX
          FileTmpB  nomTY
          FileTmpB  nomTZ
          FileTmpB  nomTR
          FileTmpB  nomTV
          FileTmpB  nomTB
          FileTmpB  nomTr

          FileTmpB  nomTI
          set       nomTI=`echo "$nomTI" | $SE -e 's+^\(.*/\)[^/]*\(.......\)$+\1\2+'`
                                        # Creation de noms temporaires (dont un nom bref '$nomTI' afin d'eviter des problemes avec    #
                                        # '$LONGUEUR_NOMS' dans '$xci/acces$X').                                                      #

          set       Dimension=`$WC $PointA`

          if        ($Dimension[$WC1] != $Dimension[$WC2]) then
                    EROR      "Le fichier '$PointA' contient plus d'une coordonnee par ligne."
          else
          endif

          set       Dimension=$Dimension[$WC1]
                                        # Dimension de l'espace auquel appartient le point Argument.                                  #
          set       Module=`$xrv/extrema.01$X ne=$Dimension fichier=$PointA |& $GRE "^module *=" | $SE -e 's/^.*\([-+].*\)$/\1/'`
                                        # Valeur absolue de la plus grande coordonnee.                                                #

          set       ExtensionA=`$xcg/MUL2.01$X nombre_1=$FExtensionA nombre_2=$Module`
                                        # Definition des axes de coordonnees.                                                         #

          repeat    $Dimension          echo "$ExtensionA"                                                                              \
                                                                                                                        >   $nomT1
                                        # Generation d'un point auxiliaire destine a definir la representation des axes               #
                                        # N-dimensionnels dans le plan {X,Y}.                                                         #

          $xrv/map_ND_2D.11$X           nd=$Dimension fichier=$nomT1 echelle=-1                                                         \
                                                            |& $SE      -f $xrv/supATTENTION$sed                                        \
                                                                        -e "s/^axe=[0-9]*  *//"                                         \
                                                            |  $R       "$K_BLANC" "$K_NL"                                              \
                                                                                                                        >   $nomT2
                                        # Generation des extremites negatives ("echelle=-1") de la representation des axes.           #
          $xrv/map_ND_2D.11$X           nd=$Dimension fichier=$nomT1 echelle=+1                                                         \
                                                            |& $SE      -f $xrv/supATTENTION$sed                                        \
                                                                        -e "s/^axe=[0-9]*  *//"                                         \
                                                            |  $R       "$K_BLANC" "$K_NL"                                              \
                                                                                                                        >   $nomT3
                                        # Generation des extremites positives ("echelle=+1") de la representation des axes.           #

          @         DimensionD = $Dimension * 2

          $PAST                         $nomT2 $nomT3                                                                                   \
                                                            |  $R       "$K_TAB" "$K_NL"                                                \
                                                                                                                        >   $nomT4
                                        # Generation des couples d'extremites {negatives,positives} de la representation des axes.    #

          $CA                           $nomT4                                                                                          \
                                                            |  $GRE     "^[Xx]"                                                         \
                                                            |  $SE      -e "s/^[^=][^=]*=//"                                            \
                                                                                                                        >   $nomTX
          $CA                           $nomT4                                                                                          \
                                                            |  $GRE     "^[Yy]"                                                         \
                                                            |  $SE      -e "s/^[^=][^=]*=//"                                            \
                                                                                                                        >   $nomTY

          repeat    $DimensionD         echo "$Zaxes"                                                                                   \
                                                                                                                        >   $nomTZ
                                        # Definition en {X,Y,Z} de la representation bidimensionnelle des axes N-dimensionnels.       #

          repeat    $Dimension          echo "$RaxesN""\n""$RaxesP"                                                                     \
                                                                                                                        >   $nomTR
          repeat    $Dimension          echo "$VaxesN""\n""$VaxesP"                                                                     \
                                                                                                                        >   $nomTV
          repeat    $Dimension          echo "$BaxesN""\n""$BaxesP"                                                                     \
                                                                                                                        >   $nomTB
          repeat    $DimensionD         echo "$RayonA"                                                                                  \
                                                                                                                        >   $nomTr
                                        # Definition de l'apparence visuelle des axes.                                                #

          $DELETE   $nomT1
          $DELETE   $nomT2
          $DELETE   $nomT3
          $DELETE   $nomT4

          $xrv/map_ND_2D.11$X           nd=$Dimension fichier=$PointA echelle=+1                                                        \
                                                            |& $SE      -f $xrv/supATTENTION$sed                                        \
                                                                        -e "s/^axe=[0-9]*  *//"                                         \
                                                            |  $R       "$K_BLANC" "$K_NL"                                              \
                                                                                                                        >   $nomT3
                                        # Generation de la representation bidimensionnelle du point Argument.                         #

          set       Zpoint=$Zaxes
          set       Rpoint=$GRIS_8
          set       Vpoint=$GRIS_8
          set       Bpoint=$GRIS_8
                                        # Definition de la couleur du point ainsi que de sa troisieme dimension.                      #

          $PAST                         $nomT3 $nomT3                                                                                   \
                                                            |  $R       "$K_TAB" "$K_NL"                                                \
                                                                                                                        >   $nomT4
                                        # Duplication de chaque point bidimensionnel.                                                 #

          $DELETE   $nomT1
          $DELETE   $nomT2

          $CA                           $nomT4                                                                                          \
                                                            |  $GRE     "^[Xx]"                                                         \
                                                            |  $SE      -e "s/^[^=][^=]*=//"                                            \
                                                                                                                        >   $nomT1
          $CA                           $nomT4                                                                                          \
                                                            |  $GRE     "^[Yy]"                                                         \
                                                            |  $SE      -e "s/^[^=][^=]*=//"                                            \
                                                                                                                        >   $nomT2

          decaleC                       $nomT1    1
          decaleC                       $nomT2    1
                                        # Cette operation de decalage circulaire est destinee a former une chaine avec les            #
                                        # '$Dimension' points bidimensionnels visualisant le point Argument.                          #

          $CA                           $nomT1                                                                                          \
                                                                                                                        >>! $nomTX
          $CA                           $nomT2                                                                                          \
                                                                                                                        >>! $nomTY

          repeat    $DimensionD         echo "$Zpoint"                                                                                  \
                                                                                                                        >>! $nomTZ
                                        # Definition en {X,Y,Z} de la representation bidimensionnelle du point Argument.              #

          repeat    $DimensionD         echo "$Rpoint"                                                                                  \
                                                                                                                        >>! $nomTR
          repeat    $DimensionD         echo "$Vpoint"                                                                                  \
                                                                                                                        >>! $nomTV
          repeat    $DimensionD         echo "$Bpoint"                                                                                  \
                                                                                                                        >>! $nomTB
          repeat    $DimensionD         echo "$RayonP"                                                                                  \
                                                                                                                        >>! $nomTr
                                        # Definition de l'apparence visuelle du point Argument.                                       #

          @         DimensionQ = $DimensionD * 2

          set       MinimumX=`$xrv/extrema.01$X ne=$DimensionD fichier=$nomTX |& $GRE "^minimum *=" | $SE -e 's/^.*\([-+].*\)$/\1/'`
          set       MinimumY=`$xrv/extrema.01$X ne=$DimensionD fichier=$nomTY |& $GRE "^minimum *=" | $SE -e 's/^.*\([-+].*\)$/\1/'`
          set       MinimumXY=`$xcg/MIN2.01$X nombre_1=$MinimumX nombre_2=$MinimumY`

          set       MaximumX=`$xrv/extrema.01$X ne=$DimensionD fichier=$nomTX |& $GRE "^maximum *=" | $SE -e 's/^.*\([-+].*\)$/\1/'`
          set       MaximumY=`$xrv/extrema.01$X ne=$DimensionD fichier=$nomTY |& $GRE "^maximum *=" | $SE -e 's/^.*\([-+].*\)$/\1/'`
          set       MaximumXY=`$xcg/MAX2.01$X nombre_1=$MaximumX nombre_2=$MaximumY`

          set       ExtensionX=`$xcg/SOUS.01$X nombre_1=$MaximumX nombre_2=$MinimumX`
          set       ExtensionX=`$xcg/ABSO.01$X nombre=$ExtensionX`

          set       ExtensionY=`$xcg/SOUS.01$X nombre_1=$MaximumY nombre_2=$MinimumY`
          set       ExtensionY=`$xcg/ABSO.01$X nombre=$ExtensionY`

          set       ExtensionXY=`$xcg/MAX2.01$X nombre_1=$ExtensionX nombre_2=$ExtensionY`

          set       Homothetie=`$xcg/DIVZ.01$X nombre_1=1 nombre_2=$ExtensionXY`

          set       TranslationX=`$xcg/MUL2.01$X nombre_1=-1 nombre_2=$MinimumX`
          set       TranslationX=`$xcg/MUL2.01$X nombre_1=$Homothetie nombre_2=$TranslationX`

          set       TranslationY=`$xcg/MUL2.01$X nombre_1=-1 nombre_2=$MinimumY`
          set       TranslationY=`$xcg/MUL2.01$X nombre_1=$Homothetie nombre_2=$TranslationY`

          $xrv/particule.10$X           np=1                                                                                            \
                                        iterations=$DimensionQ                                                                          \
                                        LISTE_X=$nomTX                                                                                  \
                                        LISTE_Y=$nomTY                                                                                  \
                                        LISTE_Z=$nomTZ                                                                                  \
                                        LISTE_ROUGE=$nomTR                                                                              \
                                        LISTE_VERTE=$nomTV                                                                              \
                                        LISTE_BLEUE=$nomTB                                                                              \
                                        LISTE_RAYON=$nomTr                                                                              \
                                        AX=$Homothetie BX=$TranslationX                                                                 \
                                        AY=$Homothetie BY=$TranslationY                                                                 \
                                        isoles=FAUX points=$NPoints                                                                     \
                                        R=$nomTI$K_sepP                                                                                 \
                                                                                                                        $formatI        \
                                                            |& $SE      -f $xrv/supATTENTION$sed

          set       Premiere=1

#20091105190437____:          set       Premiere="$K_sepP""`$xci/nombres$X premiere=$Premiere derniere=$Premiere`"                    #

          set       Premiere_1="`$xci/nombres$X premiere=$Premiere derniere=$Premiere`"
          set       Premiere="$K_sepP""$Premiere_1"
          unset     Premiere_1
                                        # Pour la modification du 20091105190437 : 'v $Falias_GetXTmp 20091105172200'...              #

          $xci/acces$X                  A=$nomTI$Premiere$ROUGE R=$imageR$ROUGE                                                         \
                                                                                                                        $formatI
          $xci/acces$X                  A=$nomTI$Premiere$VERTE R=$imageR$VERTE                                                         \
                                                                                                                        $formatI
          $xci/acces$X                  A=$nomTI$Premiere$BLEUE R=$imageR$BLEUE                                                         \
                                                                                                                        $formatI

          FileTmpE  nomT1
          FileTmpE  nomT2
          FileTmpE  nomT3
          FileTmpE  nomT4

          FileTmpE  nomTX
          FileTmpE  nomTY
          FileTmpE  nomTZ
          FileTmpE  nomTR
          FileTmpE  nomTV
          FileTmpE  nomTB
          FileTmpE  nomTr

          FileTmpE  nomTI
                                        # Nettoyage a posteriori...                                                                   #
else
          EROR      "Le fichier '$PointA' des coordonnees du point a visualiser n'existe pas."
endif



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.