#!/bin/csh
#######################################################################################################################################
# #
# C O N S T R U C T I O N D ' U N E S U R F A C E A P A R T I R #
# D E S E S T R O I S P S E U D O - P R O J E C T I O N S F L O T T A N T E S : #
# #
# #
# Utilisation : #
# #
# $xrs/project2D.02$Z <Proj> <ImR> [<Args> [<CR1> [<CR2> [<CR3> [<Zoo> [<Rx> [<Ry> [<Rz> [<Zero> [<U> [<V> [<N> [<Nu>]]]]]]]]]]]]] #
# #
# #
# Author of '$xrs/project2D.02$Z' : #
# #
# Jean-Francois Colonna (LACTAMME, 20050904162759). #
# #
#######################################################################################################################################
set Projection=$1
# Les pseudo-projections auront pu etre generees par 'v $xrs/project2D.01$Z' par exemple... #
set ImageR=$2
set Arguments=($3)
# Ce parametre permet d'introduire une liste quelconque de parametres de la commande #
# '$xrs/project2D.11$X' (a condition de la "quoter") et par exemple : #
# #
# "dpu=10 dpv=10 N_AU_CARRE=FAUX" #
# #
# qui permet d'accelerer le calcul. Ou encore : #
# #
# 'TR=$TeMpOrAiRe$COORD_X #
# TV=$TeMpOrAiRe$COORD_Y #
# TB=$TeMpOrAiRe$COORD_Z #
# ROUGE_T=1 VERTE_T=1 BLEUE_T=1 #
# textures_standard=FAUX' #
# #
# (en notant bien l'usage des '$K_QS's) qui permettra de "mapper" sur la surface elle-meme #
# sa "pseudo-projection" utilisee alors comme texture (introduit le 20100528093738...). #
set ComposR1=$4
set ComposR2=$5
set ComposR3=$6
set Zoom=$7
set RotationX=$8
set RotationY=$9
set RotationZ=$10
set Zero=$11
# Parametre introduit le 20050914150949 pour 'v $xci/normalise.01$K zero=' : #
# #
# zero=FAUX : la renormalisation aura bien lieu dans [-1,+1], #
# #
# zero=VRAI : le zero est conserve et donc la renormalisation #
# n'aura pas lieu dans [-1,+1]... #
# #
set CoordonneeU=$12
set CoordonneeV=$13
# Les parametres relatives a la definition des coordonnees {U,V} ont ete introduits le #
# 20060120092726... #
set Normalise=$14
# Parametre introduit le 20060606095351 pour pouvoir bloquer la normalisation... #
set Nullite=$15
# Parametre introduit le 20081228103428 pour pouvoir resoudre des problemes du type de celui #
# apparu lors du calcul de 'v $xiirs/PROJ.a3' pour laquelle la composante '$COORD_Y' du #
# produit matriciel etait dans [-5.12e-12,+5.12e-12] et donc quasiment nulle... #
if (("$CoordonneeU" == "$K_VIDE") || ("$CoordonneeV" == "$K_VIDE")) then
set CoordonneeUV="UV_transformer=FAUX"
else
set CoordonneeUV="UV_transformer=VRAI imageU=$CoordonneeU imageV=$CoordonneeV"
endif
setArgum ComposR1 $COORD_X
setArgum ComposR2 $COORD_Y
setArgum ComposR3 $COORD_Z
setArgum Zoom 0.8
setArgum RotationX 0
setArgum RotationY 0
setArgum RotationZ 0
setArgum Zero VRAI
setArgum Normalise $EXIST
# Par defaut, la normalisation a lieu afin d'assurer la compatibilite anterieure... #
setArgum Nullite `GetParam $xci/normalise.01$X amplitude_nullite`
# Par defaut, la normalisation a lieu afin d'assurer la compatibilite anterieure... #
FileTmpB TeMpOrAiRe
# Definition de fichiers temporaires... #
if ($Normalise == $EXIST) then
# Test introduit le 20060606095351... #
$xci/normalise.01$X \
A=$Projection$ComposR1 \
origine=-1 extremite=1 \
amplitude_nullite=$Nullite \
zero=$Zero \
R=$TeMpOrAiRe$COORD_X \
$formatI
$xci/normalise.01$X \
A=$Projection$ComposR2 \
origine=-1 extremite=1 \
amplitude_nullite=$Nullite \
zero=$Zero \
R=$TeMpOrAiRe$COORD_Y \
$formatI
$xci/normalise.01$X \
A=$Projection$ComposR3 \
origine=-1 extremite=1 \
amplitude_nullite=$Nullite \
zero=$Zero \
R=$TeMpOrAiRe$COORD_Z \
$formatI
# Mise des coordonnees dans [-1,+1]. Le 20050905120449, la conservation du zero a ete #
# introduite... #
else
$xci/neutre$X \
A=$Projection$ComposR1 \
standard=FAUX \
R=$TeMpOrAiRe$COORD_X \
$formatI
$xci/neutre$X \
A=$Projection$ComposR2 \
standard=FAUX \
R=$TeMpOrAiRe$COORD_Y \
$formatI
$xci/neutre$X \
A=$Projection$ComposR3 \
standard=FAUX \
R=$TeMpOrAiRe$COORD_Z \
$formatI
# Introduit le 20060913135228 car manquait... #
endif
set Parametres="$K_VIDE"
#20090701180320____:set Parametres="$Parametres"" np=1" #
set Parametres="$Parametres"" brume=FAUX"
set Parametres="$Parametres"" $CoordonneeUV"
# Cette possibilite a ete introduite le 20060120092726... #
set Parametres="$Parametres"" mu=0 Mu=1"
set Parametres="$Parametres"" mv=0 Mv=1"
set Parametres="$Parametres"" pu=0.02 pv=0.02"
set Parametres="$Parametres"" eu=20 ev=20"
set Parametres="$Parametres"" dpu=40 dpv=40"
set Parametres="$Parametres"" Fx_periodiser_u=FAUX Fy_periodiser_u=FAUX Fz_periodiser_u=FAUX"
set Parametres="$Parametres"" Fx_symetriser_u=FAUX Fy_symetriser_u=FAUX Fz_symetriser_u=FAUX"
set Parametres="$Parametres"" Fx_prolonger_u=VRAI Fy_prolonger_u=VRAI Fz_prolonger_u=VRAI"
set Parametres="$Parametres"" Fx_periodiser_v=FAUX Fy_periodiser_v=FAUX Fz_periodiser_v=FAUX"
set Parametres="$Parametres"" Fx_symetriser_v=FAUX Fy_symetriser_v=FAUX Fz_symetriser_v=FAUX"
set Parametres="$Parametres"" Fx_prolonger_v=VRAI Fy_prolonger_v=VRAI Fz_prolonger_v=VRAI"
set Parametres="$Parametres"" bilineaire=VRAI"
# Le 20050905134422, j'ai introduit l'option "bilineaire=VRAI" destinee a faire de #
# l'interpolation bilineaire (et non bicubique) dans 'FFload_point_coordonnees_01(...)' #
# ce qui permet d'eviter des points "incoherents" qui peuvent apparaitre au voisinage #
# des extrema des coordonnees 'u' et 'v'... #
set Parametres="$Parametres"" ddu=0.01 ddv=0.01"
# Le 20050905135832, "ddu=" et "ddv=" ont ete introduits afin d'avoir de jolies couleurs... #
set Parametres="$Parametres"" ZOOM=$Zoom"
set Parametres="$Parametres"" ROTATION_OX=$RotationX"
set Parametres="$Parametres"" ROTATION_OY=$RotationY"
set Parametres="$Parametres"" ROTATION_OZ=$RotationZ"
set Parametres="$Parametres"" Lz=100"
set Parametres="$Parametres"" rayon_de_visualisation=0.015"
set Parametres="$Parametres"" N_AU_CARRE=VRAI"
set Parametres="$Parametres"" edc=VRAI"
#20100528093738____:set Parametres="$Parametres"" $Arguments" #
set Parametres="$Parametres"" `eval echo $Arguments`"
# Afin de permettre de "mapper" la "pseudo-projection" sur la surface elle-meme a l'aide #
# du '$Arguments' suivant : #
# #
# 'TR=$TeMpOrAiRe$COORD_X #
# TV=$TeMpOrAiRe$COORD_Y #
# TB=$TeMpOrAiRe$COORD_Z #
# ROUGE_T=1 VERTE_T=1 BLEUE_T=1 #
# textures_standard=FAUX' #
# #
# (en notant bien l'usage des '$K_QS's). Ceci fut introduit le 20100528093738... #
#20090701094308____:set NombreImages=1 #
set NombreImagesX=1
set NombreImagesY=1
set NombreImagesZ=1
# Introduit le 20090701094157. A priori, une seule image va etre generee... #
if ($RotationX != 0) then
if (-e $RotationX) then
set NombreImagesX=`$CA $RotationX | $WCl | $AW ' { print $1 } '`
# L'utilisation d'un fichier pour '$RotationX' a ete introduite le 20090701094308... #
else
endif
else
endif
if ($RotationY != 0) then
if (-e $RotationY) then
set NombreImagesY=`$CA $RotationY | $WCl | $AW ' { print $1 } '`
# L'utilisation d'un fichier pour '$RotationY' a ete introduite le 20090701094308... #
else
endif
else
endif
if ($RotationZ != 0) then
if (-e $RotationZ) then
set NombreImagesZ=`$CA $RotationZ | $WCl | $AW ' { print $1 } '`
# L'utilisation d'un fichier pour '$RotationZ' a ete introduite le 20090701094308... #
else
endif
else
endif
#20090722131727____:set NombreImages=`$xcg/MAX3.01$X x=$NombreImagesX y=$NombreImagesY z=$NombreImagesZ entier=VRAI` #
set NombreImages=`$xcg/MAX3.01$X x=$NombreImagesX y=$NombreImagesY z=$NombreImagesZ entier=VRAI signe="$K_VIDE"`
# L'utilisation de fichiers pour les rotations a ete introduite le 20090701094308... #
#20090701100601____:set NombreChiffres=0 #
# Le nombre de chiffres pour les noms d'image doit alors etre "parametrable" (ceci fut #
# introduit le 20090701100302...). #
if ($NombreImages == 1) then
set NombreChiffres=0
else
set NombreChiffres=`GetParam $xrs/project2D.11$X chiffres`
endif
$xrs/project2D.11$X \
np=$NombreImages \
Fx=$TeMpOrAiRe$COORD_X \
Fy=$TeMpOrAiRe$COORD_Y \
Fz=$TeMpOrAiRe$COORD_Z \
$Parametres \
R=$ImageR \
chiffres=$NombreChiffres \
$formatI
# Visualisation de la surface... #
FileTmpE TeMpOrAiRe