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