aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/conlib/constp.f
blob: 8df0e23bacf076895f17c64a67f1c102df372e80 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
SUBROUTINE CONSTP (XD,YD,NDP)
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  COMPUTE STEP SIZE IN X AND Y DIRECTION
C
C
C
      COMMON /CONRA1/ CL(30)     ,NCL        ,OLDZ       ,PV(210)    ,
     1                FINC       ,HI         ,FLO
      COMMON /CONRA2/ REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                ISCALE     ,LOOK       ,PLDVLS     ,GRD        ,
     2                CINC       ,CHILO      ,CON        ,LABON      ,
     3                PMIMX      ,SCALE      ,FRADV      ,EXTRI      ,
     4                BPSIZ      ,LISTOP
      COMMON /CONRA3/ IREC
      COMMON /CONRA4/ NCP        ,NCPSZ
      COMMON /CONRA5/ NIT        ,ITIPV
      COMMON /CONRA6/ XST        ,YST        ,XED        ,YED        ,
     1                STPSZ      ,IGRAD      ,IG         ,XRG        ,
     2                YRG        ,BORD       ,PXST       ,PYST       ,
     3                PXED       ,PYED       ,ITICK
      COMMON /CONRA7/ TITLE      ,ICNT   ,ITLSIZ
      COMMON /CONRA8/ IHIGH      ,INMAJ      ,INLAB      ,INDAT      ,
     1              LEN      ,IFMT       ,LEND       ,
     2                IFMTD      ,ISIZEP     ,INMIN
      COMMON /CONRA9/ ICOORD(500),NP         ,MXXY       ,TR         ,
     1                BR         ,TL         ,BL         ,CONV       ,
     2                XN         ,YN         ,ITLL       ,IBLL       ,
     3                ITRL       ,IBRL       ,XC         ,YC         ,
     4                ITLOC(210) ,JX         ,JY         ,ILOC       ,
     5                ISHFCT     ,XO         ,YO         ,IOC        ,NC
      COMMON /CONR10/ NT         ,NL         ,NTNL       ,JWIPT      ,
     1                JWIWL      ,JWIWP      ,JWIPL      ,IPR        ,
     2                ITPV
      COMMON /CONR11/ NREP       ,NCRT       ,ISIZEL     ,
     1                MINGAP     ,ISIZEM         ,
     2                TENS
      COMMON /CONR12/ IXMAX      ,IYMAX      ,XMAX       ,YMAX
      LOGICAL         REPEAT     ,EXTRAP     ,PER        ,MESS       ,
     1                LOOK       ,PLDVLS     ,GRD        ,LABON      ,
     2                PMIMX      ,FRADV      ,EXTRI      ,CINC       ,
     3                TITLE      ,LISTOP     ,CHILO      ,CON
      COMMON /CONR15/ ISTRNG
        CHARACTER*64 ISTRNG
        COMMON /CONR16/ FORM
        CHARACTER*10 FORM
        COMMON /CONR17/ NDASH, IDASH, EDASH
        CHARACTER*10 NDASH, IDASH, EDASH
C
C
      DIMENSION       XD(1)      ,YD(1)
C
        SAVE
C
C  FIND SMALLEST AND LARGST X AND Y
C
      XST = XD(1)
      XED = XD(1)
      YST = YD(1)
      YED = YD(1)
      DO  130 I=2,NDP
         IF (XST .LE. XD(I)) GO TO  100
         XST = XD(I)
         GO TO  110
  100    IF (XED .GE. XD(I)) GO TO  110
         XED = XD(I)
  110    IF (YST .LE. YD(I)) GO TO  120
         YST = YD(I)
         GO TO  130
  120    IF (YED .GE. YD(I)) GO TO  130
         YED = YD(I)
  130 CONTINUE
C
C  COMPUTE STEP SIZE
C
      XRG = (ABS(XED-XST))
      YRG = (ABS(YED-YST))
      SQRG = XRG
      IF (SQRG .LT. YRG) SQRG = YRG
      STPSZ = SQRG/FLOAT(IGRAD-1)
C
C  COMPUTE PARAMETERS FOR SET CALL
C
      DIFX = XRG/SQRG
      DIFY = YRG/SQRG
      PXST = .5-(BORD*DIFX)/2.
      PXED = .5+(BORD*DIFX)/2.
      PYST = .5-(BORD*DIFY)/2.
      PYED = .5+(BORD*DIFY)/2.
      XRG = XRG/FLOAT(ITICK)
      YRG = YRG/FLOAT(ITICK)
C
C  TEST IF THE ASPECT RATIO FOR THE COORDINATES IS REASONABLE.
C     REASONABLE IS CURRENTLY DEFINED AS 5 TO 1.
C     IF IT IS NOT REASONABLE THEN A POOR PLOT MAY BE GENERATED
C     SO IT IS NICE THE WARN THE USER WHEN THIS HAPPENS.
C
      TEST = XRG/YRG
      IF (TEST.LE.5. .AND. TEST.GE.0.2) RETURN
C
C  WARN THE USER ON THE STANDARD OUTPUT UNIT THAT THE PLOT MAY
C  NOT BE TOO GOOD.
C
C  SET RECOVERY MODE
C
      CALL ENTSR(IROLD,IREC)
C
C  FLAG THE ERROR
C
      CALL SETER(' ASPECT RATIO OF X AND Y GREATER THAN 5 TO 1',
     1           1,1)
C
      CALL EPRIN
C
C  CLEAR THE ERROR
C
      CALL ERROF
C
C  RESET USER ERROR MODE
C
      CALL ENTSR(IDUM,IROLD)
C
      RETURN
      END