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

Last change on this file since 314 was 262, checked in by pinsard, 17 years ago

corrections of some headers and parameters and keywords case. change of pro2href to replace proidl

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