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
| PROGRAM sfer2
C ў®«*®ў*п ¬®¤Ґ«м ** бдҐаҐ, ¤Ё**¬ЁЄ*, ўа*йҐ*ЁҐ, б¬Ґй Ї®«об
C ў®«*л ў®§*ЁЄ*ов ў*гваЁ, а*ббв®п*ЁҐ ҐўЄ«Ё¤®ў®
C ¬Ґ¤«Ґ**®Ґ **а*бв**ЁҐ ў®«*
DIMENSION XX(180,360),XV(20),YV(20),ZV(20),RV(20),CV(20)
INTEGER*1 RGB(3,256)
REAL NOR
DATA NV,ZT,CM,PI,NR,AL/200,.997,2.2,3.1415926,90,1./,RGB/768*0/
C 梥в* Ї*«Ёвpл
NS = 2
NCOL = 1
PRINT 7,NCOL
7 FORMAT(' 梥в 1-¤*, 0-*Ґв ',I2)
READ *,NCOL
IF(NCOL.EQ.0) GOTO 60
DO 40 J=2,256
RGB(1,J) = 31.*(1.+ SIN(PI*(J+40)/100.))
RGB(2,J) = 31.*(1.+ COS(PI*(J+10)/80.))
40 RGB(3,J) = 31.*(1.- COS(PI*(J-20)/60.))
CALL PAL(RGB)
60 R = NR
R2 = R**2
DPI = 2.*PI
H = PI/180.
2 DO 12 I=1,180
DO 12 J=1,360
12 XX(I,J) = 0.
DO 13 K=1,20
13 CV(K) = 0.
1 CALL VDOFF
PRINT 11,NV,ZT,CM,AL,NS
11 FORMAT(' ў®«*,§*вге,¬бив,Ї®ў®а®в,Ї®«гбдҐа',I6,3F9.4,I6)
READ *,NV,ZT,CM,AL,NS
KK = 1
IF(AL.LT.0.) KK=-1
CALL VDON(1)
CALL FIL(0)
DO 400 M=1,NV
DO 21 K=1,19
XV(K) = XV(K+1)
YV(K) = YV(K+1)
ZV(K) = ZV(K+1)
RV(K) = RV(K+1)
21 CV(K) = CV(K+1)
FI = DPI*NOR(0.,1)
TE = ACOS(1.- 2.*NOR(0.,1))
RM = R*SQRT(SQRT(NOR(0.,1)))
RO = RM*SIN(TE)
XV(20) = RO*COS(FI)
YV(20) = RO*SIN(FI)
ZV(20) = RM*COS(TE)
RV(20) = NOR(1.,30)
CV(20) = NOR(12.,12)
DO 310 I=1,180
IF(MOD(I,18).EQ.0) GOTO 310
TE = H*I
Z = R*COS(TE)
RO = R*SIN(TE)
DO 300 J=1,360
IF(MOD(J,30).EQ.0) GOTO 300
X = RO*COS(H*J)
Y = RO*SIN(H*J)
SS = 0.
XX(I,J) = ZT*XX(I,J)
DO 31 K=1,20
XW = XV(K)
YW = YV(K)
ZW = ZV(K)
RW = RV(K)
RW2 = RW**2 + .01
CW = CV(K)
DD = (XW-X)**2 + (YW-Y)**2 +(ZW-Z)**2
DD = DD/RW2
IF(DD.GT.10.) GOTO 31
SS = SS + .05*CW*EXP(-DD)
31 CONTINUE
XX(I,J) = XX(I,J) + SS
300 CONTINUE
310 CONTINUE
C AL = AL+.0045
DO 390 I=1,180
X = I - 90.5
X2 = X**2
DO 390 J=1,180
Y = J - 90.5
Y2 = Y**2
RR = X2 + Y2
IF(RR.GT.R2) GOTO 390
Z = -SQRT(R2-RR)
DO 395 L=1,2
Z = -Z
X1 = X*COS(AL) - Z*SIN(AL)
Z1 = X*SIN(AL) + Z*COS(AL)
IF(NS.EQ.2) GOTO 396
IF(Z1.LT.0.) GOTO 395
396 RO = SQRT(X1**2 + Y2)
FI = ACOS(X1/RO)
IF(Y.LT.0.) FI=DPI-FI
TE = ACOS(Z1/R)
II = TE/H
II = MAX(II,1)
II = MIN(II,180)
JJ = FI/H
JJ = JJ-KK*M
JJ = MOD(JJ,360)
IF(JJ.LT.1) JJ=JJ+360
JJ = MOD(JJ,360) + 1
N = CM*XX(II,JJ)
N = MIN(N,255)
N = MAX(N,0)
ID = I+10
JD = 60+J
C JD = 60+1.2*J
CALL POS(JD,ID)
CALL ROW(N)
CALL ROW(N)
CALL POS(JD,ID+1)
CALL ROW(N)
CALL ROW(N)
395 CONTINUE
390 CONTINUE
400 CONTINUE
GOTO 1
STOP
END
REAL FUNCTION NOR(VV,NN)
INTEGER*4 KK
DATA KK/234567/
NOR = VV
DO 210 I=1,NN
CALL RANDOM(KK,S)
210 NOR = NOR + S
RETURN
END |