C -+-+-+-+-+ P O L A R . F T -+-+-+-+-+ C C * OR 4-MAR-1984 HA. C C AUFRUF: CALL POLAR (RAD,WINK,NPTS,INC,LINTYP,INTEG,RMAX,SCAL) C C RAD: FELD, IN DEM DIE RADIALKOMPONENTEN DER ZU ZEICHNENDEN C KURVE GESPEICHERT SIND. C C WINK: FELD, IN DEM DIE IM BOGENMASS GEMESSENEN WINKELGROESSEN C GESPEICHERT SIND. C C NPTS: ANZAHL DER FELDELEMNTE VON RAD UND WINK C C INC: SCHRITTWEITE IN DEN BEIDEN FELDERN RAD, WINK. C C LINTYP: SPEZIFIZIERT DIE ZEICHENART DER KURVE. C C LINTYP>0: DIE KOORDINATENPUNKTE WERDEN DURCH EINE LINIE C VERBUNDEN UND JEDER N-TE PUNKT (N=LINTYP) AUS DER REIHE C DER PUNKTE, DIE ZUM ZEICHNEN DER KURVE BENOETIGT WERDEN, WIRD C MIT EINEM SYMBOL VERSEHEN. C C LINTYP=0: ALLE KOORDINATEN PUNKTE WERDEN DURCH EINE LINIE VERBUNDEN. C SYMBOLE WERDEN NICHT GEZEICHNET. C C LINTYP<0: JEDER N-TE (N=ABS(LINTYP)) DER PUNKTE, DIE ZUM ZEICHNEN C DER KURVE BENOETIGT WERDEN, WIRD MIT EINEM SYMBOL VERSEHEN. C DAS ZEICHNEN DER KURVE SELBST UNTERBLEIBT. C C INTEG: ERHAELT EINEN WERT ZWISCHEN 0 UND 15. HIERDURCH WIRD C BEI LINTYP.NE.0 DAS SYMBOL SPEZIFIZIERT, DAS BEI DEN DURCH C LINTYP AUSGEWAEHLTEN PUNKTEN GEZEICHNET WERDEN SOLL. C SIEHE HIERZU SYMBOL ROUTINE. C C RMAX: IST RMAX>0, SO WIRD AUCH DAS ZUR KURVE GEHOERIGE KOORDINATEN- C SYSTEM GEZEICHNET. DESSEN ACHSEN VERLAUFEN PARALLEL ZUR X-, C BZW. Y-PLOTTERACHSEUND HABEN JEWEILS DIE LAENGE RMAX. C DURCH CALL PLOT(X,Y,-3) MUSS DER BENUTZER DEN URSPRUNG (X,Y) C SEINES KOORDINATENSYSTEMS SELBST DEFINIEREN. EIN MASSTABSFAKTOR C ZUM ZEICHNEN DER KURVE WIRD VON POLAR DERART BESTIMMT, DASS DIE C GESAMMTE ZEICHNUNG PLATZ FINDET. C C RMAX=0: ES WIRD KEIN KOORDINATENSYSTEM GEZEICHNET. ZUM ZEICHNEN DER C KURVE WIRD ALS MASSSTABSFAKTOR DER WERT VON SCAL BENUTZT. C C RMAX<0: ES WIRD KEIN KOORDINATEN SYSTEM GEZEICHNET. ZU ZEICHNEN C DER KURVE WIRD EIN MASSSTABSFAKTOR WIE FUER RMAX>0 BESTIMMT. C C SCAL:: MASSTABSFAKTOR ZUM ZEICHNEN DER KURVE. ER HAT NUR BEDEUTUNG, C WENN RMAX=0 IST. C SUBROUTINE POLAR(RAD,WINK,NPTS,INC,LINTYP,INTEG,RMAX,SCAL) REAL RAD(NPTS),WINK(NPTS),RMAX,SCAL INTEGER NPTS,INC,LINTYP,INTEG C C REAL X,Y,SKAL INTEGER I,NPT,PENPOS,PENUP,PENDWN DATA PENUP,PENDWN /3,2/ C SKAL=SCAL @ THE DEFAULT FACTOR IF (RMAX.EQ.0) GOTO 20 @ NO AXIS AT ALL, TAKE SCAL FOR SCALING C SKAL=0 @ NOW WE COMPUTE THE SCALE FACTOR DO 15 I=1,NPTS,INC 15 SKAL=AMAX1(SKAL,ABS(RAD(I))) @ HERE WE SEARCH FOR THE MAXIMUM OF RADIANTS SKAL=ABS(RMAX)/SKAL @ AND THIS IS THE NEW FACTOR C 20 CONTINUE @ SCALE FACTOR IS STORED IN SKAL PENPOS=PENUP @ THE FISRT POINT IS ALWAYS PLOTTED WITH PEN UP NPT=0 DO 25 I=1,NPTS,INC W=WINK(I) X=RAD(I)*SKAL*COS(W) @ AND NOW WE COMPUTE X AND Y COMPONNENTS Y=RAD(I)*SKAL*SIN(W) IF (LINTYP) 30,40,50 @ HERE WE DECIDE HOW TO PLOTTC 30 IF(MOD(NPT,ABS(LINTYP)).NE.0) GOTO 25 CALL SYMBOL(X,Y,.4,INTEG,0,-1) @ LINTYP<0, SINGLE SYMBOL ONLY GOTO 25 C 40 CALL XYPLOT(X,Y,PENPOS) @ LINTYP=0, LINE ONLY PENPOS=PENDWN GOTO 25 C 50 CALL XYPLOT(X,Y,PENPOS) @ LINTYP>0, LINE+SYMBOL PENPOS=PENDWN IF (MOD(NPT,LINTYP).NE.0) GOTO 25 CALL SYMBOL (X,Y,.4,INTEG,0,-1) C 25 NPT=NPT+1 @ HERE WE COUNT THE NUMBER OF POINTS SCANNED RETURN END