-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathA08_Afstandbepaling.bc2
339 lines (338 loc) · 9.21 KB
/
A08_Afstandbepaling.bc2
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
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
1000 A=1000:GOTO20:REMAFSTANDBEPALING
1010 GOSUB100
1020 REMHULPSTRINGEN
1030 T$="N"
1040 F$="Foute gegevens! "
1050 G$=" "
1060 REMHULPVARIABELEN
1070 RA=3.1415927:REM= PI
1080 Q=1000
1090 SL=6378:REMEQUATORIALE STRAAL
1100 PRINT"WILT U EEN BEKNOPTE UITLEG?(J/N)"
1110 GOSUB210
1120 IF(IN$="j") OR(IN$="J") THEN7000
1130 IF(IN$="n") OR(IN$="N") THEN1150
1140 GOTO1100
1150 GOSUB100
1950 REM
1960 REMInput van de data
1970 REM
1980 HO=8:VE=0:GOSUB110
1990 PRINT"AFSTANDBEPALING"
2000 REM
2010 REMData plaats 1
2020 REM
2030 HO=0:VE=1:GOSUB110
2040 PRINT"Plaats 1: ";
2050 IFT$="J" THEN2070
2060 INPUTA$
2070 REMPRINT A$
2080 IFT$="J" THEN2300
2090 HO=0:VE=2:GOSUB110
2100 PRINT"Graden NB/ZB(-): ";
2110 INPUTG1
2120 REMPRINT G1
2130 HO=0:VE=3:GOSUB110
2140 PRINT"Minuten NB/ZB(-): ";
2150 INPUTM1
2160 REMPRINT M1
2170 IFG1*M1<0 THEN2210
2180 IF(ABS(G1)>90) OR(ABS(M1)>59) THEN2210
2190 IF(ABS(G1)=90) AND(M1<>0) THEN2210
2200 GOTO2250
2210 HO=0:VE=2:GOSUB110:PRINTF$:PRINTF$
2220 GOSUB6200
2230 HO=0:VE=2:GOSUB110:PRINTG$:PRINTG$
2240 GOTO2090
2250 A1=(G1+M1/60)*RA/180
2260 IFA1>RA/2 THENA1=RA/2
2270 IFA1<-RA/2 THENA1=-RA/2
2280 HO=0:VE=2:GOSUB110:PRINTG$:PRINTG$
2290 GOSUB250
2300 HO=0:VE=3:GOSUB110:PRINT"Coord.:"
2310 HO=8:GOSUB110:PRINTABS(G1)
2320 HO=12:GOSUB110:PRINTABS(M1)
2330 HO=15:GOSUB110
2340 IFA1<0 THEN2360
2350 PRINT"NB":GOTO2370
2360 PRINT"ZB"
2370 IFT$="J" THEN2570
2380 HO=0:VE=5:GOSUB110
2390 PRINT"Graden OL/WL(-): ";
2400 INPUTL1
2410 REMPRINT L1
2420 HO=0:VE=6:GOSUB110
2430 PRINT"Minuten OL/WL(-): ";
2440 INPUTN1
2450 REMPRINT N1
2460 IFL1*N1<0 THEN2500
2470 IF(ABS(L1)>180) OR(ABS(N1)>59) THEN2500
2480 IF(ABS(L1)=180) AND(N1<>0) THEN2500
2490 GOTO2540
2500 HO=0:VE=5:GOSUB110:PRINTF$:PRINTF$
2510 GOSUB6200
2520 HO=0:VE=5:GOSUB110:PRINTG$:PRINTG$
2530 GOTO2380
2540 B1=(L1+N1/60)*RA/180
2550 HO=0:VE=5:GOSUB110:PRINTG$:PRINTG$
2560 GOSUB250
2570 HO=5:VE=4:GOSUB110:PRINT"en"
2580 HO=8:GOSUB110:PRINTABS(L1)
2590 HO=12:GOSUB110:PRINTABS(N1)
2600 HO=15:GOSUB110
2610 IFL1<0 THEN2630
2620 PRINT"OL":GOTO3000
2630 PRINT"WL"
3000 REM
3010 REMData plaats 2
3020 REM
3030 HO=0:VE=6:GOSUB110
3040 PRINT"Plaats 2: ";
3050 INPUTB$
3060 REMPRINT B$
3070 HO=0:VE=7:GOSUB110
3080 PRINT"Graden NB/ZB(-): ";
3090 INPUTG2
3100 REMPRINT G2
3110 HO=0:VE=8:GOSUB110
3120 PRINT"Minuten NB/ZB(-): ";
3130 INPUTM2
3140 REMPRINT M2
3150 IFG2*M2<0 THEN3190
3160 IF(ABS(G2)>90) OR(ABS(M2)>59) THEN3190
3170 IF(ABS(G2)=90) AND(M2<>0) THEN3190
3180 GOTO3230
3190 HO=0:VE=7:GOSUB110:PRINTF$:PRINTF$
3200 GOSUB6200
3210 HO=0:VE=7:GOSUB110:PRINTG$:PRINTG$
3220 GOTO3070
3230 A2=(G2+M2/60)*RA/180
3240 IFA2>RA/2 THENA2=RA/2
3250 IFA2<-RA/2 THENA2=-RA/2
3260 HO=0:VE=7:GOSUB110:PRINTG$:PRINTG$
3270 GOSUB250
3280 HO=0:VE=8:GOSUB110:PRINT"Coord.:"
3290 HO=8:GOSUB110:PRINTABS(G2)
3300 HO=12:GOSUB110:PRINTABS(M2)
3310 HO=15:GOSUB110
3320 IFA2<0 THEN3340
3330 PRINT"NB":GOTO3350
3340 PRINT"ZB"
3350 HO=0:VE=10:GOSUB110
3360 PRINT"Graden OL/WL(-): ";
3370 INPUTL2
3380 REMPRINT L2
3390 HO=0:VE=11:GOSUB110
3400 PRINT"Minuten OL/WL(-): ";
3410 INPUTN2
3420 REMPRINT N2
3430 IFL2*N2<0 THEN3470
3440 IF(ABS(L2)>180) OR(ABS(N2)>59) THEN3470
3450 IF(ABS(L2)=180) AND(N2<>0) THEN3470
3460 GOTO3510
3470 HO=0:VE=10:GOSUB110:PRINTF$:PRINTF$
3480 GOSUB6200
3490 HO=0:VE=10:GOSUB110:PRINTG$:PRINTG$
3500 GOTO3350
3510 B2=(L2+N2/60)*RA/180
3520 HO=0:VE=10:GOSUB110:PRINTG$:PRINTG$
3530 GOSUB250
3540 HO=5:VE=9:GOSUB110:PRINT"en"
3550 HO=8:GOSUB110:PRINTABS(L2)
3560 HO=12:GOSUB110:PRINTABS(N2)
3570 HO=15:GOSUB110
3580 IFL2<0 THEN3600
3590 PRINT"OL":GOTO4000
3600 PRINT"WL"
4000 REM
4010 REMSTART BEREKENINGEN
4020 REM
4030 Z1=Q*SIN(A1)
4040 Z2=Q*SIN(A2)
4050 P1=SQR((Q-Z1)*(Q+Z1))
4060 P2=SQR((Q-Z2)*(Q+Z2))
4070 Y1=P1*SIN(B1)
4080 Y2=P2*SIN(B2)
4090 X1=P1*COS(B1)
4100 X2=P2*COS(B2)
4110 REMBEDOELD OM AFRONDINGS-
4120 REMFOUTEN TE VOORKOMEN!
4130 REMNOORD- OF ZUIDPOOL?
4140 IFABS(G1)=90 THEN4160
4150 GOTO4190
4160 X1=0:Y1=0
4170 IFG1>0 THENZ1=Q
4180 IFG1<0 THENZ1=-Q
4190 IFABS(G2)=90 THEN4210
4200 GOTO4240
4210 X2=0:Y2=0
4220 IFG2>0 THENZ2=Q
4230 IFG2<0 THENZ2=-Q
4240 REM
4250 REM"VOOR"PUNT?
4260 IF(B1=0) AND(A1=0) THENX1=Q:Y1=0:Z1=0
4270 IF(B2=0) AND(A2=0) THENX2=Q:Y2=0:Z2=0
4280 REM"ZIJ"PUNT?
4290 IF(ABS(L1)=90) AND(N1=0) AND(A1=0) THEN4310
4300 GOTO4340
4310 X1=0:Z1=0
4320 IFL1>0 THENY1=Q
4330 IFL1<0 THENY1=-Q
4340 IF(ABS(L2)=90) AND(N2=0) AND(A2=0) THEN4360
4350 GOTO4390
4360 X2=0:Z2=0
4370 IFL2>0 THENY2=Q
4380 IFL2<0 THENY2=-Q
4390 REM"ACHTER"PUNT?
4400 IF(ABS(L1)=180) AND(A1=0) THEN4420
4410 GOTO4430
4420 X1=-Q:Y1=0:Z1=0
4430 IF(ABS(L2)=180) AND(A2=0) THEN4450
4440 GOTO4460
4450 X2=-Q:Y2=0:Z2=0
4460 REMGELIJKE PLAATSEN, DAN AFSTAND=0.
4470 IF(X1=X2) AND(Y1=Y2) AND(Z1=Z2) THENAF=0
4480 REMBEPALING HOEK TUSSEN (x1,y1,z1) EN (x2,y2,z2)
4490 IP=X1*X2+Y1*Y2+Z1*Z2
4500 DE=IP/(Q*Q)
4510 IFDE>1 THENDE=1
4520 IFDE<-1 THENDE=-1
4530 IFDE<>0 THENEI=(SQR(1-DE*DE))/DE
4540 IFDE>0 THENAN=ATN(EI)
4550 IFDE<0 THENAN=RA+ATN(EI)
4560 IFDE=0 THENAN=RA/2
4570 REMST IS DE STRAAL VAN DE AARDE, ZIE REGEL 1090
4580 DI=AN*SL
4590 AF=INT(DI*1000+.5)/1000
5000 REM
5010 REMAFDRUKKEN RESULTATEN OP HET SCHERM
5020 REM
5030 HO=0:VE=11:GOSUB110
5040 PRINT"BOL-COORDINATEN, STRAAL ";Q
5050 HO=0:VE=12:GOSUB110
5060 PRINT"X1: ";X1
5070 HO=17:GOSUB110
5080 PRINT"X2: ";X2
5090 HO=0:VE=13:GOSUB110
5100 PRINT"Y1: ";Y1
5110 HO=17:GOSUB110
5120 PRINT"Y2: ";Y2
5130 HO=0:VE=14:GOSUB110
5140 PRINT"Z1: ";Z1
5150 HO=17:GOSUB110
5160 PRINT"Z2: ";Z2
5170 GOSUB250
5180 HO=0:VE=16:GOSUB110
5190 PRINT"De (hemelsbrede) afstand tussen"
5200 PRINTA$;" en ";B$
5210 PRINT"is ";AF;" km."
5220 GOSUB250
5230 GOSUB6200
5240 GOSUB250
6000 REM
6010 REMVERVOLGVRAGEN
6020 REM
6030 HO=0:VE=20:GOSUB110
6040 PRINT"Wilt U de eerste plaats gelijk"
6050 PRINT"houden? (j/n)"
6060 GOSUB210
6070 IF(IN$="j") OR(IN$="J") THEN6100
6080 IF(IN$="n") OR(IN$="N") THEN6110
6090 GOTO6060
6100 T$="J":GOSUB100:GOTO1950
6110 T$="N"
6120 HO=0:VE=20:GOSUB110:PRINTG$:PRINTG$
6130 GOSUB110
6140 PRINT"Wilt U nog een keer?(j/n)"
6150 GOSUB210
6160 IF(IN$="j") OR(IN$="J") THEN6190
6170 IF(IN$="n") OR(IN$="N") THENEND
6180 GOTO6150
6190 T$="N":GOSUB100:GOTO1950
6200 REMVERTRAGING
6210 FORI=1 TO100:NEXTI
6220 RETURN
7000 REM
7010 REMGEBRUIKSAANWIJZING
7020 REM
7030 GOSUB100
7040 HO=8:VE=0:GOSUB110
7050 PRINT"AFSTANDBEPALING"
7060 PRINT:PRINT"Met dit programma bepalen we de"
7070 PRINT"afstand hemelsbreed tussen twee"
7080 PRINT"punten."
7090 PRINT"De bedoeling is dat er van twee"
7100 PRINT"plaatsen op de aardbol de"
7110 PRINT"coordinaten worden aangegeven."
7120 PRINT"Van de eerste plaats geeft U als"
7130 PRINT"eerste de breedte, positief voor"
7140 PRINT"NB en negatief voor ZB."
7150 PRINT"Daarna komt de lengte, positief"
7160 PRINT"voor OL en negatief voor WL."
7170 PRINT:PRINT"Voor de tweede plaats geldt het-"
7180 PRINT"zelfde in dezelfde volgorde."
7190 PRINT:PRINT"Voor alle gegevens geldt: Eerst"
7200 PRINT"de graden, dan de minuten, beide"
7210 PRINT"met gelijke tekens!!!"
7220 PRINT:PRINT"Druk toets voor vervolg."
7230 GOSUB210
7240 GOSUB100
7250 PRINT"Het is mogelijk de eerste plaats"
7260 PRINT"vast te laten. Hierover volgt na"
7270 PRINT"de eerste berekening een nadere"
7280 PRINT"mededeling."
7290 PRINT:PRINT"De berekening vindt plaats door"
7300 PRINT"eerst de coordinaten in (x,y,z)"
7310 PRINT"op een bol met diameter ";Q
7320 PRINT"(naar keuze) te bepalen."
7330 PRINT:PRINT"Daarna volgt via het inprodukt"
7340 PRINT"de hoek plaats1,(0,0,0),plaats2."
7350 PRINT:PRINT"De afstand vinden we dan door de"
7360 PRINT"gevonden hoek met ";SL;" te"
7370 PRINT"vermenigvuldigen, de helft van"
7380 PRINT"de equatoriale diameter."
7390 PRINT:PRINT"Het programma controleert op te"
7400 PRINT"grote hoeken en niet-gelijke"
7410 PRINT"tekens."
7420 PRINT"Druk een toets om te beginnen."
7430 GOSUB210
7440 GOSUB100
7450 GOTO1950
30000 REM***********************
30010 REM* AFSTANDBEPALING *
30020 REM* TUSSEN TWEE PUNTEN *
30030 REM* OP AARDE *
30040 REM* *
30050 REM* GEBRUIK EEN ATLAS *
30060 REM* MET COORDINATEN IN *
30070 REM* NOORDER- EN ZUIDER- *
30080 REM* BREEDTE, EN OOSTER- *
30090 REM* EN WESTERLENGTE! *
30100 REM***********************
30110 REM* GEMAAKT OP EEN *
30120 REM*SINCLAIR ZX SPECTRUM *
30130 REM* *
30140 REM*DEZE HEEFT EEN SCHERM*
30150 REM*VAN 22 REGELS VAN ELK*
30160 REM* 32 KARAKTERS. *
30170 REM* *
30180 REM* VERDER ZIJN REGEL- *
30190 REM* NUMMERS BOVEN 9999 *
30200 REM* NIET MOGELIJK *
30210 REM***********************
30220 REM* OORSPRONKELIJKE *
30230 REM* VERSIE *
30240 REM* NOVEMBER 1983 *
30250 REM* *
30260 REM* AANGEPAST AAN HET *
30270 REM* BASICODE-2 PROTOKOL *
30280 REM* JANUARI 1985 *
30290 REM***********************
30300 REM* *
30310 REM* HANS.A.ALINK *
30320 REM* CIPRESSTRAAT 97 *
30330 REM* 6523 HK NIJMEGEN *
30340 REM* *
30350 REM***********************
30360 REMCOPYRIGHT
30370 REMNOS HILVERSUM