CTITLEAXIS -- PLOT AXIS 00010001 C*********************************************************************** C COPYRIGHT ATLANTIC RICHFIELD COMPANY 1991 * C*********************************************************************** CA AUTHOR UNKNOWN 00020001 CA DESIGNER UNKNOWN 00030001 CA LANGUAGE FORTRAN 00040001 CA SYSTEM IBM AND CRAY 00050001 CA WRITTEN UNKNOWN 00060001 C REVISED 01-24-86 ESN. FOR THE CRAY. 00070001 C REVISED XX-XX-XX III. ... 00080001 CA 00090001 CA 00100001 CA CALL AXIS (XPAGE, YPAGE, IBCD, NCHAR, AXLEN, ANGLE, 00110001 CA FIRSTV, DELTA) 00120001 CA 00130001 CA INPUT XPAGE = X COORDINATE. R4 00140001 CA INPUT YPAGE = Y COORDINATE. R4 00150001 CA INPUT IBCD = ARRAY OF CHARACTER ANNOTATION. I4 00160001 CA INPUT NCHAR = NUMBER OF CHARACTERS IN IBCD. I4 00170001 CA INPUT AXLEN = AXIS LENGTH. R4 00180001 CA INPUT ANGLE = ANGLE OF AXIS. R4 00190001 CA INPUT FIRSTV = FIRST ANNOTATION VALUE. R4 00200001 CA INPUT DELTA = ANNOTATION INCREMENT. R4 00210001 CA 00220001 CA 00230001 CA AXIS PLOTS AN AXIS. 00240001 CAEND 00250001 SUBROUTINE AXIS(XPAGE,YPAGE,IBCD,NCHAR,AXLEN,ANGLE,FIRSTV,DELTA) 00260001 C 00270001 DIMENSION IBCD(1),IBCD10(2) 00280001 C 00290001 DATA IBCD10/4H *1,4H0 / 00300001 C 00310001 C DEFINE ARITHMETIC FUNCTIONS 00320001 C 00330001 XCOORD(X,Y) = XPAGE + X*COSA - Y*SINA 00340001 YCOORD(X,Y) = YPAGE + X*SINA + Y*COSA 00350001 C 00360001 C INITIALIZATION 00370001 C 00380001 ALPHA = ANGLE/57.2958 00390001 SINA = SIN(ALPHA) 00400001 COSA = COS(ALPHA) 00410001 CSIGN = 1.0 00420001 IF (NCHAR .LT. 0) CSIGN = -1.0 00430001 C 00440001 C DETERMINE SCALE FOR AXIS NUMBERS 00450001 C 00460001 100 NEXP = 0 00470001 DEL = ABS(DELTA) 00480001 IF (DEL .NE. 0.0) GO TO 120 00490001 IF (FIRSTV .EQ. 0.0) GO TO 160 00500001 DEL = ABS(FIRSTV) 00510001 120 IF (DEL .GE. 0.01) GO TO 140 00520001 NEXP = NEXP + 1 00530001 DEL = 10.0*DEL 00540001 GO TO 120 00550001 140 IF (DEL .LE. 99.0) GO TO 160 00560001 NEXP = NEXP - 1 00570001 DEL = DEL/10.0 00580001 GO TO 140 00590001 160 PWR10 = 10.0**NEXP 00600001 X1 = FIRSTV*PWR10 00610001 DEL = DELTA*PWR10 00620001 C 00630001 C PLOT AXIS WITH TIC MARKS AND NUMBERS 00640001 C 00650001 200 NTIC = IFIX(AXLEN + 1.001) 00660001 TSIZE = 0.070*CSIGN 00670001 TS = TSIZE*SINA 00680001 TC = TSIZE*COSA 00690001 ZN = 0.0 00700001 XLOC = XPAGE 00710001 YLOC = YPAGE 00720001 YTEMP = 0.150*CSIGN - 0.050 00730001 DO 280 N = 1,NTIC,1 00740001 XVAL = X1 + ZN*DEL 00750001 XTEMP = ZN - 0.100 00760001 XNUM = XCOORD(XTEMP,YTEMP) 00770001 YNUM = YCOORD(XTEMP,YTEMP) 00780001 CALL NUMBER(XNUM,YNUM,0.105,XVAL,ANGLE,2) 00790001 CALL PLOT(XLOC - TS,YLOC + TC,3) 00800001 CALL PLOT(XLOC,YLOC,2) 00810001 ZN = ZN + 1.0 00820001 IF (ZN .GT. AXLEN) ZN = AXLEN 00830001 XLOC = XPAGE + ZN*COSA 00840001 YLOC = YPAGE + ZN*SINA 00850001 CALL PLOT(XLOC,YLOC,2) 00860001 280 CONTINUE 00870001 C 00880001 C PLOT TITLE 00890001 C 00900001 300 NCHR = IABS(NCHAR) 00910001 ICHR = 0 00920001 IF (NEXP .NE. 0) ICHR = 6 00930001 XTEMP = 0.5*AXLEN - 0.07*FLOAT(NCHR + ICHR) 00940001 YTEMP = 0.340*CSIGN - 0.070 00950001 XLOC = XCOORD(XTEMP,YTEMP) 00960001 YLOC = YCOORD(XTEMP,YTEMP) 00970001 CALL SYMBOL(XLOC,YLOC,0.140,IBCD,ANGLE,NCHR) 00980001 IF (NEXP .EQ. 0) GO TO 400 00990001 CALL SYMBOL(999.0,999.0,0.140,IBCD10,ANGLE,5) 01000001 XVAL = - NEXP 01010001 XTEMP = XTEMP + 0.140*FLOAT(NCHR + 5) 01020001 YTEMP = YTEMP + 0.110 01030001 XLOC = XCOORD(XTEMP,YTEMP) 01040001 YLOC = YCOORD(XTEMP,YTEMP) 01050001 CALL NUMBER(XLOC,YLOC,0.070,XVAL,ANGLE,-1) 01060001 C 01070001 400 RETURN 01080001 C 01090001 END 01100001