home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: The Best Of RUN 1-12 / thebest.zip / BOLLEN.BAS < prev    next >
BASIC Source File  |  1994-10-01  |  3KB  |  54 lines

  1. 1000 REM BOLLEN MET GESTIPPELDE ONZICHTBARE LIJNEN
  2. 1010 DEFINT R, X-Y: GOSUB 1440: ASP = 4 * GV% / (3 * GH%): PI = 4 * ATN(1): XM = GH% / 2: YM = GV% / 2
  3. 1020 RANDOMIZE -TIMER
  4. 1030 A = INT(RND * 90): B = INT(RND * 45): C = INT(RND * 180)
  5. 1040 CL1 = 15: CL2 = 14: CL3 = 11: IF MD < 8 OR MD = 10 OR MD = 11 THEN CL1 = 3: CL2 = 3: CL3 = 3
  6. 1050 WINDOW SCREEN (-XM, YM)-(XM - 1, -(YM - 1))
  7. 1060 R = 5 / 6 * YM / ASP: GR = PI / 180
  8. 1070 LOCATE 2, 2: PRINT "Om X-as:"; A; "graden": HX = A * GR
  9. 1080 LOCATE 3, 2: PRINT "Om Y-as:"; B; "graden": HY = B * GR
  10. 1090 LOCATE 4, 2: PRINT "Om Z-as:"; C; "graden": HZ = C * GR: HSTP = 15 * GR
  11. 1100 S1 = SIN(HX): S2 = SIN(HY): S3 = SIN(HZ)
  12. 1110 C1 = COS(HX): C2 = COS(HY): C3 = COS(HZ)
  13. 1120 AX = C2 * C3: AY = -C2 * S3: AZ = S2
  14. 1130 BX = C1 * S3 + S1 * S2 * C3: BY = C1 * C3 - S1 * S2 * S3: BZ = -S1 * C2
  15. 1140 CX = S1 * S3 - C1 * S2 * C3: CY = S1 * C3 + C1 * S2 * S3: CZ = C1 * C2
  16. 1150 REM BUITEN CIRCEL TEKENEN EN KADER
  17. 1160 R = R + 1: CIRCLE (0, 0), R, CL3, , , ASP: R = R - 1
  18. 1170 LINE (-XM + 1, -YM + 1)-(XM - 2, YM - 1), CL3, B
  19. 1180 REM TEKENEN MERIDIANEN
  20. 1190 FOR M = HSTP TO PI STEP HSTP: F1 = 0
  21. 1200 FOR L = 0 TO 2 * PI + PI / 60 STEP PI / 60
  22. 1210 X = R * COS(L) * COS(M): Y = R * COS(L) * SIN(M): Z = R * SIN(L)
  23. 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
  24. 1230 IF F1 = 0 THEN PSET (XP, YP), CL1: F1 = 1: XL = XP: YL = YP: GOTO 1260
  25. 1240 IF YY > 0 THEN PSET (XP, YP), CL1: XL = XP: YL = YP: GOTO 1260
  26. 1250 LINE -(XP, YP), CL1
  27. 1260 IF INKEY$ = CHR$(27) THEN 1430
  28. 1270 NEXT L, M
  29. 1280 REM TEKENEN PARALLELLEN
  30. 1290 FOR P = -PI / 2 + HSTP TO PI / 2 - HSTP STEP HSTP: F1 = O
  31. 1300 FOR L = 0 TO 2 * PI + PI / 60 STEP PI / 60
  32. 1310 X = R * COS(P) * COS(L): Y = R * COS(P) * SIN(L): Z = R * SIN(P)
  33. 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
  34. 1330 IF F1 = 0 THEN PSET (XP, YP), CL2: F1 = 1: XL = XP: YL = YP: GOTO 1360
  35. 1340 IF YY > 0 THEN PSET (XP, YP), CL2: XL = XP: YL = TP: GOTO 1360
  36. 1350 LINE -(XP, YP), CL2
  37. 1360 IF INKEY$ = CHR$(27) THEN 1430
  38. 1370 NEXT L, P
  39. 1380 LOCATE 2, 54: PRINT "<Enter> volgende bol";
  40. 1390 LOCATE 3, 59: PRINT "<Esc> Einde";
  41. 1400 WHILE INKEY$ <> "": WEND
  42. 1410 INV$ = INKEY$: IF NOT (INV$ = CHR$(13) OR INV$ = CHR$(27)) THEN 1410
  43. 1420 IF INV$ = CHR$(13) THEN CLS : GOTO 1030
  44. 1430 CLS : SCREEN 0
  45. 1435 END
  46. 1440 KEY OFF: CLS : SCREEN 0: MD = 12: ON ERROR GOTO 1460
  47. 1450 SCREEN MD: IF MD = 0 THEN 1490 ELSE 1470
  48. 1460 MD = MD - 1: RESUME 1450
  49. 1470 WINDOW SCREEN (0, 0)-(1, 1): GH% = PMAP(1, 0) + 1: GV% = PMAP(1, 1) + 1: WINDOW
  50. 1480 ON ERROR GOTO 0: RETURN
  51. 1490 PRINT "Grafische mode niet aanspreekbaar.": GOTO 1390
  52. 20000 REM EIND BOLLEN
  53.  
  54.