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