SUBROUTINE REVCOT(IX,IY,X,Y) LOGICAL DEC 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 E=2.7182818284 DX=FLOAT(IX-KMINSX)/TRFACX DY=FLOAT(IY-KMINSY)/TRFACY KEY=KEYCON IF(KEYCON .LT. 1)KEY=5 IF(KEYCON .GT. 4)KEY=4 C * LINEAR LOG POLAR USER ERROR GO TO(300, 400, 500, 600, 100 ),KEY C * ERROR 100 X=IX Y=IY GO TO 700 C * LINEAR 300 X=DX+TMINVX Y=DY+TMINVY GO TO 700 C * LOG SCALES 400 KEYL=TRPAR1 X=DX+TMINVX Y=DY+IMINVY IF(KEYL .NE. 2)X=E**(DX+TRPAR2) IF(KEYL .NE. 1)Y=E**(DY+TRPAR3) GO TO 700 C * POLAR 500 DX=FLOAT(IX)-TRPAR3 DY=FLOAT(IY)-TRPAR4 Y=ATAN2(DY,DX)*57.2957795131 X=SQRT(DY*DY+DX*DX)/TRFACX+TRPAR5 C * ADJUST ANGLE MOD 2 PI TO VALUE WITHIN WINDOW DEC=.FALSE. 510 IF(Y .GT. TRPAR1) GO TO 530 C * INCREMENT ANGLE Y=Y+360.0 GO TO 510 530 IF(Y .LE.TRPAR2) GO TO 550 C * DECREMENT ANGLE Y=Y-360.0 DEC=.TRUE. GO TO 530 550 IF(DEC .AND. Y .LT. TRPAR1)Y=Y+360.0 IF(TMINVX .GE. 0.)GO TO 560 TR1A=AMOD(TRPAR1+180.,360.) TR2A=AMOD(TRPAR2+180.,360.) IF(Y.GT.AMAX1(TR1A,TR2A).OR.Y.LT.AMIN1(TR1A,TR2A))GO TO 560 Y=AMOD(Y+180.,360.) X=-X 560 Y=Y/TRFACY+TRPAR6 GO TO 700 C * USER CONVERSION 600 CONTINUE C CALL UREVCT(IX,IY,X,Y) C * EXIT POINT 700 CALL PCLIPT(X,Y) RETURN END