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