aboutsummaryrefslogtreecommitdiff
path: root/sys/gio/ncarutil/tests/threedt.f
blob: 0cb6532d6c8ed89e1c2d5191e4cabe5fc5d006ab (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
SUBROUTINE TTHREE	(IERROR)
C
C LATEST REVISION	 JULY, 1984
C
C PURPOSE		 TO PROVIDE A SIMPLE DEMONSTRATION OF
C			 THE ROUTINE THREED.
C
C USAGE			 CALL TTHREE (IERROR)
C
C ARGUMENTS
C
C ON OUTPUT		 IERROR
C			   AN INTEGER VARIABLE
C			   =0 IF THERE IS A NORMAL EXIT	FROM THE
C			      ROUTINE THREED.
C			   =1 OTHERWISE
C
C I/O			 IF THERE IS A NORMAL EXIT FROM	THE ROUTINE
C			 THREED	THE MESSAGE
C			   THREED TEST SUCCESSFUL . . .	SEE PLOT TO
C			   VERIFY PERFORMANCE
C			 IS PRINTED.
C
C PRECISION		 SINGLE
C
C LANGUAGE		 FORTRAN
C
C HISTORY		 ORIGINALLY WRITTEN NOVEMBER 1976
C			 CONVERTED TO GKS AND FORTRAN 77 JULY 1984
C
C ALGORITHM		 ROUTINE TTHREE	CALLS SET3 TO ESTABLISH	A
C			 MAPPING BETWEEN THE PLOTTER ADDRESSES AND
C			 THE USER'S VOLUME, AND	TO INDICATE THE
C			 COORDINATES OF	THE EYE	POSITION FROM
C			 WHICH THE LINES TO BE DRAWN ARE VIEWED.
C			 NEXT, THE VOLUME PERIMETERS AND ASSOCIATED
C			 TICK MARKS ARE	DRAWN BY CALLS TO PERIM3.
C			 THEN THE LINES	ARE DRAWN.  THESE ARE
C			 CERTAIN LATITUDES AND LONGITUDES OF A
C			 SPHERE.
C
C PORTABILITY		 ANSI FORTRAN 77
C
C
C
C
      REAL EYE(3),X(31),Y(31),Z(31)
C
C SPECIFY ARGUMENT VALUES TO BE	USED BY	ROUTINE	SET3.  ON AN
C ABSTRACT PLOTTER WITH	AN ADDRESS RANGE OF 0. TO 1. IN	EACH
C COORDINATE DIRECTION,	THE VALUES  RXA, RXB, RYA, AND RYB
C DEFINE THE PORTION OF	THE ADDRESS SPACE TO BE	USED IN	MAKING
C THE PLOT.  UC, UD, VC, VD, WC, WD  DEFINE A VOLUME IN	USER
C COORDINATES WHICH IS TO BE MAPPED ONTO THE PORTION OF	THE
C VIEWING SURFACE AS SPECIFIED BY  RXA,	RXB, RYA, AND RYB.
C
      DATA RXA/0.097656/, RXB/0.90236/,	RYA/0.097656/, RYB/0.90236/
      DATA UC/-1./, UD/1./, VC/-1./, VD/1./, WC/-1./, WD/1./
      DATA EYE(1),EYE(2),EYE(3)/10.,6.,3./
      DATA TX/0.4374/, TY/0.9570/
C
C DEFINE PI
      DATA PI/3.1415926535898/
C
C
C SELECT NORMALIZATION TRANSFORMATION 0
C
      CALL GSELNT (0)
C
C CALL SET3 TO ESTABLISH A MAPPING BETWEEN THE PLOTTER ADDRESSES
C AND THE USER'S VOLUME, AND TO	INDICATE THE COORDINATES OF THE
C EYE POSITION FROM WHICH THE LINES TO BE DRAWN	ARE VIEWED.
C
      CALL SET3(RXA,RXB,RYA,RYB,UC,UD,VC,VD,WC,WD,EYE)
C
C CALL PERIM3 TO DRAW PERIMETER	LINES AND TICK MARKS
C
      CALL PERIM3(2,5,1,10,1,-1.)
      CALL PERIM3(4,2,1,1,2,-1.)
      CALL PERIM3(2,10,4,5,3,-1.)
C
C DEFINE AND DRAW LATITUDINAL LINES ON THE SPHERE OF RADIUS ONE
C HAVING CENTER	(0.,0.,0.)
C
      DO 10 J=1,18
      THETA = FLOAT(J)*PI/9.
      CT = COS(THETA)
      ST = SIN(THETA)
      DO 20 K=1,31
      PHI = FLOAT(K-16)*PI/30.
      Z(K) = SIN(PHI)
      CP = COS(PHI)
      X(K) = CT*CP
      Y(K) = ST*CP
   20 CONTINUE
      CALL CURVE3(X,Y,Z,31)
   10 CONTINUE
C
C DEFINE AND DRAW LONGITUDINAL LINES ON	THE SPHERE OF RADIUS ONE
C HAVING CENTER	(0.,0.,0.)
C
      DO 30 K=1,5
      PHI = FLOAT(K-3)*PI/6.
      SP = SIN(PHI)
      CP = COS(PHI)
      DO 40 J=1,31
      TUETA = FLOAT(J-1)*PI/15.
      X(J) = COS(TUETA)*CP
      Y(J) = SIN(TUETA)*CP
      Z(J) = SP
   40 CONTINUE
      CALL CURVE3(X,Y,Z,31)
   30 CONTINUE
C
C CALL WTSTR FOR THREED	PLOT TITLE
C
      CALL WTSTR(TX,TY,'DEMONSTRATION PLOT FOR ROUTINE THREED',2,0,0)
      call pwrzt (1.,0.,-1.,'DEMONSTRATION PLOT FOR ROUTINE THREED', 37,
     * 2, 2, 3, 0)
C
c     CALL NEWFM
C
      IERROR = 0
c     WRITE(6,1001)
      RETURN
C
c1001 FORMAT('	   THREED TEST SUCCESSFUL', 24X,
c    1	     'SEE PLOT TO VERIFY PERFORMANCE')
      END