1000 A=250:GOTO 20:REM ** FIGUREN ** 1005 REM TROS-RADIO dd 860712 1010 H2=INT(HG/2):V2=INT(VG/2):CN=0:RD=3.14/180:P$="Prog : " 1020 PP$="Dit programma tekent " 1030 HB=HO:VB=VE:H=.5:U=160:V=100:H1=HG+1:V1=VG+1 1040 DIM X(24),Y(24),XX(5),YY(5),H(320),M$(14) 1050 FOR X=1 TO 90:READ I:NEXT X 1060 FOR X=1 TO 14:READ M$(X):NEXT X 1070 SR$="FIGUREN":HO=HB/2-7:VE=0:GOSUB 110:GOSUB 150 1080 RESTORE 1090 PRINT:PRINT:PRINT"U kunt kiezen uit :" 1100 PRINT 1110 FOR X=1 TO 14 1120 PRINT M$(X) 1130 NEXT X 1140 PRINT 1150 PRINT"Geef Uw keuze "; 1160 GOSUB 210:GN=IN-64:SR$=IN$:GOSUB 330 1165 PRINT SR$ 1170 IF GN=14 THEN 950 1180 IF GN=13 THEN GOSUB 18000:GOTO 1070 1190 IF (GN<1) OR (GN>12) THEN 1150 1200 PRINT"Wilt U de uitleg (J/N) "; 1210 GOSUB 210 1220 IF (IN<>74) AND (IN<>78) THEN 1210 1230 GOSUB 100 1240 PRINT P$;M$(GN):PRINT 1250 IF IN=78 THEN 1300 1260 IF GN>6 THEN 1290 1270 ON GN GOSUB 11020,11510,12010,12510,13010,13510 1280 GOTO 1310 1290 ON GN-6 GOSUB 14010,14510,15010,15510,16010,16510 1300 IF GN>6 THEN 1330 1310 ON GN GOSUB 2010,3010,4010,5010,6010,7010 1320 GOTO 1340 1330 ON GN-6 GOSUB 7320,8010,8130,9010,9220,10010 1340 GOSUB 250 1350 SR$="=>":HO=.93:VE=.93:GOSUB 650 1360 GOSUB 200:IF IN$="" THEN 1360 1370 GOSUB 100:GOTO 1070 2000 REM * INGESCHREVEN VIERKANTEN * 2010 PRINT"Geef K : "; 2030 INPUT K:IF K<3 THEN 2030 2040 X(1)=1000:Y(1)=5999:X(2)=6999:Y(2)=Y(1) 2050 X(3)=X(2):Y(3)=0:X(4)=X(1):Y(4)=Y(3) 2060 X(5)=X(1):Y(5)=Y(1) 2070 GOSUB 600 2080 FOR N=1 TO -5.9915/LOG((K*(K-2)+2)/K/K) 2090 FOR J=1 TO 4 2100 HO=X(J)/8000:VE=Y(J)/6000:GOSUB 620 2110 HO=X(J+1)/8000:VE=Y(J+1)/6000:GOSUB 630 2120 NEXT J 2130 FOR J=1 TO 4 2140 XX(J)=X(J)+(X(J+1)-X(J))/K 2150 YY(J)=Y(J)+(Y(J+1)-Y(J))/K 2160 NEXT J 2170 FOR J=1 TO 4 2180 X(J)=XX(J):Y(J)=YY(J) 2190 NEXT J 2200 X(5)=X(1):Y(5)=Y(1) 2210 NEXT N 2220 RETURN 3000 REM * SYMMETRISCHE FIGUREN * 3010 PRINT"Geef A : "; 3020 INPUT A 3030 PRINT"Geef B : "; 3040 INPUT B 3050 PRINT"Geef C : "; 3060 INPUT C 3070 GOSUB 600 3080 FOR W=0 TO 360 3090 T=W*RD:RV=V2*SIN(C*T):RH=H2*RV/V2 3100 HO=INT(H2+RH*COS(A*T)+H)/H1 3110 VE=INT(V2-RV*SIN(B*T)+H)/V1 3120 IF W=0 THEN GOSUB 620:GOTO 3140 3130 GOSUB 630 3140 NEXT W 3150 RETURN 4000 REM * TURTLE-GRAFIEK * 4010 PRINT"Beginrichting (graden) : "; 4020 INPUT W 4030 PRINT"Verplaatsing : "; 4040 INPUT S 4050 PRINT"Draaihoek, linksom : "; 4060 INPUT DW 4070 PRINT"Toename zijde : "; 4080 INPUT DS 4090 W1=W*RD 4100 GOSUB 600:X2=H2:Y2=V2 4110 HO=.5:VE=.5:GOSUB 620 4120 HO=INT(X2+S*COS(W1)+H)/HG 4130 VE=INT(Y2-S*SIN(W1)+H)/VG 4140 IF (HO<0) OR (HO>=1) OR (VE<0) OR (VE>=1) THEN RETURN 4150 GOSUB 630:X2=HO*HG:Y2=VE*VG 4160 W=W+DW:IF W>=360 THEN W=W-360 4170 W1=W*RD:S=S+DS 4180 GOTO 4120 5000 REM * DIAGONAALWEB * 5010 PRINT"Aantal punten (1 - ";HG;") : "; 5020 INPUT HP:IF (HP<1) OR (HP>HG) THEN 5010 5030 GOSUB 600 5040 Y1=0:Y2=VG-1 5050 FOR X1=0 TO HG-1 STEP HG/HP 5060 FOR X2=0 TO HG-1 STEP HG/HP 5070 HO=X1/HG:VE=Y1/VG:GOSUB 620 5080 HO=X2/HG:VE=Y2/VG:GOSUB 630 5090 NEXT X2 5100 NEXT X1 5110 RETURN 6000 REM * KUBUS MET ACHTVLAK * 6010 PRINT"Geef alfa in graden (1 - 90) : "; 6020 INPUT A:IF (A<1) OR (A>90) THEN 6010 6030 PRINT"Verkleiningsfactor (.1 - 1) : "; 6040 INPUT K:IF (K<.1) OR (K>1) THEN 6030 6050 W=A*RD:C=K*COS(W):S=K*SIN(W) 6060 FOR J=1 TO 14 6070 READ X,Y,Z 6080 X(J)=INT(U+X+C*Y+H) 6090 Y(J)=INT(V-S*Y-Z+H) 6100 NEXT J 6110 GOSUB 600 6120 FOR M=1 TO 24 6130 READ I,J 6140 HO=X(I)/321:VE=Y(I)/201:GOSUB 620 6150 HO=X(J)/321:VE=Y(J)/201:GOSUB 630 6160 NEXT M 6170 RETURN 7000 REM * VIER BERGEN * 7010 PRINT"Alpha in graden (50 - 135) : "; 7020 INPUT W:IF (W<50) OR (W>135) THEN 7010 7030 PRINT"Verkleiningsfactor (.5 - .75) : "; 7040 INPUT K:IF (K<.5) OR (K>.75) THEN 7030 7050 C=K*COS(W*RD):S=K*SIN(W*RD) 7060 DX=3:DY=5:K1=20 7070 FOR L=0 TO 320 7080 H(L)=1000 7090 NEXT L 7100 GOSUB 600 7110 FOR YY=-115 TO 115 STEP DY 7120 M1=COS(YY*2*3.14/115-3.14)+1 7130 FOR XX=-115 TO 115 STEP DX 7140 M2=COS(XX*2*3.14/115-3.14)+1 7150 Z=K1*M1*M2 7160 XG=INT(U+XX+C*YY+H) 7170 YG=INT(V-S*YY-Z+H) 7180 IF XX>-115 THEN 7220 7190 F1=0:L=INT(XG/DX) 7200 IF YG<=H(L) THEN F1=1:H(L)=YG 7210 X1=XG:Y1=YG:GOTO 7280 7220 F2=0:L=INT(XG/DX) 7230 IF YG<=H(L) THEN F2=1:H(L)=YG 7240 X2=XG:Y2=YG:IF Y2<0 THEN Y2=0 7250 IF F1*F2=1 THEN HO=X1/321:VE=Y1/201:GOSUB 620 7260 IF F1*F2=1 THEN HO=X2/321:VE=Y2/201:GOSUB 630 7270 X1=X2:Y1=Y2:F1=F2 7280 IF Y1<0 THEN Y1=0 7285 NEXT XX 7290 NEXT YY 7300 RETURN 7310 REM * PARABOOLSTELSEL * 7320 PRINT"Aantal parabolen (2 - 50) : "; 7330 INPUT N:IF (N<2) OR (N>50) THEN 7320 7340 N=N-1:GOSUB 600 7350 FOR K=-100 TO 100 STEP 200/N 7360 FOR X=-110 TO 110 STEP 5 7370 HO=INT(U+X+H)/321 7380 VE=-K*X*X/6400+K:VE=INT(V-VE+H)/201 7390 IF X=-110 THEN GOSUB 620:GOTO 7410 7400 GOSUB 630 7410 NEXT X 7420 NEXT K 7430 RETURN 8000 REM * SINUSKROMMEN IN CIRKELS * 8010 GOSUB 600 8020 FOR K=-40 TO 40 STEP 10 8030 FOR W=0 TO 360 STEP 2 8040 P=W*RD:R=V2-(VG/4)+K*SIN(4*P) 8050 HO=INT(H2+R*COS(P)+H)/HG 8060 VE=INT(V2+R*SIN(P)+H)/VG 8070 IF P=0 THEN GOSUB 620:GOTO 8090 8080 GOSUB 630 8090 NEXT W 8100 NEXT K 8110 RETURN 8120 REM * KUBUS MET ZADELVLAK * 8130 PRINT"Alpha in graden (1 - 90) : "; 8140 INPUT A:IF (A<1) OR (A>90) THEN 8130 8150 PRINT"Verkleiningsfactor (.1 - .6) : "; 8160 INPUT K:IF (K<.1) OR (K>.6) THEN 8150 8170 PRINT"Hoeveel lijnen : "; 8180 INPUT N:IF N<0 THEN 8170 8190 W=A*RD:C=K*COS(W):S=K*SIN(W) 8200 FOR J=1 TO 8 8210 READ X,Y,Z 8220 X(J)=INT(U+X+C*Y+H) 8230 Y(J)=INT(V-S*Y-Z+H) 8240 NEXT J:GOSUB 600 8250 FOR J=1 TO 9:READ X,Y:NEXT J 8260 FOR M=1 TO 12 8270 READ I,J 8280 HO=X(I)/321:VE=Y(I)/201:GOSUB 620 8290 HO=X(J)/321:VE=Y(J)/201:GOSUB 630 8300 NEXT M 8310 FOR J=0 TO N 8320 X1=INT(X(2)+J*(X(7)-X(2))/N+H) 8330 Y1=INT(Y(2)+J*(Y(7)-Y(2))/N+H) 8340 X2=INT(X(5)+J*(X(4)-X(5))/N+H) 8350 Y2=INT(Y(5)+J*(Y(4)-Y(5))/N+H) 8360 HO=X1/321:VE=Y1/201:GOSUB 620 8370 HO=X2/321:VE=Y2/201:GOSUB 630 8380 NEXT J 8390 HO=X(2)/321:VE=Y(2)/201:GOSUB 620 8400 HO=X(7)/321:VE=Y(7)/201:GOSUB 630 8410 HO=X(5)/321:VE=Y(5)/201:GOSUB 620 8420 HO=X(4)/321:VE=Y(4)/201:GOSUB 630 8430 RETURN 9000 REM * DIAGONALEN IN N-HOEK * 9010 PRINT"horizontale d (1 - ";H2;") : "; 9020 INPUT A:IF (A<1) OR (A>H2) THEN 9010 9030 PRINT"Vertikale d (1 - ";V2;") : "; 9040 INPUT B:IF (B<1) OR (B>V2) THEN 9030 9050 PRINT"Hoeveel hoekpunten (3 - 24) : "; 9060 INPUT N:IF (N<3) OR (N>24) THEN 9050 9070 GOSUB 600 9080 W=(360/N)*RD 9090 FOR J=0 TO N-1 9100 W1=J*W 9110 X(J)=INT(H2+A*COS(W1)+H) 9120 Y(J)=INT(V2-B*SIN(W1)+H) 9130 NEXT J 9140 FOR I=0 TO N-2 9150 FOR J=I+1 TO N-1 9160 HO=X(I)/H1:VE=Y(I)/V1:GOSUB 620 9170 HO=X(J)/H1:VE=Y(J)/V1:GOSUB 630 9180 NEXT J 9190 NEXT I 9200 RETURN 9210 REM * STELSEL KROMMEN * 9220 PRINT"Geef A : "; 9230 INPUT A 9240 PRINT"Geef B : "; 9250 INPUT B 9260 GOSUB 600 9270 FOR N=-3 TO 3 9280 FOR W=0 TO 360 STEP 3 9290 T=W*RD 9300 X=(A+B)*COS(T)-N*B*COS((A+B)/B*T) 9310 Y=(A+B)*SIN(T)-N*B*SIN((A+B)/B*T) 9320 HO=INT(H2+10*X+H)/HG 9330 IF HO>=1 THEN HO=.99999 9340 IF HO<0 THEN HO=0 9350 VE=INT(V2-10*Y+H)/VG 9360 IF VE>=1 THEN VE=.99999 9370 IF VE<0 THEN VE=0 9380 IF W=0 THEN GOSUB 620:GOTO 9400 9390 GOSUB 630 9400 NEXT W 9410 NEXT N 9420 RETURN 10000 REM * KEGEL * 10010 PRINT"Alpha in graden (1 - 90) : "; 10020 INPUT A:IF (A<1) OR (A>90) THEN 10010 10030 PRINT"Verkleiningsfactor (.1 - .6) : "; 10040 INPUT K:IF (K<.1) OR (K>.6) THEN 10030 10050 PRINT"Straal R1 (0 - ";H2;") : "; 10060 INPUT R1:IF (R1<0) OR (R1>H2) THEN 10050 10070 PRINT"Straal R2 (0 - ";H2;") : "; 10080 INPUT R2:IF (R2<0) OR (R2>H2) THEN 10070 10090 DR=(R1-R2)/6 10100 W=A*RD:C=K*COS(W):S=K*SIN(W):N=0 10110 GOSUB 600 10120 FOR Z=-60 TO 60 STEP 20 10130 R=R1-N*DR 10140 FOR W=0 TO 360 STEP 3 10150 W1=W*RD 10160 X=R*COS(W1):Y=R*SIN(W1) 10170 IF W1<>0 THEN 10210 10180 HO=INT(H2+X+C*Y+H)/H1 10190 VE=INT(V2-S*Y-Z+H)/V1 10200 GOSUB 620:GOTO 10250 10210 HO=INT(H2+X+C*Y+H)/H1 10220 VE=INT(V2-S*Y-Z+H)/V1 10230 IF (HO<0) OR (HO>=1) OR (VE<0) OR (VE>=1) THEN 10250 10240 GOSUB 630 10250 NEXT W 10260 N=N+1 10270 NEXT Z 10280 FOR W=0 TO 360 STEP 23 10290 W1=W*RD 10300 X=R1*COS(W1):Y=R1*SIN(W1) 10310 HO=INT(H2+X+C*Y+H)/H1 10320 VE=INT(V2-S*Y+60+H)/V1 10330 X=R2*COS(W1):Y=R2*SIN(W1) 10340 X=INT(H2+X+C*Y+H)/H1 10350 Y=INT(V2-S*Y-60+H)/V1 10360 GOSUB 620 10370 HO=X:VE=Y:GOSUB 630 10380 NEXT W 10390 RETURN 11000 REM * UITLEG * 11010 REM * INGESCHREVEN VIERKANTEN * 11020 PRINT PP$;" vierkanten," 11030 PRINT"en wel zo dat de hoekpunten van een" 11040 PRINT"vierkant op een vast deel van de zij-" 11050 PRINT"den van zijn voorganger komen." 11060 PRINT"U kunt zelf kiezen hoe groot dat" 11070 PRINT"vaste deel (K) moet zijn." 11080 PRINT"(20 geeft een mooi resultaat.)" 11090 PRINT"Als U bijvoorbeeld 20 indrukt, wil" 11100 PRINT"dat zeggen dat de hoekpunten op 1/20" 11110 PRINT"deel rechts op de zijden van het" 11120 PRINT"vorige vierkant komen." 11130 GOTO 19010 11500 REM * SYMMETRISCHE KROMMEN * 11510 PRINT PP$;"een altijd" 11520 PRINT"symmetrische figuur door 3 parameters" 11530 PRINT"(A,B,C) in te voeren." 11540 PRINT:PRINT"Enige mooie resultaten : ":PRINT 11550 PRINT" A B C":PRINT 11560 PRINT" 2 7 3" 11570 PRINT" 6 6 4" 11580 PRINT" 4 6 1" 11590 PRINT" 1 1 4" 11600 PRINT" 3 3 5" 11610 PRINT" 2 2 9" 11620 GOTO 19010 12000 REM * TURTLE * 12010 PRINT"Dit programma is een kleine simulatie" 12020 PRINT"van LOGO." 12030 PRINT"Door de beginrichting, verplaatsing," 12040 PRINT"draaihoek linksom en de toename" 12050 PRINT"van de zijde te geven wordt er een" 12060 PRINT"figuur getekend." 12070 PRINT:PRINT"Enige mooie resultaten :":PRINT 12080 PRINT"Beginr. verpl. draaih. toe. zijde":PRINT 12090 PRINT" 90 5 144 3" 12100 PRINT" 90 5 123 2" 12110 PRINT" 90 -2 92 2" 12120 PRINT" 90 5 72 1" 12130 GOTO 19010 12500 REM * DIAGONAALWEB * 12510 PRINT PP$;"van een aantal" 12520 PRINT"punten, die zich ahw. boven- en" 12530 PRINT"onderin het scherm bevinden, alle" 12540 PRINT"mogelijke lijnen van boven naar onder." 12550 PRINT:PRINT"U kunt het aantal punten opgeven." 12560 GOTO 19010 13000 REM * KUBUS MET 8-VLAK * 13010 PRINT PP$;"een kubus met" 13020 PRINT"daarin een achtvlak (oktaeder)." 13030 GOTO 19010 13500 REM * 4 BERGEN * 13510 PRINT PP$;"4 bergen" 13520 PRINT"in perspectief." 13530 PRINT"Het duurt wel even, dus tijd om" 13540 PRINT"koffie te zetten !!!" 13550 GOTO 19010 14000 REM * PARABOOLSTELSEL * 14010 PRINT PP$;"een stelsel" 14020 PRINT"parabolen met de functie y=-k*x*x+k." 14030 GOTO 19010 14500 REM * SINUSKROMMEN IN CIRKELS * 14510 PRINT PP$;"sinuskrommen" 14520 PRINT"die cirkelvormig gekromd zijn." 14530 PRINT"Het resultaat lijkt hierdoor op een" 14540 PRINT"bloem." 14550 GOTO 19010 15000 REM * KUBUS MET ZADELVLAK * 15010 PRINT PP$;"een kubus met" 15020 PRINT"een zadelvlak." 15030 PRINT"Om te laten zien wat een zadelvlak" 15040 PRINT"is, kunt U het beste voor aantal" 15050 PRINT"lijnen 32 invullen." 15060 GOTO 19010 15500 REM * DIAGONALEN IN N-HOEK * 15510 PRINT PP$;"een n-hoek." 15520 PRINT"Vanaf elke hoek worden er lijnen" 15530 PRINT"getrokken naar alle andere hoek-" 15540 PRINT"punten." 15550 PRINT"U kunt het aantal hoeken, horizon-" 15560 PRINT"tale en vertikale diameter opgeven." 15570 GOTO 19010 16000 REM * STELSEL KROMMEN * 16010 PRINT PP$;"een stelsel krom-" 16020 PRINT"men. U kunt naar hartelust experimen-" 16030 PRINT"teren, doordat er twee (A,B) waar-" 16040 PRINT"den ingevoerd kunnen worden.":PRINT 16050 PRINT"Hier volgen enige mooie resultaten:" 16060 PRINT:PRINT"A : -6 -6 -8 4 4 6 4.5" 16070 PRINT"B : 1 2 2 1 2 1 1.5" 16080 GOTO 19010 16500 REM * KEGEL * 16510 PRINT PP$;"een kegel" 16520 PRINT"Er worden 7 breedtecirkels en 16" 16530 PRINT"lijnen op de kegelmantel loodrecht" 16540 PRINT"op de breedtecirkels getekend." 16550 PRINT"Als U voor R1 (onderste straal) en" 16560 PRINT"R2 (bovenste straal), hetzelfde getal" 16570 PRINT"invoert, ontstaat er een cilinder." 16580 PRINT"Als R2>R1 dan is de kegel omgedraaid." 16590 PRINT"Als R1 of R2 nul is krijgt U een" 16600 PRINT"echte kegel, anders een afgeknotte." 16610 GOTO 19010 16620 REM * ALGEMENE UITLEG * 18000 GOSUB 100:PRINT"ALGEMENE UITLEG" 18010 PRINT"---------------":PRINT:PRINT 18020 PRINT"In dit programma zijn allerlei klei-" 18030 PRINT"nere programma's opgenomen." 18040 PRINT"Hiermee kunnen allerlei figuren ge-" 18050 PRINT"maakt worden." 18060 PRINT"U kunt ze selecteren van het menu." 18070 PRINT"Als U heeft gekozen kunt U nog een" 18080 PRINT"kleine uitleg over het gekozen pro-" 18090 PRINT"gramma lezen.":PRINT 18100 PRINT"Soms wordt er naar de verkleinings-" 18110 PRINT"factor gevraagd." 18120 PRINT"Dwz. hoe groot de lijnen evenwijdig" 18130 PRINT"aan de x-as tov. de lijnen evenwijdig" 18140 PRINT"aan de z of y-as worden." 18150 PRINT"Het mooiste resultaat wordt meestal" 18160 PRINT"verkregen door .5 in te vullen." 18170 GOSUB 19000 18180 PRINT"Als er naar alpha gevraagd wordt is" 18190 PRINT"dit de hoek tussen de x-as en y-as." 18200 PRINT"Hier wordt meestal het mooiste" 18210 PRINT"resultaat bereikt door 45 graden" 18220 PRINT"in te vullen." 18230 PRINT:PRINT"VEEL PLEZIER MET DIT PROGRAMMA !" 19000 REM * TOETS * 19010 HO=HB-3:VE=VB:GOSUB 110 19020 PRINT"=>"; 19030 GOSUB 200:IF IN$="" THEN 19030 19040 GOSUB 100:RETURN 25000 REM * KUBUS * 25010 DATA -60,-60,-60,60,-60,-60 25020 DATA 60,60,-60,-60,60,-60 25030 DATA -60,-60,60,60,-60,60 25040 DATA 60,60,60,-60,60,60 25050 DATA 0,0,-60,0,-60,0,60,0,0 25060 DATA 0,60,0,-60,0,0,0,0,60 25070 DATA 1,2,2,3,3,4,4,1,1,5,2,6,3,7,4,8,5,6,6,7,7,8,8,5 25080 DATA 9,10,9,11,9,12,9,13,10,11,11,12,12,13,13 25090 DATA 10,10,14,11,14,12,14,13,14 26000 DATA "A. Ingeschreven vierkanten" 26010 DATA "B. Symmetrische krommen" 26020 DATA "C. Turtle-grafiek" 26030 DATA "D. Diagonaalweb" 26040 DATA "E. Kubus met 8-vlak" 26050 DATA "F. Vier bergen" 26060 DATA "G. Paraboolstelsel" 26070 DATA "H. Sinuskrommen in cirkels" 26080 DATA "I. Kubus met zadelvlak" 26090 DATA "J. Diagonalen in een n-hoek" 26100 DATA "K. Stelsel krommen" 26110 DATA "L. Kegel" 26120 DATA "M. Algemene uitleg" 26130 DATA "N. Stoppen" 30000 REM ******************** 30010 REM IDEEEN AFKOMSTIG VAN 30020 REM HET BOEK : 30030 REM 40 GRAFISCHE PRO- 30040 REM GRAMMA'S VOOR DE C64 32000 REM ******************** 32010 REM DOOR RONALD VAN VUGT 32020 REM PA3EAH, POSTBUS 160 32030 REM 5580 AD, WAALRE (NB) 32040 REM 32050 REM GEMAAKT OP EEN 32060 REM ZX SPECTRUM 32070 REM 32080 REM JUNI 1986, V1.1 32090 REM ******************** 32100 REM TROS-RADIO dd 860712