aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/autograph/agftol.f
diff options
context:
space:
mode:
authorJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
committerJoe Hunkeler <jhunkeler@gmail.com>2015-08-11 16:51:37 -0400
commit40e5a5811c6ffce9b0974e93cdd927cbcf60c157 (patch)
tree4464880c571602d54f6ae114729bf62a89518057 /sys/gio/ncarutil/autograph/agftol.f
downloadiraf-osx-40e5a5811c6ffce9b0974e93cdd927cbcf60c157.tar.gz
Repatch (from linux) of OSX IRAF
Diffstat (limited to 'sys/gio/ncarutil/autograph/agftol.f')
-rw-r--r--sys/gio/ncarutil/autograph/agftol.f119
1 files changed, 119 insertions, 0 deletions
diff --git a/sys/gio/ncarutil/autograph/agftol.f b/sys/gio/ncarutil/autograph/agftol.f
new file mode 100644
index 00000000..b685f913
--- /dev/null
+++ b/sys/gio/ncarutil/autograph/agftol.f
@@ -0,0 +1,119 @@
+C
+C
+C +-----------------------------------------------------------------+
+C | |
+C | Copyright (C) 1986 by UCAR |
+C | University Corporation for Atmospheric Research |
+C | All Rights Reserved |
+C | |
+C | NCARGRAPHICS Version 1.00 |
+C | |
+C +-----------------------------------------------------------------+
+C
+C
+C ---------------------------------------------------------------------
+C
+ SUBROUTINE AGFTOL (IAXS,IDMA,VINP,VOTP,VLCS,LLUA,UBEG,UDIF,FUNS,
+ + NBTP,SBSE)
+C
+C The routine AGFTOL is used by AGAXIS to map a fractional distance
+C along the axis to a value in the label coordinate system or vice-
+C versa. Its arguments are as follows:
+C
+C -- IAXS specifies which axis is being drawn. It is passed to the
+C routine AGUTOL. See AGAXIS for a complete description of IAXS.
+C
+C -- IDMA specifies the direction of the mapping - from the fractional
+C system to the label system if IDMA .GT. 0 or from the label system
+C to the fractional system if IDMA .LT. 0. IDMA also specifies how
+C the label-system value is given to or returned by AGFTOL.
+C
+C -- If ABSV(IDMA) .EQ. 1, an actual value in the label coordinate
+C system (VLCS) is given to or returned by AGFTOL.
+C
+C -- If ABSV(IDMA) .NE. 1, a value of the exponent/multiplier EXMU
+C corresponding to VLCS is given to or returned by AGFTOL.
+C
+C -- VINP is an input value in one coordinate system.
+C
+C -- VOTP is an output value in the other coordinate system.
+C
+C -- VLCS is an output value in the label coordinate system, returned
+C no matter what the value of IDMA.
+C
+C -- LLUA, UBGA, and UDFA specify the mapping from the user coordinate
+C system to the fractional system and vice-versa. See the routine
+C AGAXIS for a complete description of these parameters.
+C
+C -- FUNS is a function-selector, to be used in calls to AGUTOL. It
+C selects the mapping from the user coordinate system to the label
+C coordinate system and vice-versa. See the routine AGAXIS for a
+C complete description of this parameter.
+C
+C -- NBTP and SBSE specify the mapping of label-coordinate-system values
+C to exponent/multiplier values and vice-versa. See the routine
+C AGNUMB for a complete dexcription of these parameters.
+C
+C Determine desired direction of mapping.
+C
+ IF (IDMA.GT.0) THEN
+C
+C Map axis fraction VINP to a label-coordinate-system value VLCS.
+C
+ VUCS=UBEG+VINP*UDIF
+ IF (LLUA.NE.0) VUCS=10.**VUCS
+ CALL AGUTOL (IAXS,FUNS,1,VUCS,VLCS)
+C
+C If IDMA .EQ. 1, caller wants VLCS - otherwise, map VLCS to the
+C appropriate exponent/multiplier value EXMU - return value in VOTP.
+C
+ IF (IDMA.EQ.1) THEN
+ VOTP=VLCS
+ RETURN
+ END IF
+C
+ GO TO (101,102,103) , NBTP
+C
+ 101 VOTP=VLCS/SBSE
+ RETURN
+C
+ 102 VOTP=ALOG10(VLCS/SBSE)
+ RETURN
+C
+ 103 VOTP=ALOG10(ABS(VLCS))/ALOG10(ABS(SBSE))
+ RETURN
+C
+ ELSE
+C
+C If IDMA .EQ. -1, caller has provided VINP .EQ. VLCS, a value in the
+C label coordinate system - otherwise, VINP .EQ. EXMU, the exponent/
+C multiplier needed to generate VLCS.
+C
+ IF (IDMA.EQ.(-1)) THEN
+ VLCS=VINP
+ GO TO 107
+ END IF
+C
+ GO TO (104,105,106) , NBTP
+C
+ 104 VLCS=SBSE*VINP
+ GO TO 107
+C
+ 105 VLCS=SBSE*10.**VINP
+ GO TO 107
+C
+ 106 VLCS=SIGN(1.,SBSE)*ABS(SBSE)**VINP
+C
+C Map label-system value VLCS to a user-system value VUCS.
+C
+ 107 CALL AGUTOL (IAXS,FUNS,-1,VLCS,VUCS)
+C
+C Map user-system value VUCS to an axis fraction VOTP and return.
+C
+ IF (LLUA.NE.0) VUCS=ALOG10(VUCS)
+ VOTP=(VUCS-UBEG)/UDIF
+ RETURN
+C
+ END IF
+C
+ END