home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
RUN Flagazine Extra: The Best Of RUN 1-12
/
thebest.zip
/
BOLLEN.BAS
< prev
next >
Wrap
BASIC Source File
|
1994-10-01
|
3KB
|
54 lines
1000 REM BOLLEN MET GESTIPPELDE ONZICHTBARE LIJNEN
1010 DEFINT R, X-Y: GOSUB 1440: ASP = 4 * GV% / (3 * GH%): PI = 4 * ATN(1): XM = GH% / 2: YM = GV% / 2
1020 RANDOMIZE -TIMER
1030 A = INT(RND * 90): B = INT(RND * 45): C = INT(RND * 180)
1040 CL1 = 15: CL2 = 14: CL3 = 11: IF MD < 8 OR MD = 10 OR MD = 11 THEN CL1 = 3: CL2 = 3: CL3 = 3
1050 WINDOW SCREEN (-XM, YM)-(XM - 1, -(YM - 1))
1060 R = 5 / 6 * YM / ASP: GR = PI / 180
1070 LOCATE 2, 2: PRINT "Om X-as:"; A; "graden": HX = A * GR
1080 LOCATE 3, 2: PRINT "Om Y-as:"; B; "graden": HY = B * GR
1090 LOCATE 4, 2: PRINT "Om Z-as:"; C; "graden": HZ = C * GR: HSTP = 15 * GR
1100 S1 = SIN(HX): S2 = SIN(HY): S3 = SIN(HZ)
1110 C1 = COS(HX): C2 = COS(HY): C3 = COS(HZ)
1120 AX = C2 * C3: AY = -C2 * S3: AZ = S2
1130 BX = C1 * S3 + S1 * S2 * C3: BY = C1 * C3 - S1 * S2 * S3: BZ = -S1 * C2
1140 CX = S1 * S3 - C1 * S2 * C3: CY = S1 * C3 + C1 * S2 * S3: CZ = C1 * C2
1150 REM BUITEN CIRCEL TEKENEN EN KADER
1160 R = R + 1: CIRCLE (0, 0), R, CL3, , , ASP: R = R - 1
1170 LINE (-XM + 1, -YM + 1)-(XM - 2, YM - 1), CL3, B
1180 REM TEKENEN MERIDIANEN
1190 FOR M = HSTP TO PI STEP HSTP: F1 = 0
1200 FOR L = 0 TO 2 * PI + PI / 60 STEP PI / 60
1210 X = R * COS(L) * COS(M): Y = R * COS(L) * SIN(M): Z = R * SIN(L)
1220 XX = AX * X + AY * Y + AZ * Z: YY = BX * X + BY * Y + BZ * Z: ZZ = CX * X + CY * Y + CZ * Z: XP = XX: YP = ASP * -ZZ
1230 IF F1 = 0 THEN PSET (XP, YP), CL1: F1 = 1: XL = XP: YL = YP: GOTO 1260
1240 IF YY > 0 THEN PSET (XP, YP), CL1: XL = XP: YL = YP: GOTO 1260
1250 LINE -(XP, YP), CL1
1260 IF INKEY$ = CHR$(27) THEN 1430
1270 NEXT L, M
1280 REM TEKENEN PARALLELLEN
1290 FOR P = -PI / 2 + HSTP TO PI / 2 - HSTP STEP HSTP: F1 = O
1300 FOR L = 0 TO 2 * PI + PI / 60 STEP PI / 60
1310 X = R * COS(P) * COS(L): Y = R * COS(P) * SIN(L): Z = R * SIN(P)
1320 XX = AX * X + AY * Y + AZ * Z: YY = BX * X + BY * Y + BZ * Z: ZZ = CX * X + CY * Y + CZ * Z: XP = XX: YP = ASP * -ZZ
1330 IF F1 = 0 THEN PSET (XP, YP), CL2: F1 = 1: XL = XP: YL = YP: GOTO 1360
1340 IF YY > 0 THEN PSET (XP, YP), CL2: XL = XP: YL = TP: GOTO 1360
1350 LINE -(XP, YP), CL2
1360 IF INKEY$ = CHR$(27) THEN 1430
1370 NEXT L, P
1380 LOCATE 2, 54: PRINT "<Enter> volgende bol";
1390 LOCATE 3, 59: PRINT "<Esc> Einde";
1400 WHILE INKEY$ <> "": WEND
1410 INV$ = INKEY$: IF NOT (INV$ = CHR$(13) OR INV$ = CHR$(27)) THEN 1410
1420 IF INV$ = CHR$(13) THEN CLS : GOTO 1030
1430 CLS : SCREEN 0
1435 END
1440 KEY OFF: CLS : SCREEN 0: MD = 12: ON ERROR GOTO 1460
1450 SCREEN MD: IF MD = 0 THEN 1490 ELSE 1470
1460 MD = MD - 1: RESUME 1450
1470 WINDOW SCREEN (0, 0)-(1, 1): GH% = PMAP(1, 0) + 1: GV% = PMAP(1, 1) + 1: WINDOW
1480 ON ERROR GOTO 0: RETURN
1490 PRINT "Grafische mode niet aanspreekbaar.": GOTO 1390
20000 REM EIND BOLLEN