[2] | 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 | ;- |
---|
| 51 | pro symbols,nsym,scale,color=col |
---|
[114] | 52 | ; |
---|
| 53 | compile_opt idl2, strictarrsubs |
---|
| 54 | ; |
---|
[2] | 55 | on_error,2 |
---|
| 56 | fill = 0 |
---|
| 57 | case 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 |
---|
[114] | 70 | xarr[1] = 10. |
---|
| 71 | xarr[2] = 6. |
---|
| 72 | yarr[2] = 2. |
---|
[2] | 73 | ;nsyms greater than 10 should be filled arrows |
---|
| 74 | if nsym gt 10 then begin |
---|
[114] | 75 | xarr[3] = 6. |
---|
| 76 | xarr[4] = 10. |
---|
| 77 | yarr[3] = -2. |
---|
[2] | 78 | fill = 1 |
---|
| 79 | endif else begin |
---|
[114] | 80 | xarr[3] = 10. |
---|
| 81 | xarr[4] = 6. |
---|
| 82 | yarr[4] = -2. |
---|
[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) |
---|
[114] | 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 |
---|
[2] | 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 |
---|
[114] | 129 | xarr[1] = -3. |
---|
| 130 | xarr[2] = -3. |
---|
| 131 | yarr[2] = -3. |
---|
| 132 | yarr[3] = -3. |
---|
[2] | 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. |
---|
[114] | 144 | xarr[1] = 6./2. |
---|
| 145 | xarr[2] = 0. |
---|
| 146 | yarr[2] = 6.*sqrt(3.)/2. - 6./4. |
---|
[2] | 147 | if nsym eq 32 then fill = 1 |
---|
| 148 | end |
---|
| 149 | else: begin |
---|
| 150 | xarr = fltarr(2) + 1 |
---|
| 151 | yarr = xarr * 0. |
---|
[114] | 152 | xarr[1] = -1. |
---|
[2] | 153 | end |
---|
| 154 | endcase |
---|
| 155 | ; |
---|
| 156 | xarr = xarr * scale |
---|
| 157 | yarr = yarr * scale |
---|
| 158 | ; |
---|
| 159 | ;set symbol buffer |
---|
| 160 | if keyword_set(col) then usersym,xarr,yarr,fill=fill,color=col else $ |
---|
| 161 | usersym,xarr,yarr,fill=fill |
---|
| 162 | ; |
---|
| 163 | return |
---|
| 164 | end |
---|