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