#!/bin/csh ####################################################################################################################################### # # # R E C H E R C H E D U M E I L L E U R C A D R A G E V E R T I C A L # # P O U R U N E M O N T A G N E V U E D E C O T E : # # # # # # Utilisation : # # # # $xci/montagne.12$Z <surface> # # # # # # Author of '$xci/montagne.12$Z' : # # # # Jean-Francois Colonna (LACTAMME, AAAAMMJJhhmmss). # # # ####################################################################################################################################### set surface=$1 if (-e $surface) then FileTmpB nomM $M # Nom de la montagne temporaire que l'on est oblige de generer. # set unite=1.0 set dimensionY=$dimension_formatY #AAAAMMJJ: set cadrage=`$xci/montagne.01$X A=$surface T=$xiio/BLANC R=$nomM Ty=0.0 cadrage=VRAI $formatI |& $CA` # set cadrage=`$xci/montagne.01$X A=$surface T=$BLANC R=$nomM Ty=0.0 cadrage=VRAI $formatI Prme=VRAI` # Recherche du cadrage avec une translation verticale nulle. # FileTmpE nomM set cadrageG=$cadrage[1] set cadrageG=`$xcg/scale$X nombre=$cadrageG multiplicateur=$dimensionY diviseur=$unite entier=VRAI` # Recherche de la plus grande ordonnee sur l'ensemble de la montagne. # set cadrageL=$cadrage[2] set cadrageL=`$xcg/scale$X nombre=$cadrageL multiplicateur=$dimensionY diviseur=$unite entier=VRAI` # Recherche de la plus grande ordonnee sur la 'last' ligne de la montagne. # @ amplitude = $cadrageG - $cadrageL if ($amplitude < 0) then @ amplitude = 0 - $amplitude else endif # On calcule la valeur absolue de '$cadrageG - $cadrageL' (soit 'amplitude'). # if ($amplitude >= $dimensionY) then @ translationY = $dimensionY - $cadrageG # Lorsque l'amplitude est plus grande que l'image, la translation verticale est donnee # # uniquement par '$cadrageG', c'est-a-dire la plus grande ordonnee globale. # else if ($cadrageL >= 0) then @ translationY = 0 - $cadrageL # Sinon, et si la plus grande ordonnee de la 'last' ligne est positive (ce qui doit # # induire un defaut en bas), on descend suffisamment pour qu'elle disparaisse. # else @ LtranslationY = 0 - $cadrageL @ GtranslationY = $dimensionY - $cadrageG if ($LtranslationY < $GtranslationY) then @ translationY = $LtranslationY else @ translationY = $GtranslationY endif # Enfin, dans le dernier cas, on peut remonter l'image jusqu'a ce que, soit le plus # # haut de la montagne ($cadrageG) touche en haut, soit le defaut du bas ($cadrageL) # # "tangente" le bas de l'image. # endif endif set translationY=`$xcg/scale$X nombre=$translationY multiplicateur=$unite diviseur=$dimensionY entier=FAUX` # Recherche de la plus grande ordonnee sur la 'last' ligne de la montagne. # echo $translationY # Edition de la meilleure translation verticale pour la montagne argument. # else EROR "L'image argument n'existe pas." endif