aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/tests/isosrfhrt.f
blob: 1d8fb249a2cc2db72bfaa28f3c2b7ebec0cdea48 (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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
SUBROUTINE TISOHR	(IERROR)
C
C LATEST REVISION	 JULY 1984
C
C PURPOSE		 TO PROVIDE A SIMPLE DEMONSTRATION OF
C			 THE  ISOSRFHR	PACKAGE
C
C USAGE			 CALL TISOHR (IERROR)
C
C ARGUMENTS
C
C ON OUTPUT		 IERROR
C			   AN INTEGER VARIABLE
C			   =0 IF THERE IS A NORMAL EXIT	FROM THE
C			      ISOSRFHR	ROUTINES
C			   =1 OTHERWISE
C
C I/O			 THIS ROUTINE REQUIRES UNIT IUNIT FOR SCRATCH
C			 PURPOSES.  USERS SHOULD PUT THE UNITS LABELLED
C			 COMMON	(SEE BELOW) IN THE CALLING PROGRAM,
C			 AND ALSO SET THE VALUE	OF THE COMMON VARIABLE
C			 IUNIT IN THE CALLING PROGRAM.
C
C			 IF THERE IS A NORMAL EXIT FROM	THE
C			 ISOSRFHR  ROUTINES THE	MESSAGE
C			   ISOSRFHR TEST SUCCESSFUL . .	. SEE PLOT TO
C			   VERIFY PERFORMANCE
C			 IS PRINTED.
C
C			 ALSO, A SAMPLE	PLOT IS
C			 PRODUCED ON THE MACHINE GRAPHICS
C			 DEVICE.  ONE MUST EXAMINE THIS	PLOT
C			 TO DETERMINE IF THE ROUTINES HAVE
C			 EXECUTED CORRECTLY.
C
C COMMON BLOCKS		 UNITS
C
C PRECISION		 SINGLE
C
C REQUIRED LIBRARY	 ISOSRFHR
C FILES
C
C LANGUAGE		 FORTRAN
C
C ALGORITHM		 THIS SUBROUTINE USES THE ROUTINES IN
C			 THE PACKAGE  ISOSRFHR	TO DRAW	A PERSPECTIVE
C			 DRAWING OF TWO	INTERLOCKING DOUGHNUTS
C
C PORTABILITY		 ANSI STANDARD
C
C
      DIMENSION	      EYE(3)	 ,S(4)	     ,IS2(4,200) ,
     1		      ST1(81,51,2)	     ,IOBJS(81,51)
      COMMON /UNITS/  IUNIT
C
C SPECIFY COORDINATES FOR PLOT TITLES.	ON AN ABSTRACT GRID WHERE
C THE INTEGER COORDINATES RANGE	FROM 1 TO 1024,	THE VALUES IX AND IY
C DEFINE THE CENTER OF THE TITLE STRING.
C
      DATA IX/448/, IY/990/
C
C
C     DEFINE THE EYE POSITION
C
      DATA	      EYE(1), EYE(2), EYE(3) / 200., 250., 250.	/
C
C     DEFINE THE OVERALL DIMENSION OF THE BOX CONTAINING THE OBJECTS
C
      DATA	      NU, NV, NW /  51,	81, 51 /
C
C     SPECIFY THE DIMENSIONS OF	THE MODEL OF THE IMAGE PLANE
C
      DATA	      LX, NX, NY / 4, 180, 180 /
C
C     SPECIFY  CRT  COORDINATES	OF THE AREA WHERE THE PICTURE
C     IS TO BE DRAWN
C
      DATA	      S(1),S(2),S(3),S(4)/ 10.,1010.,10.,1010./
      DATA	      MV / 81 /
C
C     SPECIFY THE LARGE	AND SMALL RADII	FOR THE	INDIVIDUAL DOUGHNUTS
C
      DATA	      RBIG1,RBIG2,RSML1,RSML2/ 20., 20., 6., 6.	/
C
      SAVE
C
C     CALL THE INITIALIZATION ROUTINE
C
      CALL INIT3D (EYE,NU,NV,NW,ST1,LX,NY,IS2,IUNIT,S)
C
C     INITIALIZE THE ERRROR FLAG
C
      IERROR = 1
C
C     CREATE AND PLOT DATA FOR TWO INTERLOCKING	DOUGHNUTS
C
      JCENT1 = FLOAT(NV)*.5-RBIG1*.5
      JCENT2 = FLOAT(NV)*.5+RBIG2*.5
      DO  70 IBKWDS=1,NU
	 I = NU+1-IBKWDS
C
C     CREATE THE I-TH CROSS SECTION IN THE U DIRECTION OF THE
C     THREE-DIMENSIONAL	ARRAY AND STORE	IN  IOBJS  AS ZEROS AND	ONES
C
	 FIMID = I-NU/2
	 DO  20	J=1,NV
	    FJMID1 = J-JCENT1
	    FJMID2 = J-JCENT2
	    DO	10 K=1,NW
	       FKMID = K-NW/2
	       F1 = SQRT(RBIG1*RBIG1/(FJMID1*FJMID1+FKMID*FKMID+.1))
	       F2 = SQRT(RBIG2*RBIG2/(FIMID*FIMID+FJMID2*FJMID2+.1))
	       FIP1 = (1.-F1)*FIMID
	       FIP2 = (1.-F2)*FIMID
	       FJP1 = (1.-F1)*FJMID1
	       FJP2 = (1.-F2)*FJMID2
	       FKP1 = (1.-F1)*FKMID
	       FKP2 = (1.-F2)*FKMID
	       TEMP = AMIN1(FIMID**2+FJP1**2+FKP1**2-RSML1**2,
     1				      FKMID**2+FIP2**2+FJP2**2-RSML2**2)
	       IF (TEMP	.LE. 0.) IOBJS(J,K) = 1
	       IF (TEMP	.GT. 0.) IOBJS(J,K) = 0
   10	    CONTINUE
   20	 CONTINUE
C
C     SET PROPER WORDS TO  1  FOR DRAWING AXES
C
	 IF (I .NE. 1) GO TO  50
	 DO  30	K=1,NW
	    IOBJS(1,K) = 1
   30	 CONTINUE
	 DO  40	J=1,NV
	    IOBJS(J,1) = 1
   40	 CONTINUE
	 GO TO	60
   50	 CONTINUE
	 IOBJS(1,1) = 1
   60	 CONTINUE
C
C     CALL THE DRAW AND	REMEMBER ROUTINE FOR THIS SLAB
C
	 CALL DANDR (NV,NW,ST1,LX,NX,NY,IS2,IUNIT,S,IOBJS,MV)
   70 CONTINUE
C
C    TITLE THE PLOT
C
      CALL GQCNTN(IER,ICN)
      CALL GSELNT(0)
      XC = PAU2FX(IX)
      YC = PAU2FY(IY)
      CALL WTSTR(XC,YC,'DEMONSTRATION PLOT FOR ISOSRFHR',2,0,0)
      CALL GSELNT(ICN)
C
C     ADVANCE THE PLOTTING DEVICE
C
c     CALL NEWFM
C
      IERROR = 0
c     WRITE (6,1001)
      RETURN
C
c1001 FORMAT ('	  ISOSRFHR TEST	SUCCESSFUL',24X,
c    1	      'SEE PLOT	TO VERIFY PERFORMANCE')
C
      END