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

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

modification of some headers (+some corrections) to prepare usage of the new idldoc

  • 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;-
44PRO symbols, nsym, scale, COLOR=col
45;
46  compile_opt idl2, strictarrsubs
47;
48on_error,2
49fill = 0
50case 1 of
51     (nsym le 2):   begin                         ;circles
52                      ;for large scales increase number of points for res.
53                      if scale ge 4 then a = findgen(25) else $
54                      a = findgen(13)
55                      a = a * (3.14159 / 6.)       ;(0 - 12 or 24) pi/6
56                      xarr = cos(a)
57                      yarr = sin(a)
58                      if nsym eq 2 then fill = 1
59                    end
60     ((nsym ge 3)*(nsym le 18)):   begin           ;arrow heads
61                      xarr = fltarr(5)
62                      yarr = xarr
63                      xarr[1] = 10.
64                      xarr[2] = 6.
65                      yarr[2] = 2.
66                      ;nsyms greater than 10 should be filled arrows
67                      if nsym gt 10 then begin
68                         xarr[3] = 6.
69                         xarr[4] = 10.
70                         yarr[3] = -2.
71                         fill = 1
72                      endif else begin
73                         xarr[3] = 10.
74                         xarr[4] = 6.
75                         yarr[4] = -2.
76                      endelse
77                      case 1 of
78                         (nsym eq 3): dummy = 0b
79                         (nsym eq 4): xarr = -1.*xarr
80                         ((nsym eq 11)+(nsym eq 12)): begin
81                            xarr = extrac(xarr,0,11)
82                            yarr = extrac(yarr,0,11)
83                            yarr[6] = 0.5
84                            xarr[7] = 6
85                            yarr[7] = 0.5
86                            xarr[8] = 6
87                            yarr[8] = -0.5
88                            yarr[9] = -0.5
89                            if nsym eq 12 then begin
90                               rotation,xarr,yarr,180,nx,ny
91                               xarr = nx
92                               yarr = ny
93                            endif
94                                                     end
95                         ((nsym eq 5)+(nsym eq 13)): begin
96                            temp = xarr
97                            xarr = yarr
98                            yarr = temp
99                                                     end
100                         ((nsym eq 6)+(nsym eq 14)): begin
101                            temp = -1.*xarr
102                            xarr = yarr
103                            yarr = temp
104                                                     end
105                         ((nsym ge 7)*(nsym le 10) + $
106                         (nsym ge 15)*(nsym le 18)): begin
107                            case 1 of
108                                 ((nsym eq 7)+(nsym eq 15)): deg = 45
109                                 ((nsym eq 8)+(nsym eq 16)): deg = 135
110                                 ((nsym eq 9)+(nsym eq 17)): deg = 225
111                                 ((nsym eq 10)+(nsym eq 18)): deg = 315
112                            endcase
113                            rotation,xarr,yarr,deg,nx,ny
114                            xarr = nx
115                            yarr = ny
116                                                  end   ;end nsym ge 7
117                      endcase
118                                   end    ;nsym between 3 and 18
119     ((nsym eq 20)+(nsym eq 21)+(nsym eq 30)+(nsym eq 31)):  begin
120                      xarr = fltarr(5) + 3
121                      yarr = xarr
122                      xarr[1] = -3.
123                      xarr[2] = -3.
124                      yarr[2] = -3.
125                      yarr[3] = -3.
126                      if (nsym eq 21)+(nsym eq 31) then begin
127                         rotation,xarr,yarr,45,nx,ny
128                         nx = 0.70 * nx     ;shrink the x direction
129                         xarr = nx
130                         yarr = ny
131                      endif
132                      if nsym ge 30 then fill = 1
133                                   end    ;nsym 20,21,30,31
134     ((nsym eq 22)+(nsym eq 32)):  begin  ;side length 6, 0 at centroid
135                      yarr = fltarr(4) - 6./4.
136                      xarr = fltarr(4) - 6./2.
137                      xarr[1] = 6./2.
138                      xarr[2] = 0.
139                      yarr[2] = 6.*sqrt(3.)/2. - 6./4.
140                      if nsym eq 32 then fill = 1
141                                    end
142     else:                          begin
143                      xarr = fltarr(2) + 1
144                      yarr = xarr * 0.
145                      xarr[1] = -1.
146                                    end
147endcase
148;
149xarr = xarr * scale
150yarr = yarr * scale
151;
152;set symbol buffer
153if keyword_set(col) then usersym,xarr,yarr,fill=fill,color=col else $
154  usersym,xarr,yarr,fill=fill
155;
156return
157end
Note: See TracBrowser for help on using the repository browser.