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 | ; |
---|
45 | PRO symbols,nsym,scale,color=col |
---|
46 | ; |
---|
47 | compile_opt idl2, strictarrsubs |
---|
48 | ; |
---|
49 | on_error,2 |
---|
50 | fill = 0 |
---|
51 | case 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 |
---|
148 | endcase |
---|
149 | ; |
---|
150 | xarr = xarr * scale |
---|
151 | yarr = yarr * scale |
---|
152 | ; |
---|
153 | ;set symbol buffer |
---|
154 | if keyword_set(col) then usersym,xarr,yarr,fill=fill,color=col else $ |
---|
155 | usersym,xarr,yarr,fill=fill |
---|
156 | ; |
---|
157 | return |
---|
158 | end |
---|