source: trunk/TRIANGULATION/decoupeterre.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 4.7 KB
Line 
1;------------------------------------------------------------
2;------------------------------------------------------------
3;------------------------------------------------------------
4;+
5; NAME:decoupeterre
6;
7; PURPOSE:tres semblable a grille. Ici qd vargrid ne 'T' ou 'W' alors
8; pour le trace il faut recuperer Tmask, glamt, gphit et le tableau de
9; triangulation sur le sous domaine considerer. La specificite de
10; decoupeterre par rapport a grille, c''est que l''on prend ds la
11; mesure du possible un sous domaine juste un peu plus grand que celui
12; definit par domdef de facon a etre sur que le masque que l''on trace
13; recouvrira bien tout le dessin.
14;
15; CATEGORY:pour plt
16;
17; CALLING SEQUENCE:decoupeterre, mask, glam, gphi, TRI = tri
18;
19; INPUTS:
20;
21; KEYWORD PARAMETERS:
22;         TRI si ce mot clef sert a obtenir grace a grille la
23;         triangulation qui se rapporte a la grille mais uniquement
24;         sur la partie du zoom. ce tableau de triangulation reduit
25;         est passe ds la variable que l''on a egalee a tri.par ex:
26;         grille,...,tri=triangulation_reduite. ne mot clef est
27;         utilise dans plt.pro
28;
29;         /NOTRI: utile seulement qd TRI est active. dans ce cas
30;         grille retourne -1 ds la variable tri meme si la variable du
31;         common triangles est definie et differente de -1
32;
33;
34; OUTPUTS:le masque et ses coordonnees
35;
36; COMMON BLOCKS:
37;       common.pro
38;
39; SIDE EFFECTS:
40;
41; RESTRICTIONS:
42;
43; EXAMPLE:
44;
45; MODIFICATION HISTORY: Sebastien Masson (smasson@lodyc.jussieu.fr)
46;                       24/2/99
47;-
48;------------------------------------------------------------
49;------------------------------------------------------------
50;------------------------------------------------------------
51PRO decoupeterre, mask, glam, gphi, TRI = tri, TOUT = tout, INDICEZOOM = indicezoom, coinmonte = coinmonte, coindescend = coindescend, _extra = ex
52@common
53   tempsun = systime(1)         ; pour key_performance
54;------------------------------------------------------------
55   if keyword_set(tout) then begin
56      oldboite = [lon1, lon2, lat1, lat2, prof1, prof2]
57      domdef
58   endif
59;------------------------------------------------------------
60;
61   case vargrid of
62      'U':BEGIN
63         premierx = 0 > (min([premierxt, premierxu])-1)
64         dernierx = (max([dernierxt, dernierxu])+1) < (jpi-1)
65         premiery = premieryt
66         derniery = dernieryt
67      end
68      'V':BEGIN
69         premierx = premierxt
70         dernierx = dernierxt
71         premiery = 0 > (min([premieryt, premieryv])-1)
72         derniery = (max([dernieryt, dernieryv])+1) < (jpj-1)
73      end
74      'F':BEGIN
75         premierx = 0 > (min([premierxt, premierxu])-1)
76         dernierx = (max([dernierxt, dernierxu])+1) < (jpi-1)
77         premiery = 0 > (min([premieryt, premieryv])-1)
78         derniery = (max([dernieryt, dernieryv])+1) < (jpj-1)
79      END
80   ENDCASE
81   nx = dernierx-premierx+1
82   ny = derniery-premiery+1
83   premierz = premierzt
84   dernierz = dernierzt
85   glam=glamt[premierx:dernierx, premiery:derniery]
86   gphi=gphit[premierx:dernierx, premiery:derniery]
87;
88   premierz = premierzt
89   dernierz = dernierzt
90   nz = nzt
91   mask=tmask[premierx:dernierx, premiery:derniery, niveau-1]
92   profond = niveau-1
93;------------------------------------------------------------
94; vecteur triangulation Qd TRI est active
95;------------------------------------------------------------
96   IF arg_present(TRI) then $
97    if triangles[0] EQ -1 OR keyword_set(notri) then tri = -1 ELSE BEGIN
98; si on est en train de tracer un niveau profond on refait la
99; triangulation
100      if keyword_set(profond) then begin
101         tri = triangule(mask, periodique = keyword_set(key_periodique)*(nx EQ jpi), coinmonte = coinmonte, coindescend = coindescend, _extra = ex)
102         indicezoom = (lindgen(jpi, jpj))[premierx:dernierx, premiery:derniery]
103      ENDIF ELSE BEGIN
104; sinon on recupere la partie de triangulation qui nous interesse et
105; on la numerote convenablement!
106         if nx EQ jpi AND ny EQ jpj then tri = triangles ELSE BEGIN
107            msk = bytarr(jpi, jpj)
108            msk[premierx:dernierx,premiery:derniery] = 1
109            ind = where( msk[triangles[0, *]] EQ 1 $
110                         AND msk[triangles[1, *]] EQ 1 $
111                         AND msk[triangles[2, *]] EQ 1 )
112            tri =triangles[*, ind]-(premierx+premiery*jpi)
113            y = tri/jpi
114            x = tri-y*jpi
115            tri = x+y*nx
116         ENDELSE
117      ENDELSE
118   ENDELSE
119   if keyword_set(tout) then domdef, oldboite
120;-------------------------------------------------------------------
121   if keyword_set(key_performance) THEN print, 'temps decoupeterre', systime(1)-tempsun
122;------------------------------------------------------------
123   return
124end
125
Note: See TracBrowser for help on using the repository browser.