* MONTAGNE PROCEDUR JC220346 14/12/09 21:15:10 8314 *---------------------------------------------------------------------- * * PROCEDURE MONTAGNE * *---------------------------------------------------------------------- * * syntaxe : * * MONTAGNE CHPO1 (CHPO2) GEO1 (FLOT1) (| POIN1 ) * | PROG1 * ('TITRE' CHA1) MOT1 MOT2 ; * *---------------------------------------------------------------------- * * Cette procédure sert à visualiser en relief un champ par point à une * composante, et éventuellement de superposer à ce relief les isovaleurs * d'un autre champ. * * EN ENTREE : * SMV : Le champoint a visualiser (flèches ou volume) * (SMV2) : Le champoint de valeurs (isovaleurs) * GEO : Le support géometrique * (FLOT1) : Un coefficient d'amplification * (OEIL1) : Un oeil (POINT) * (OEIL2) : Un oeil (LISTREEL) * ('TITRE' CHA1) : UN TITRE * (MOT1) : mot-clef 'CACH' ou 'CACHE' * (MOT2) : mot-clef 'FLECHE', 'VOLUME' ou 'SUPER' * *--------------------------------------------------------------------- * * SMV2 doit avoir le même support géométrique que SMV * * Les chpos doivent n'avoir qu'une seule composante * * Si SMV2 est fourni, l'option de tracé est mise à 'VOLUME' * * Si OEIL n'est pas fourni, il est placé au-dessus, face par le * sud-sud-ouest * * Si le coefficient d'amplification, n'est pas fourni, il est * déterminé automatiquement en donnant une même amplitude verticale * que les amplitudes horizontales. * * L'entrée du point de vue sous forme de liste de 3 réels permet * de se dispenser de passer en trois dimensions. * * Le type de tracé dépend de MOT2, par défaut VOLUME. * une valeur 'SUPER' avec un seul chpo indique qu'on se sert de CHPO1 * comme champ à superposer sous forme d'isovaleurs. * *--------------------------------------------------------------------- 'DEBPROC' MONTAGNE SMV*'CHPOINT' SMV2/'CHPOINT' GEO*'MAILLAGE' AMP/'FLOTTANT' OEIL1/'POINT' OEIL2/'LISTREEL' ; *--------------------------------------------------------------------- * Gestion des entrées * =================== *-- Gestion des entrées optionnelles LCACH = faux ; LTITR = faux ; 'REPETER' bcl1 ; 'SI' ('EXISTE' MOT1) ; 'SI' (('EGA' MOT1 'CACH') 'OU' ('EGA' MOT1 'CACHE')) ; LCACH = vrai ; 'ITERER' bcl1 ; 'FINSI' ; 'SI' ('EXISTE' MOT2) ; LTITR = vrai ; BARA = MOT2 ; 'ITERER' bcl1 ; 'SINON' ; 'ERREUR' 'On a attend un titre derrière le mot-clef TITRE' ; 'FINSI' ; 'FINSI' ; 'SI' ( ('EGA' MOT1 'FLECHE') 'OU' ('EGA' MOT1 'VOLUME') 'OU' ('EGA' MOT1 'SUPER') ); 'ITERER' bcl1 ; 'FINSI' ; 'ERREUR' ('CHAINE' 'Mot-clef ' MOT1 ' inconnu') ; 'SINON' ; 'QUITTER' bcl1 ; 'FINSI' ; 'FIN' bcl1 ; *-- Type de tracé 'SI' ('EXISTE' SMV2) ; * toujours de type 3 si deux champs sont donnés 'SINON' ; 'SI' ('EGA' TYPT 'SUPER') ; * le champ superposé sera celui d'origine SMV2 = SMV ; 'FINSI' ; 'FINSI' ; *-- Test des composantes 'ERREUR' 'Les champ-points doivent n avoir qu une seule composante' ; 'FINSI' ; 'SI' ('EXISTE' SMV2) ; 'ERREUR' 'Les champ-points doivent n avoir qu une seule composante' ; 'FINSI' ; 'FINSI' ; * Préparation * =========== * Passage en dimension 3 'SI' ('NEG' ndime 3) ; 'FINSI' ; *-- champ de déplacement vertical donné par le champ-point 'SI' ('EGA' ndime 3) ; * si on est en 3D, on annule la composante verticale de la géométrie * support, en projetant sur le plan xOy GEO0 = 'PROJETER' GEO 'CYLI' (0 0 1) 'PLAN' (0 0 0) (0 1 0) (1 0 0) ; * on repositionne SMV sur ce nouveau support 'REPETER' LOOP1 NA ; I = &LOOP1 ; PPP = 'POINT' GEOP0 I ; 'FIN' LOOP1 ; 'SINON' ; GEO0 = GEO ; GEOP = GEOP0 ; 'FINSI' ; DEPP = DEPH 'ET' DEPZ ; *-- Détermination de l'amplification 'SI' ('NON' ('EXISTE' AMP)) ; * on tient compte de l'étendue spatiale tel que dz est du même ordre * que dx ou dy minx maxx = ('MINIMUM' xx) ('MAXIMUM' xx); miny maxy = ('MINIMUM' yy) ('MAXIMUM' yy); minz maxz = ('MINIMUM' zz) ('MAXIMUM' zz); dx = maxx - minx; dy = maxy - miny; 'SI' (dz 'EGA' 0.) ; AMP = 1. ; 'SINON' ; 'FINSI' ; 'FINSI' ; *-- détermination de la position de l'oeil 'SI' (('EXISTE' OEIL1) 'OU' ('EXISTE' OEIL2)) ; 'SI' ('EXISTE' OEIL1) ; OEIL = OEIL1 ; 'SINON' ; 'ERREUR' 'L oeil est soit un point 3D, soit une liste de 3 réels' ; 'FINSI' ; 'FINSI' ; * on tient compte de la dilatation 'SINON' ; * on s'appuie sur l'étendue spatiale minx maxx = ('MINIMUM' xx) ('MAXIMUM' xx); miny maxy = ('MINIMUM' yy) ('MAXIMUM' yy); minz maxz = ('MINIMUM' zz) ('MAXIMUM' zz); xc yx zc = (.5*(minx + maxx)) (.5*(miny + maxy)) (.5*(minz + maxz)); xo = minx - (.5 * (maxx - minx)); yo = miny - (2. * (maxy - miny)); zo = minz + (4. * (maxz - minz)); * l'oeil doit être à une hauteur minimale OEIL = xo yo zo ; 'FINSI' ; * Tracé * ===== 'SI' ('EGA' TYPT 'FLECHE') ; * Tracé par petites flêches 'SI' ltitr ; 'TRAC' OEIL DETRB 'TITRE' BARA ; 'SINON' ; 'TRAC' OEIL DETRB ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' TYPT 'VOLUME') ; * Tracé en volume * amplification * différents éléments CTBAS = 'COULEUR' ('CONTOUR' GEO0) 'BLEU' ; CTHAU = 'COULEUR' ('CONTOUR' GEOB) 'BLEU' ; F1 = 'COULEUR' GEO0 'JAUN' ; F2 = 'COULEUR' GEOB 'ROUG' ; F3 = 'REGLER' CTBAS 1 CTHAU ; SUPTOT = F1 'ET' F2 'ET' F3 ; 'SI' lcach ; * faces cachées 'SI' ltitr ; 'TRAC' OEIL SUPTOT 'CACHE' 'TITRE' BARA ; 'SINON' ; 'TRAC' OEIL SUPTOT 'CACHE' ; 'FINSI' ; 'SINON' ; * tout visible 'SI' ltitr ; 'TRAC' OEIL SUPTOT 'TITRE' BARA ; 'SINON' ; 'TRAC' OEIL SUPTOT ; 'FINSI' ; 'FINSI' ; 'FINSI' ; 'SI' ('EGA' TYPT 'SUPER') ; * Tracé en volume avec isovaleurs d'un deuxième champ * amplification * construction du champ-point déplacé : 'REPETER' LOOP1 NA ; I = &LOOP1 ; PPP = 'POINT' GEOP0 I ; 'FIN' LOOP1 ; * les faces sont forcément cachées, donc on ne tient pas compte de lcach 'SI' ltitr ; 'TRAC' OEIL GEOB smv2b 'TITRE' BARA ; 'SINON' ; 'TRAC' OEIL GEOB smv2b ; 'FINSI' ; 'FINSI' ; * Retour dans la dimension d'origine 'SI' ('NEG' ndime 3) ; 'OPTION' 'DIME' ndime ; 'OPTION' 'MODE' savmode ; 'FINSI' ; 'FINPROC' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales