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

Last change on this file since 256 was 231, checked in by pinsard, 17 years ago

improvements/corrections of some *.pro headers

  • 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.