SUBROUTINE PSCAL COMMON /TKTRNX/ TMINVX,TMINVY,TMAXVX,TMAXVY,TREALX,TREALY, 1 TIMAGX,TIMAGY,TRCOSF,TRSINF,TRSCAL,TRFACX,TRFACY, 2 TRPAR1,TRPAR2,TRPAR3,TRPAR4,TRPAR5,TRPAR6,KMOFLG(8),KPAD2, 3 KBAUDR,KGNFLG,KGRAFL,KHOMEY,KKMODE,KHORSZ,KVERSZ,KTBLSZ, 4 KSIZEF,KLMRGN,KRMRGN,KFACTR,KTERM,KLINE,KZAXIS,KBEAMX,KBEAMY, 5 KMOVEF,KPCHAR(5),KDASHT,KMINSX,KMINSY,KMAXSX,KMAXSY,KEYCON, 6 KINLFT,KOTLFT,KUNIT LOGICAL ANEG ANEG=TRPAR1 .GT. TRPAR2 PIDV2=90.00 C * SET UP UNTRANSLATED TRIAL POLAR WINDOW TRPAR3=0. TRPAR4=0. TRFACY=1. TRPAR6=0. R1=TMINVX R2=TMAXVX RMAX=AMAX1(ABS(R1),ABS(R2)) TRFACX=1000./RMAX THMIN=AMIN1(TRPAR1,TRPAR2) THMAX=AMAX1(TRPAR2,TRPAR1) C * FIND EXTREMES OF THE TRIAL POLAR WINDOW CALL WINCOT(R1,THMIN,IX1,IY1) CALL WINCOT(R1,THMAX,IX2,IY2) CALL WINCOT(R2,THMIN,IX3,IY3) CALL WINCOT(R2,THMAX,IX4,IY4) IXMIN=MIN0(IX1,IX2,IX3,IX4) IXMAX=MAX0(IX1,IX2,IX3,IX4) IYMIN=MIN0(IY1,IY2,IY3,IY4) IYMAX=MAX0(IY1,IY2,IY3,IY4) X=THMIN/PIDV2 IF(THMIN.GT.0.)X=X+.999 QUAD=FLOAT(IFIX(X))*PIDV2 NQUAD=0 C * CHECK EXTREMES OF TRIAL WINDOW AT 90 DEGREE INTERVALS 200 IF(QUAD.GE.THMAX)GO TO 300 NQUAD=NQUAD+1 CALL WINCOT(R1,QUAD,IX1,IY1) CALL WINCOT(R2,QUAD,IX2,IY2) IXMIN=MIN0(IX1,IX2,IXMIN) IXMAX=MAX0(IX1,IX2,IXMAX) IYMIN=MIN0(IY1,IY2,IYMIN) IYMAX=MAX0(IY1,IY2,IYMAX) QUAD=QUAD+PIDV2 IF(NQUAD.LT.4)GO TO 200 C * COMPUTE SREEN AND VIRTUAL RANGES 300 TSRANX=KMAXSX-KMINSX TSRANY=KMAXSY-KMINSY XRANGE=IXMAX-IXMIN YRANGE=IYMAX-IYMIN C * COMPUTE RELATIVE RADIUS SCALE FACTOR FACTOR=AMIN1(ABS(TSRANX)/XRANGE,ABS(TSRANY)/YRANGE) C * COMPUTE SCREEN OFFSETS TRPAR3=FLOAT(KMINSX)-FACTOR*FLOAT(IXMIN) TRPAR4=FLOAT(KMINSY)-FACTOR*FLOAT(IYMIN) C * COMPUTE FINAL RADIUS SCALE FACTOR TRFACX=TRFACX*FACTOR C * COMPUTE ANGLE SCALE FACTOR TRFACY=(TRPAR2-TRPAR1)/(TMAXVY-TMINVY) C * APPLY CORRECT SIGN TO ANGLE SCALE FACTOR TRFACY=SIGN(1.,TSRANX*TSRANY)*TRFACY AANG=0. C * APPLY CORRECTION FOR 'REVERSED' WINDOWS IF(ANEG.AND.TSRANY.LT.0..OR.TSRANX.LT.0..AND..NOT.ANEG)AANG=180. C * COMPUTE ANGLE OFFSET TRPAR6=TMINVY-(TRPAR1+AANG)/TRFACY RETURN END