home *** CD-ROM | disk | FTP | other *** search
/ RUN Flagazine Extra: Supplement 2: Soundwriter / run-supplement-2.zip / BOLLEN.BAS < prev    next >
BASIC Source File  |  1991-08-02  |  2KB  |  53 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 COMMON MENUFL%: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> Hoofdmenu";
  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:IF MENUFL% THEN 120
  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.