source: trunk/SRC/ToBeReviewed/TRIANGULATION/drawcoast_c.pro @ 76

Last change on this file since 76 was 29, checked in by pinsard, 18 years ago

upgrade of TRIANGULATION according to cerbere.lodyc.jussieu.fr: /usr/home/smasson/SAXO_RD/ : files

  • Property svn:eol-style set to native
  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 3.9 KB
Line 
1PRO drawcoast_c, mask, xf, yf, nx, ny, COAST_COLOR = coast_color, COAST_THICK = coast_thick, YSEUIL = yseuil, XSEUIL = xseuil, _extra = ex
2;---------------------------------------------------------
3@cm_4mesh
4  IF NOT keyword_set(key_forgetold) THEN BEGIN
5@updatenew
6@updatekwd
7  ENDIF
8;---------------------------------------------------------
9   tempsun = systime(1)         ; pour key_performance
10;---------------------------------------------------------
11;
12; on trace les segments verticaux:
13;
14   if NOT keyword_set(yseuil) then yseuil = 5. < (min([nx, ny])-2)
15   distanceseuil = (!p.position[3]-!p.position[1])/yseuil
16; liste: liste des points i pourlesquels on va tracer un segment entre
17; le point i,j-1 et i,j
18   tempdeux = systime(1)        ; pour key_performance =2
19   liste = where((mask+shift(mask, -1, 0)) EQ 1 $
20                 AND ((xf-shift(xf, 0, 1))^2+(yf-shift(yf, 0, 1))^2) LE distanceseuil^2)
21   IF liste[0] NE -1 THEN BEGIN
22; on recupere lx et ly qui sont les indices ds un tableau 2d des
23; points donnes par liste
24      ly = liste/nx & lx = temporary(liste)-nx*ly
25      indice = where(ly NE 0)   ; on ne prend pas les points concernant
26      if indice[0] NE -1 then begin
27; la premiere ligne car ds ce cas le pt j-1 n''est pas definit
28         lx = lx[indice] & ly = ly[temporary(indice)]
29; boucle sur les points concernes et trace du segment
30; rq: on utilise plost au lieu de plot car plots est bcp plus rapide.
31         IF testvar(var = key_performance) EQ 2 THEN $
32          print, 'temps tracecote: determiner liste des points concernes par un trait vertical', systime(1)-tempdeux
33         tempdeux = systime(1)  ; pour key_performance =2
34         for pt = 0L, n_elements(lx)-1 do BEGIN
35            i = lx[pt] & j = ly[pt]
36            plots, [xf[i, j-1], xf[i, j]], [yf[i, j-1], yf[i, j]] $
37              , color = coast_color, thick = coast_thick, /normal, _extra = ex
38         endfor
39         IF testvar(var = key_performance) EQ 2 THEN $
40          print, 'temps tracecote: trace des traits verticaux', systime(1)-tempdeux
41      endif
42   ENDIF
43;
44; pour le trace des segments horizontaux, c''est la meme chose sauf
45; qu'il faut faire attention si on est periodique:
46;
47; si on est periodique on duplique la premiere colonne et on la met a
48; la fin. (ceci est fait non pas pour le shift qui est par defaut
49; periodique mais pour le plots
50   tempdeux = systime(1)        ; pour key_performance =2
51   if keyword_set(key_periodic) AND nx EQ jpi then begin
52      mask = [mask, mask[0, *]]
53      xf = [xf, xf[0, *]]
54      yf = [yf, yf[0, *]]
55      nx = nx+1
56   ENDIF
57   if NOT keyword_set(xseuil) then xseuil = 5. < (min([nx, ny])-2)
58   distanceseuil = (!p.position[2]-!p.position[0])/xseuil
59   liste = where((mask+shift(mask, 0, -1)) EQ 1 $
60                 AND ((xf-shift(xf, 1, 0))^2+(yf-shift(yf, 1, 0))^2) LE distanceseuil^2)
61   IF liste[0] NE -1 THEN BEGIN
62      ly = liste/nx & lx = temporary(liste)-nx*ly
63      indice = where(ly NE ny-1 AND lx NE 0)
64      if indice[0] NE -1 then begin
65; on ne prend pas les points de la
66; premiere colonne et de la derniere ligne (car on l''a rajoute artificiellement!))
67         lx = lx[indice] & ly = ly[temporary(indice)]
68         IF testvar(var = key_performance) EQ 2 THEN $
69          print, 'temps tracecote: determiner liste des points concernes par un trait horizontal', systime(1)-tempdeux
70         tempdeux = systime(1)  ; pour key_performance =2
71         for pt = 0L, n_elements(lx)-1 do BEGIN
72            i = lx[pt] & j = ly[pt]
73            plots, [xf[i-1, j], xf[i, j]], [yf[i-1, j], yf[i, j]] $
74              , color = coast_color, thick = coast_thick, /normal, _extra = ex
75         endfor
76         IF testvar(var = key_performance) EQ 2 THEN $
77          print, 'temps tracecote: trace des traits horizontaux', systime(1)-tempdeux
78      endif
79   endif
80;---------------------------------------------------------
81   if keyword_set(key_performance) THEN print, 'temps drawcoast_c', systime(1)-tempsun
82   return
83end
Note: See TracBrowser for help on using the repository browser.