forked from robhagemans/basicode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathA10_Fractals.bc3
More file actions
181 lines (180 loc) · 7.67 KB
/
Copy pathA10_Fractals.bc3
File metadata and controls
181 lines (180 loc) · 7.67 KB
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
1000 A=10:GOTO20:REM ** LINEAIRE FRACTALS **
1010 HT=HO:VT=VE:REM maten tekstscherm
1020 XM=.5:YM=.5:REM midden tussen startpunten
1030 A=.197:REM afmeting tekening
1040 P=10+INT(HG/210):REM P niveaus diep tekenen
1050 DIMX(P),Y(P),D(P)
1060 VD=4/3:REM constante
1080 GOSUB5000:REM uitleg
1090 GOSUB100:SR$="LINEAIRE FRACTAL":GOSUB150:PRINT:PRINT
1100 PRINT"Let op: bij positieve factoren"
1110 PRINT" wordt gedraaid, bij"
1120 PRINT" negatieve factoren wordt"
1130 PRINT" gespiegeld.":PRINT
1140 PRINT"Geef de hoek in graden en"
1150 PRINT" neem een factor tussen -1 EN 1"
1160 PRINT
1170 PRINT"Eerst de linker-afbeelding:":PRINT
1180 PRINT"Hoek ";:INPUTHL
1190 PRINT"Factor";:INPUTLF
1200 PRINT:PRINT"Nu de rechter-afbeelding":PRINT
1210 PRINT"Hoek ";:INPUTHR
1220 PRINT"Factor";:INPUTRF
1230 GOSUB600:CN=0
1240 HO=0:VE=0:CT=7
1250 SR=HL:GOSUB300:SR$="Hoek "+SR$:GOSUB650
1260 VE=1/23
1270 CN=4:SR=LF:GOSUB310:SR$="Factor "+SR$:CN=0:GOSUB650
1280 HO=.5625:VE=0
1290 SR=HR:GOSUB300:SR$="Hoek "+SR$:GOSUB650
1300 VE=1/23
1310 CN=4:SR=RF:GOSUB310:SR$="Factor "+SR$:CN=0:GOSUB650
1320 RH=3.1415926535/180
1330 SL=SIN(RH*HL):TL=COS(RH*HL)
1340 SR=SIN(RH*HR):TR=COS(RH*HR)
1350 IFLF<0 THEN1410
1360 REM *** bereken A,B,C,D,E,F voor ROTATIE-links ***
1370 AL=LF*TL:BL=LF*SL:CL=LF*(A-XM)*TL-LF*YM*SL+XM-A
1380 DL=-BL:EL=AL:FL=-LF*(A-XM)*SL-LF*YM*TL+YM
1390 GOTO1430
1400 REM *** bereken A,B,C,D,E,F voor SPIEGELING-links ***
1410 AL=-LF*TL:BL=LF*SL:CL=-LF*(A-XM)*TL-LF*YM*SL+XM-A
1420 DL=BL:EL=-AL:FL=LF*(A-XM)*SL-LF*YM*TL+YM
1430 IFRF<0 THEN1490
1440 REM *** bereken A,B,C,D,E,F voor ROTATIE-rechts ***
1450 AR=RF*TR:BR=-RF*SR:CR=-RF*(A+XM)*TR+RF*YM*SR+XM+A
1460 DR=-BR:ER=AR:FR=-RF*(A+XM)*SR-RF*YM*TR+YM
1470 GOTO1520
1480 REM *** bereken A,B,C,D,E,F voor SPIEGELING-rechts ***
1490 AR=-RF*TR:BR=-RF*SR:CR=RF*(A+XM)*TR+RF*YM*SR+XM+A
1500 DR=BR:ER=-AR:FR=RF*(A+XM)*SR-RF*YM*TR+YM
1510 REM * afbeeldingsformules liggen nu vast *
1520 HO=XM-A:VE=YM*VD:GOSUB620:HO=XM+A:GOSUB620
1530 X=HO:Y=YM
1540 REM * beginpunten zijn getekend *
1550 REM * start afwerken boom *
1560 S=0:D=1
1570 HO=X:VE=Y*VD:GOSUB620:REM Plot X,Y
1580 IFD=P THEN1630
1590 X(S)=X:Y(S)=Y:D(S)=D:S=S+1
1600 D=D+1
1610 XO=X:X=AL*X+BL*Y+CL:Y=DL*XO+EL*Y+FL
1620 GOTO1570
1630 S=S-1:IFS<0 THEN1680
1640 X=X(S):Y=Y(S):D=D(S)
1650 D=D+1
1660 XO=X:X=AR*X+BR*Y+CR:Y=DR*XO+ER*Y+FR
1670 GOTO1570
1680 HO=15/16:VE=23/24:SR$="=>":GOSUB650
1690 GOSUB210:GOTO1090
5000 GOSUB100:REM start uitleg
5010 READD$:SP$=" "
5020 GOSUB100:PRINTLEFT$(SP$,INT(HT-23)/2);
5030 SR$="LINEAIRE FRACTALS":GOSUB150:PRINT:PRINT:R=3
5040 IFLEN(D$)>HT+2 THEN5090
5050 READDD$:IFDD$="." THENPRINTD$:READD$:GOTO5140
5060 IFDD$="#" THENPRINTD$:READD$:GOTO5130
5070 IFDD$="$" THEN5150
5080 D$=D$+" "+DD$:GOTO5040
5090 HP=HT+1
5100 IFMID$(D$,HP,1)=" " THEN5120
5110 HP=HP-1:GOTO5100
5120 PRINTLEFT$(D$,HP-1):D$=RIGHT$(D$,LEN(D$)-HP)
5130 R=R+1:IFR<VT THEN5040
5140 GOSUB5150:GOTO5020
5150 HO=INT((HT-23)/2):VE=VT:GOSUB110
5160 SR$="Spatie voor vervolg ...":GOSUB150
5170 GOSUB210:IFIN<>32 THEN5170
5180 RETURN
25000 DATA"Dit programma tekent lineaire fractals. Een"
25010 DATA"fractal is een tekening, een figuur dus. De"
25020 DATA"bijzonderheid van fractals is, dat de figuur"
25030 DATA"steeds weer in zichzelf op kleinere schaal wordt"
25040 DATA"herhaald. In dit programma wordt die figuur"
25050 DATA"opgebouwd vanuit twee beginpunten. Vanaf dat"
25060 DATA"begin vindt bij herhaling dezelfde 'vervorming'"
25070 DATA"plaats: de tot dat moment opgebouwde figuur"
25080 DATA"wordt namelijk ten opzichte van het linkse"
25090 DATA"beginpunt en ten opzichte van het rechtse"
25100 DATA"beginpunt over een bepaalde hoek gedraaid en met"
25110 DATA"een bepaalde factor vermenigvuldigd en in die"
25120 DATA"stand opnieuw getekend. Dat gaat zo door totdat"
25130 DATA"de te tekenen figuur te klein zou worden. Op dat"
25140 DATA"moment is de fractal klaar.","#","De gehele"
25150 DATA"fractal wordt dus bepaald door een draaiing en"
25160 DATA"verkorting ten opzichte van het linkse beginpunt"
25170 DATA"plus een draaiing en verkorting ten opzichte van"
25180 DATA"het rechtse beginpunt. Beide draaihoeken en"
25190 DATA"verkortingsfactoren moet u zelf intikken. U kunt"
25200 DATA"naar hartelust experimenteren. In plaats van een"
25210 DATA"draaiing ten opzichte van een beginpunt kan het"
25220 DATA"programma ook een spiegeling in een lijn door"
25230 DATA"dat beginpunt verzorgen. U kunt dat zelf"
25240 DATA"instellen. Als u voor de verkortingsfactor een"
25250 DATA"positief getal (kleiner dan 1 natuurlijk)"
25260 DATA"intikt, wordt er gedraaid en als u een negatieve"
25270 DATA"factor (groter dan -1) intikt, wordt er"
25280 DATA"gespiegeld.",".","Het aardige van fractals is,"
25290 DATA"dat de figuur die uiteindelijk tot stand komt,"
25300 DATA"nauwelijks voorspelbaar is. Het kan daardoor"
25310 DATA"gebeuren, dat de figuur niet op het scherm past."
25320 DATA"In dat geval moet u in het programma wat"
25330 DATA"veranderen.","#","In regel 1020 staat het midden"
25340 DATA"tussen de startpunten. U kunt dit midden wat"
25350 DATA"naar links (kleinere XM) of naar rechts (grotere"
25360 DATA"XM) verschuiven. U kunt het ook omhoog (kleinere"
25370 DATA"YM) of omlaag (grotere YM) verplaatsen.","#"
25380 DATA"Mocht de hele figuur te groot uitvallen, dan"
25390 DATA"kunt u hem verkleinen door in regel 1030 een"
25400 DATA"kleinere waarde voor A te nemen. Vergroten van"
25410 DATA"de tekening gebeurt dus door een grotere A te"
25420 DATA"kiezen. A moet wel altijd kleiner dan 0.5 zijn."
25430 DATA"#","Tenslotte kunt u de detaillering van de"
25440 DATA"figuur vergroten door in regel 1040 een grotere"
25450 DATA"P te kiezen. Wees hier wel voorzichtig mee, want"
25460 DATA"telkens als u P met 1 vergroot, zal het tekenen"
25470 DATA"van de fractal dubbel zo lang duren.",".","Om u"
25480 DATA"in het begin een beetje op weg te helpen, krijgt"
25490 DATA"u een paar getallen die redelijk vertrouwde"
25500 DATA"resultaten opleveren. Vertrouwd, omdat het"
25510 DATA"resultaat in bepaalde gevallen overeenkomt met"
25520 DATA"wat u vroeger al eens in een eerder uitgezonden"
25530 DATA"BASICODE programma hebt gezien. In de tabel"
25540 DATA"vindt u op elke regel 5 gegevens: de links en"
25550 DATA"rechts in te tikken waarden voor de hoek en de"
25560 DATA"factor alsmede (waar van toepassing) de naam van"
25570 DATA"de fractal die u dan te zien zult krijgen. Veel"
25580 DATA"plezier.","."
25590 DATA" LINKS RECHTS","#"
25600 DATA"","#"
25610 DATA"hoek factor hoek factor NAAM","#"
25620 DATA"","#"
25630 DATA" 45 0.7071 45 0.7071 LEVY","#"
25640 DATA" 45 0.7071 -45 0.7071 DRAAK","#"
25650 DATA" 30 -.5773 30 -.5773 KOCH","#"
25660 DATA" 0 0.6667 60 -.5773","#"
25670 DATA" 37 0.75 0 0.5","#"
25680 DATA" 90 0.7 0 0.7","#"
25690 DATA"120 0.6 120 -.6","#"
25700 DATA" 45 -.7071 0 -.5","#"
25710 DATA"","#"
25720 DATA"Tip: noteer deze tabel voor later gebruik!"
25730 DATA"","#","","$"
30000 REM
30010 REM Wie meer over fractals wil weten, kan worden
30020 REM verwezen naar het boek FRACTALS van
30030 REM Hans Lauwerier, ISBN 90 6834 031X
30040 REM
32000 REM #######################
32010 REM # #
32015 REM # L I N E A I R E #
32020 REM # F R A C T A L S #
32040 REM # #
32050 REM # door: #
32060 REM # #
32070 REM # J. Haubrich #
32080 REM # Eindhoven #
32090 REM # Copyright: 2-1-1988 #
32100 REM # #
32110 REM #######################
32120 REM TROS-RADIO dd. 880316