source: trunk/PLOTS/symbols.pro @ 2

Last change on this file since 2 was 2, checked in by opalod, 22 years ago

Initial revision

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