1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
C
C
C +-----------------------------------------------------------------+
C | |
C | Copyright (C) 1986 by UCAR |
C | University Corporation for Atmospheric Research |
C | All Rights Reserved |
C | |
C | NCARGRAPHICS Version 1.00 |
C | |
C +-----------------------------------------------------------------+
C
C
C ---------------------------------------------------------------------
C
SUBROUTINE AGCURV (XVEC,IIEX,YVEC,IIEY,NEXY,KDSH)
C
DIMENSION XVEC(1),YVEC(1)
C
C AGCURV plots the curve defined by the points ((X(I),Y(I)),I=1,NEXY),
C where, if the primary parameter 'INVERT.' is zero,
C
C X(I)=XVEC(1+(I-1)*IIEX) (unless IIEX=0, in which case X(I)=I), and
C Y(I)=YVEC(1+(I-1)*IIEY) (unless IIEY=0, in which case Y(I)=I).
C
C If 'INVERT.' is non-zero, the definitions are interchanged, so that
C
C X(I)=YVEC(1+(I-1)*IIEY) (unless IIEY=0, in which case X(I)=I), and
C Y(I)=XVEC(1+(I-1)*IIEX) (unless IIEX=0, in which case Y(I)=I).
C
C If, for some I, X(I)=SVAL or Y(I)=SVAL, curve line segments having
C (X(I),Y(I)) as an endpoint are omitted.
C
C If the primary parameter 'WINDOW.' is zero, AGKURV is called; it does
C no windowing. If 'WINDOW.' is non-zero, AGQURV is called; it omits
C portions of the curve which fall outside the current curve window.
C
C The argument KDSH specifies the dash pattern to be used. If KDSH is
C negative, the function MOD(IABS(KDSH),26) is used to select a solid
C line interrupted by one of the alphabetic characters. If KDSH is
C zero, the user is assumed to have done his own DASHD call. If KDSH
C is positive, the function MOD(KDSH,NODP) is used to select one of the
C dash patterns in the parameter group 'DASH/PATTERNS.'.
C
C The following common block contains the AUTOGRAPH control parameters,
C all of which are real. If it is changed, all of AUTOGRAPH (especially
C the routine AGSCAN) must be examined for possible side effects.
C
COMMON /AGCONP/ QFRA,QSET,QROW,QIXY,QWND,QBAC , SVAL(2) ,
+ XLGF,XRGF,YBGF,YTGF , XLGD,XRGD,YBGD,YTGD , SOGD ,
+ XMIN,XMAX,QLUX,QOVX,QCEX,XLOW,XHGH ,
+ YMIN,YMAX,QLUY,QOVY,QCEY,YLOW,YHGH ,
+ QDAX(4),QSPA(4),PING(4),PINU(4),FUNS(4),QBTD(4),
+ BASD(4),QMJD(4),QJDP(4),WMJL(4),WMJR(4),QMND(4),
+ QNDP(4),WMNL(4),WMNR(4),QLTD(4),QLED(4),QLFD(4),
+ QLOF(4),QLOS(4),DNLA(4),WCLM(4),WCLE(4) ,
+ QODP,QCDP,WOCD,WODQ,QDSH(26) ,
+ QDLB,QBIM,FLLB(10,8),QBAN ,
+ QLLN,TCLN,QNIM,FLLN(6,16),QNAN ,
+ XLGW,XRGW,YBGW,YTGW , XLUW,XRUW,YBUW,YTUW ,
+ XLCW,XRCW,YBCW,YTCW , WCWP,HCWP,SCWP ,
+ XBGA(4),YBGA(4),UBGA(4),XNDA(4),YNDA(4),UNDA(4),
+ QBTP(4),BASE(4),QMNT(4),QLTP(4),QLEX(4),QLFL(4),
+ QCIM(4),QCIE(4),RFNL(4),WNLL(4),WNLR(4),WNLB(4),
+ WNLE(4),QLUA(4) ,
+ RBOX(6),DBOX(6,4),SBOX(6,4)
C
C Declare the block data routine external to force it to load.
C
C +NOAO
C EXTERNAL AGDFLT
C -NOAO
C
C DASH receives alphabetic dash patterns.
C
CHARACTER*10 DASH
C
C ALPH contains an alphabet.
C
CHARACTER*26 ALPH
C
DATA ALPH / 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' /
C
C +NOAO - replace blockdata with run time initialization.
call agdflt
C -NOAO
C
C Check for an alphabetic dash pattern.
C
IF (KDSH.LT.0) THEN
IDSH=MOD(-KDSH-1,26)+1
IPSN=MOD(3*IDSH-1,10)+1
DASH='$$$$$$$$$$'
DASH(IPSN:IPSN)=ALPH(IDSH:IDSH)
CALL AGSTCH (DASH,10,IDCS)
CALL AGDASH (FLOAT(IDCS),WODQ,WOCD,SCWP)
CALL AGDLCH (IDCS)
C
C Check for a dash pattern from the group "DASH/PATTERNS."
C
ELSE IF (KDSH.GT.0) THEN
IDSH=MOD(KDSH-1,IFIX(QODP))+1
CALL AGDASH (QDSH(IDSH),WODQ,WOCD,SCWP)
C
END IF
C
C Now that the dash pattern is determined, do the SET call.
C
CALL SET (XLCW,XRCW,YBCW,YTCW,XLUW,XRUW,YBUW,YTUW,
+ 1+IABS(IFIX(QLUX))*2+IABS(IFIX(QLUY)))
C
C Give the user a chance to modify the curve (by changing line style,
C color, etc.).
C
CALL AGCHCU (0,KDSH)
C
C Decide whether AGKURV or AGQURV is to draw the curve.
C
IF (QWND.EQ.0.) THEN
C
C No windowing requested - AGKURV is used.
C
IF (QIXY.EQ.0.) THEN
CALL AGKURV (XVEC,IIEX,YVEC,IIEY,NEXY,SVAL(1))
ELSE
CALL AGKURV (YVEC,IIEY,XVEC,IIEX,NEXY,SVAL(1))
END IF
C
ELSE
C
C Windowing requested - AGQURV is used.
C
IF (QIXY.EQ.0.) THEN
CALL AGQURV (XVEC,IIEX,YVEC,IIEY,NEXY,SVAL(1))
ELSE
CALL AGQURV (YVEC,IIEY,XVEC,IIEX,NEXY,SVAL(1))
END IF
C
END IF
C
C Give the user a chance to change back what he changed above.
C
CALL AGCHCU (1,KDSH)
C
C Done.
C
RETURN
C
END
|