#!/bin/csh

#######################################################################################################################################
#                                                                                                                                     #
#         P E R M U T A T I O N   D E S   T R O I S   C O M P O S A N T E S   D ' U N E   I M A G E  :                                #
#                                                                                                                                     #
#                                                                                                                                     #
#         Utilisation :                                                                                                               #
#                                                                                                                                     #
#                   $xci/permute_RVB.11$Z         <imageA> <imageR> [<CoA1> [<CoA2> [<CoA3> [<CoR1> [<CoR2> [<CoR3>]]]]]]             #
#                                                 <imageA> <imageR> [RVB|RBV|VBR|VRB|BRV|BVR]                                         #
#                                                 <imageA> <imageR> [-RVB|-RBV|-VBR|-VRB|-BRV|-BVR]                                   #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xci/permute_RVB.11$Z' :                                                                                         #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20121211110008).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

set                 imageA=$1
set                 imageR=$2
set                 ComposA1=$3
set                 ComposA2=$4
set                 ComposA3=$5
set                 ComposR1=$6
set                 ComposR2=$7
set                 ComposR3=$8
                                        # Le 20161130115625, je note la facon suivante d'explorer visuellement les six possibilites   #
                                        # pour l'image '$ImAgE' :                                                                     #
                                        #                                                                                             #
                                        #                                                                                             #
                                        #    :Debut_listG_Les_6_RVB:                                                                  #
                                        #                                                                                             #
                                        #    $Z             ext       Sud                                                             #
                                        #    $Z             ext       Pud                                                             #
                                        #                                                                                             #
                                        #    $Z             set       ImAgE=...                                                       #
                                        #                                                                                             #
                                        #    $Z             setenv    xTV                 $xTG                                        #
                                        #                                                                                             #
                                        #    $Z   alias     All  'set  ImA=\!:1 ; set RvB=\!:2 ; set CoX=\!:3 ; set CoY=\!:4 ;    \\  #
                                        #    $Z                   set  ImR=$xTV/IMAGE.$RvB                                   ;    \\  #
                                        #    $Z                   $xci/permute_RVB.11$Z    $ImA $ImR $RvB                    ;    \\  #
                                        #    $Z                   v                        $ImR Fc=FAUX xc=$CoX yc=$CoY      ;    \\  #
                                        #    $Z                   unset                    ImR ImA RvB CoX CoY'                       #
                                        #                                                                                             #
                                        #    $Z             All       $ImAgE RVB 0 0.5                                                #
                                        #    $Z             All       $ImAgE RBV 1 0.5                                                #
                                        #    $Z             All       $ImAgE VBR 0 1.5                                                #
                                        #    $Z             All       $ImAgE VRB 1 1.5                                                #
                                        #    $Z             All       $ImAgE BRV 0 2.5                                                #
                                        #    $Z             All       $ImAgE BVR 1 2.5                                                #
                                        #                                                                                             #
                                        #    :Fin_listG_Les_6_RVB:                                                                    #
                                        #                                                                                             #
                                        #                                                                                             #
                                        # puis :                                                                                      #
                                        #                                                                                             #
                                        #         listG     $xci/permute_RVB.11$Z :Debut_listG_""Les_6_RVB: :Fin_listG_""Les_6_RVB:   #
                                        #                                                                                             #
                                        # (les double-quotes "" sont destinees a eviter les messages                                  #
                                        # 'v $xEa/listMN$vv$Y _____est_multiplement_definie').                                        #
                                        #                                                                                             #
                                        # L'utilisation de '$xTV' est destinee a minimser l'espace disque utilise dans le cas         #
                                        # ou plusieurs '$xci/permute_RVB.11$Z's de suite sont effectues...                            #

