source: trunk/SRC/ToBeReviewed/PLOTS/symbols.pro @ 134

Last change on this file since 134 was 134, checked in by navarro, 18 years ago

change *.pro file properties (del eof-style, del executable, set keywords Id

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 5.7 KB
Line 
1;+
2; NAME:
3;
4;         SYMBOLS
5;         
6; PURPOSE:
7;
8;         Create custom plotting symbols
9;         
10; CALLING SEQUENCE:
11;
12;         SYMBOLS,SYMBOL_NUMBER,SCALE
13;           
14; INPUTS:
15;        SYMBOL_NUMBER:
16;       
17;                1 = open circle
18;                2 = filled circle
19;                3 = arrow pointing right
20;                4 = arrow pointing left
21;                5 = arrow pointing up
22;                6 = arrow pointing down
23;                7 = arrow pointing up and left (45 degrees)
24;                8 = arrow pointing down and left
25;                9 = arrow pointing down and right.
26;                10 = arrow pointing up and right.
27;                11 through 18 are bold versions of 3 through 10
28;                19 = horizontal line
29;                20 = box
30;                21 = diamond
31;                22 = triangle
32;                30 = filled box
33;                31 = filled diamond
34;                32 = filled triangle
35;               
36;        SCALE - size of symbols.
37;       
38; KEYWORD PARAMETERS:
39;
40;               COLOR - color of symbols
41;               
42; SIDE EFFECTS:
43;
44;           The desired symbol is stored in the user buffer and
45;           will be plotted if !P.PSYM = 8.
46;
47; MODIFICATION HISTORY:
48;
49;               Jeff Bennett, U of Colorado, 198?
50;-
51pro symbols,nsym,scale,color=col
52;
53  compile_opt idl2, strictarrsubs
54;
55on_error,2
56fill = 0
57case 1 of
58     (nsym le 2):   begin                         ;circles
59                      ;for large scales increase number of points for res.
60                      if scale ge 4 then a = findgen(25) else $
61                      a = findgen(13)
62                      a = a * (3.14159 / 6.)       ;(0 - 12 or 24) pi/6
63                      xarr = cos(a)
64                      yarr = sin(a)
65                      if nsym eq 2 then fill = 1
66                    end
67     ((nsym ge 3)*(nsym le 18)):   begin           ;arrow heads
68                      xarr = fltarr(5)
69                      yarr = xarr
70                      xarr[1] = 10.
71                      xarr[2] = 6.
72                      yarr[2] = 2.
73                      ;nsyms greater than 10 should be filled arrows
74                      if nsym gt 10 then begin
75                         xarr[3] = 6.
76                         xarr[4] = 10.
77                         yarr[3] = -2.
78                         fill = 1
79                      endif else begin
80                         xarr[3] = 10.
81                         xarr[4] = 6.
82                         yarr[4] = -2.
83                      endelse
84                      case 1 of
85                         (nsym eq 3): dummy = 0b
86                         (nsym eq 4): xarr = -1.*xarr
87                         ((nsym eq 11)+(nsym eq 12)): begin
88                            xarr = extrac(xarr,0,11)
89                            yarr = extrac(yarr,0,11)
90                            yarr[6] = 0.5
91                            xarr[7] = 6
92                            yarr[7] = 0.5
93                            xarr[8] = 6
94                            yarr[8] = -0.5
95                            yarr[9] = -0.5
96                            if nsym eq 12 then begin
97                               rotation,xarr,yarr,180,nx,ny
98                               xarr = nx
99                               yarr = ny
100                            endif
101                                                     end
102                         ((nsym eq 5)+(nsym eq 13)): begin
103                            temp = xarr
104                            xarr = yarr
105                            yarr = temp
106                                                     end
107                         ((nsym eq 6)+(nsym eq 14)): begin
108                            temp = -1.*xarr
109                            xarr = yarr
110                            yarr = temp
111                                                     end
112                         ((nsym ge 7)*(nsym le 10) + $
113                         (nsym ge 15)*(nsym le 18)): begin
114                            case 1 of
115                                 ((nsym eq 7)+(nsym eq 15)): deg = 45
116                                 ((nsym eq 8)+(nsym eq 16)): deg = 135
117                                 ((nsym eq 9)+(nsym eq 17)): deg = 225
118                                 ((nsym eq 10)+(nsym eq 18)): deg = 315
119                            endcase
120                            rotation,xarr,yarr,deg,nx,ny
121                            xarr = nx
122                            yarr = ny
123                                                  end   ;end nsym ge 7
124                      endcase
125                                   end    ;nsym between 3 and 18
126     ((nsym eq 20)+(nsym eq 21)+(nsym eq 30)+(nsym eq 31)):  begin
127                      xarr = fltarr(5) + 3
128                      yarr = xarr
129                      xarr[1] = -3.
130                      xarr[2] = -3.
131                      yarr[2] = -3.
132                      yarr[3] = -3.
133                      if (nsym eq 21)+(nsym eq 31) then begin
134                         rotation,xarr,yarr,45,nx,ny
135                         nx = 0.70 * nx     ;shrink the x direction
136                         xarr = nx
137                         yarr = ny
138                      endif
139                      if nsym ge 30 then fill = 1
140                                   end    ;nsym 20,21,30,31
141     ((nsym eq 22)+(nsym eq 32)):  begin  ;side length 6, 0 at centroid
142                      yarr = fltarr(4) - 6./4.
143                      xarr = fltarr(4) - 6./2.
144                      xarr[1] = 6./2.
145                      xarr[2] = 0.
146                      yarr[2] = 6.*sqrt(3.)/2. - 6./4.
147                      if nsym eq 32 then fill = 1
148                                    end
149     else:                          begin
150                      xarr = fltarr(2) + 1
151                      yarr = xarr * 0.
152                      xarr[1] = -1.
153                                    end
154endcase
155;
156xarr = xarr * scale
157yarr = yarr * scale
158;
159;set symbol buffer
160if keyword_set(col) then usersym,xarr,yarr,fill=fill,color=col else $
161  usersym,xarr,yarr,fill=fill
162;
163return
164end
Note: See TracBrowser for help on using the repository browser.