A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / polar.ft
1 C \ e-+-+-+-+-+ P O L A R . F T -+-+-+-+-+
2 C
3 C * OR 4-MAR-1984 HA.
4 C
5 C AUFRUF: CALL POLAR (RAD,WINK,NPTS,INC,LINTYP,INTEG,RMAX,SCAL)
6 C
7 C RAD: FELD, IN DEM DIE RADIALKOMPONENTEN DER ZU ZEICHNENDEN
8 C KURVE GESPEICHERT SIND.
9 C
10 C WINK: FELD, IN DEM DIE IM BOGENMASS GEMESSENEN WINKELGROESSEN
11 C GESPEICHERT SIND.
12 C
13 C NPTS: ANZAHL DER FELDELEMNTE VON RAD UND WINK
14 C
15 C INC: SCHRITTWEITE IN DEN BEIDEN FELDERN RAD, WINK.
16 C
17 C LINTYP: SPEZIFIZIERT DIE ZEICHENART DER KURVE.
18 C
19 C LINTYP>0: DIE KOORDINATENPUNKTE WERDEN DURCH EINE LINIE
20 C VERBUNDEN UND JEDER N-TE PUNKT (N=LINTYP) AUS DER REIHE
21 C DER PUNKTE, DIE ZUM ZEICHNEN DER KURVE BENOETIGT WERDEN, WIRD
22 C MIT EINEM SYMBOL VERSEHEN.
23 C
24 C LINTYP=0: ALLE KOORDINATEN PUNKTE WERDEN DURCH EINE LINIE VERBUNDEN.
25 C SYMBOLE WERDEN NICHT GEZEICHNET.
26 C
27 C LINTYP<0: JEDER N-TE (N=ABS(LINTYP)) DER PUNKTE, DIE ZUM ZEICHNEN
28 C DER KURVE BENOETIGT WERDEN, WIRD MIT EINEM SYMBOL VERSEHEN.
29 C DAS ZEICHNEN DER KURVE SELBST UNTERBLEIBT.
30 C
31 C INTEG: ERHAELT EINEN WERT ZWISCHEN 0 UND 15. HIERDURCH WIRD
32 C BEI LINTYP.NE.0 DAS SYMBOL SPEZIFIZIERT, DAS BEI DEN DURCH
33 C LINTYP AUSGEWAEHLTEN PUNKTEN GEZEICHNET WERDEN SOLL.
34 C SIEHE HIERZU SYMBOL ROUTINE.
35 C
36 C RMAX: IST RMAX>0, SO WIRD AUCH DAS ZUR KURVE GEHOERIGE KOORDINATEN-
37 C SYSTEM GEZEICHNET. DESSEN ACHSEN VERLAUFEN PARALLEL ZUR X-,
38 C BZW. Y-PLOTTERACHSEUND HABEN JEWEILS DIE LAENGE RMAX.
39 C DURCH CALL PLOT(X,Y,-3) MUSS DER BENUTZER DEN URSPRUNG (X,Y)
40 C SEINES KOORDINATENSYSTEMS SELBST DEFINIEREN. EIN MASSTABSFAKTOR
41 C ZUM ZEICHNEN DER KURVE WIRD VON POLAR DERART BESTIMMT, DASS DIE
42 C GESAMMTE ZEICHNUNG PLATZ FINDET.
43 C
44 C RMAX=0: ES WIRD KEIN KOORDINATENSYSTEM GEZEICHNET. ZUM ZEICHNEN DER
45 C KURVE WIRD ALS MASSSTABSFAKTOR DER WERT VON SCAL BENUTZT.
46 C
47 C RMAX<0: ES WIRD KEIN KOORDINATEN SYSTEM GEZEICHNET. ZU ZEICHNEN
48 C DER KURVE WIRD EIN MASSSTABSFAKTOR WIE FUER RMAX>0 BESTIMMT.
49 C
50 C SCAL:: MASSTABSFAKTOR ZUM ZEICHNEN DER KURVE. ER HAT NUR BEDEUTUNG,
51 C WENN RMAX=0 IST.
52 C
53 SUBROUTINE POLAR(RAD,WINK,NPTS,INC,LINTYP,INTEG,RMAX,SCAL)
54 REAL RAD(NPTS),WINK(NPTS),RMAX,SCAL
55 INTEGER NPTS,INC,LINTYP,INTEG
56 C
57 C
58 REAL X,Y,SKAL
59 INTEGER I,NPT,PENPOS,PENUP,PENDWN
60 DATA PENUP,PENDWN /3,2/
61 C
62 SKAL=SCAL @ THE DEFAULT FACTOR
63 IF (RMAX.EQ.0) GOTO 20 @ NO AXIS AT ALL, TAKE SCAL FOR SCALING
64 C
65 SKAL=0 @ NOW WE COMPUTE THE SCALE FACTOR
66 DO 15 I=1,NPTS,INC
67 15 SKAL=AMAX1(SKAL,ABS(RAD(I))) @ HERE WE SEARCH FOR THE MAXIMUM OF RADIANTS
68 SKAL=ABS(RMAX)/SKAL @ AND THIS IS THE NEW FACTOR
69 C
70 20 CONTINUE @ SCALE FACTOR IS STORED IN SKAL
71 PENPOS=PENUP @ THE FISRT POINT IS ALWAYS PLOTTED WITH PEN UP
72 NPT=0
73 DO 25 I=1,NPTS,INC
74 W=WINK(I)
75 X=RAD(I)*SKAL*COS(W) @ AND NOW WE COMPUTE X AND Y COMPONNENTS
76 Y=RAD(I)*SKAL*SIN(W)
77 IF (LINTYP) 30,40,50 @ HERE WE DECIDE HOW TO PLOTTC
78 30 IF(MOD(NPT,ABS(LINTYP)).NE.0) GOTO 25
79 CALL SYMBOL(X,Y,.4,INTEG,0,-1) @ LINTYP<0, SINGLE SYMBOL ONLY
80 GOTO 25
81 C
82 40 CALL XYPLOT(X,Y,PENPOS) @ LINTYP=0, LINE ONLY
83 PENPOS=PENDWN
84 GOTO 25
85 C
86 50 CALL XYPLOT(X,Y,PENPOS) @ LINTYP>0, LINE+SYMBOL
87 PENPOS=PENDWN
88 IF (MOD(NPT,LINTYP).NE.0) GOTO 25
89 CALL SYMBOL (X,Y,.4,INTEG,0,-1)
90 C
91 25 NPT=NPT+1 @ HERE WE COUNT THE NUMBER OF POINTS SCANNED
92 RETURN
93 END
94 \1a