if                  (         (         ("$ComposA1" != "$ROUGE")                                                                       \
                              &&        ("$ComposA1" != "$VERTE")                                                                       \
                              &&        ("$ComposA1" != "$BLEUE")                                                                       \
                               )                                                                                                        \
                    &&        (         ("$ComposA2" == "$K_VIDE")                                                                      \
                              &&        ("$ComposA3" == "$K_VIDE")                                                                      \
                              &&        ("$ComposR1" == "$K_VIDE")                                                                      \
                              &&        ("$ComposR2" == "$K_VIDE")                                                                      \
                              &&        ("$ComposR3" == "$K_VIDE")                                                                      \
                               )                                                                                                        \
                     ) then
                                        # Test introduit le 20141125162059...                                                         #
                    set                 Permutation="$ComposA1"

                    set                 ComposA1=$ROUGE
                    set                 ComposA2=$VERTE
                    set                 ComposA3=$BLEUE

                    switch    ("$Permutation")
                                        # Cette possibilite d'inverser explicitement le processus a ete introduite le 20200424100104. #
                              case "-RVB":
                                        set                 Permutation="RVB"
                                        breaksw
                              case "-RBV":
                                        set                 Permutation="RBV"
                                        breaksw
                              case "-VBR":
                                        set                 Permutation="BRV"
                                        breaksw
                              case "-VRB":
                                        set                 Permutation="VRB"
                                        breaksw
                              case "-BRV":
                                        set                 Permutation="VBR"
                                        breaksw
                              case "-BVR":
                                        set                 Permutation="BVR"
                                        breaksw
                              default:
                                        breaksw
                    endsw

                    switch    ("$Permutation")
                                        # Cette possibilite d'introduire symboliquement la permutation des composantes a ete          #
                                        # introduite le 20141125162059...                                                             #
                              case "RVB":
                                        set                 ComposR1=$ROUGE
                                        set                 ComposR2=$VERTE
                                        set                 ComposR3=$BLEUE
                                        breaksw
                              case "RBV":
                                        set                 ComposR1=$ROUGE
                                        set                 ComposR2=$BLEUE
                                        set                 ComposR3=$VERTE
                                        breaksw
                              case "VBR":
                                        set                 ComposR1=$VERTE
                                        set                 ComposR2=$BLEUE
                                        set                 ComposR3=$ROUGE
                                        breaksw
                              case "VRB":
                                        set                 ComposR1=$VERTE
                                        set                 ComposR2=$ROUGE
                                        set                 ComposR3=$BLEUE
                                        breaksw
                              case "BRV":
                                        set                 ComposR1=$BLEUE
                                        set                 ComposR2=$ROUGE
                                        set                 ComposR3=$VERTE
                                        breaksw
                              case "BVR":
                                        set                 ComposR1=$BLEUE
                                        set                 ComposR2=$VERTE
                                        set                 ComposR3=$ROUGE
                                        breaksw
                              default:
                                        EROR      "['"'$Falias_Arch'"'] La permutation '$Permutation' n'est pas reconnue."

                                        set                 ComposR1=$ROUGE
                                        set                 ComposR2=$VERTE
                                        set                 ComposR3=$BLEUE
                                        breaksw
                    endsw

                    if                  ($NEXIST) then
                                        # Afin de pouvoir editer les permutations inverses...                                         #
                                        set       Permutation=`echo "$Permutation" | $SE -e "s/\(.\)/\1 /"g | $R "[RVB]" "[123]"`
                                        set       Neutre=("R" "V" "B")
                                        set       Inverse=("$K_VIDE" "$K_VIDE" "$K_VIDE")
                                        set       Index=1

                                        foreach   Element ($Permutation)
                                                  set       Inverse[$Element]=$Neutre[$Index]
                                                  @         Index = $Index + 1
                                        end

                                        set       Inverse=`echo "$Inverse" | $SE -e "s/  *//g"`
                                        echo      "Permutationinverse : $Inverse"
                                        # Liste des permutations directes et de leurs inverses :                                      #
                                        #                                                                                             #
                                        #    1-Cas "inverse=directe" (une ou les trois composante(s) ne bouge(nt) pas -"="-) :        #
                                        #                                                                                             #
                                        #                   RVB  -o->  RVB                                                            #
                                        #                   ===        ===                                                            #
                                        #                                                                                             #
                                        #                   RBV  -o->  RBV                                                            #
                                        #                   =          =                                                              #
                                        #                                                                                             #
                                        #                   BVR  -o->  BVR                                                            #
                                        #                    =          =                                                             #
                                        #                                                                                             #
                                        #                   VRB  -o->  VRB                                                            #
                                        #                     =          =                                                            #
                                        #                                                                                             #
                                        #                                                                                             #
                                        #    2-Cas "inverse#directe" (toutes les composantes bougent grace a un decalage circulaire   #
                                        #    d'une position -"<" ou ">"-) :                                                           #
                                        #                                                                                             #
                                        #                   VBR  -o->  BRV                                                            #
                                        #                    <                                                                        #
                                        #                   [BRV]                                                                     #
                                        #                                                                                             #
                                        #                   BRV  -o->  VBR                                                            #
                                        #                    >                                                                        #
                                        #                   [VBR]                                                                     #
                                        #                                                                                             #
                    else
                    endif
else
                    if                  ("$ComposA1" == "$K_VIDE") then
                                        set                 ComposA1=$ROUGE
                    else
                    endif

                    if                  ("$ComposA2" == "$K_VIDE") then
                                        set                 ComposA2=$VERTE
                    else
                    endif

                    if                  ("$ComposA3" == "$K_VIDE") then
                                        set                 ComposA3=$BLEUE
                    else
                    endif

                    if                  ("$ComposR1" == "$K_VIDE") then
                                        set                 ComposR1=$ROUGE
                    else
                    endif

                    if                  ("$ComposR2" == "$K_VIDE") then
                                        set                 ComposR2=$VERTE
                    else
                    endif

                    if                  ("$ComposR3" == "$K_VIDE") then
                                        set                 ComposR3=$BLEUE
                    else
                    endif
endif

FilSTmpB            imageT

set                 Arguments="standard=VRAI"

$xci/acces$X        A=$imageA$ComposA1  $Arguments                              R=$imageT$ComposR1            $formatI
$xci/acces$X        A=$imageA$ComposA2  $Arguments                              R=$imageT$ComposR2            $formatI
$xci/acces$X        A=$imageA$ComposA3  $Arguments                              R=$imageT$ComposR3            $formatI
                                        # Et permutation des composantes...                                                           #

execRVB  $xci/neutre$X        A=$imageT%s                                       R=$imageR%s                             $formatI
                                        # Le passage par une image intermediaire a ete introduit le 20130206133053 afin de            #
                                        # permettre aux images '$imageA' et 'imageR' d'etre identiques...                             #

FilSTmpE            imageT



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