Home » Archimedes archive » Acorn User » AU 1998-06 A.adf » Regulars » StarInfo/Brobecker/VonKoch
StarInfo/Brobecker/VonKoch
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1998-06 A.adf » Regulars |
Filename: | StarInfo/Brobecker/VonKoch |
Read OK: | ✔ |
File size: | 03AB bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM>>> Von Koch's Snowflake 20REM Alain BROBECKER (baah/Arm's Tech) on 27-Mar-1997 30n%=5:REMNb of iterations 40MODE20:OFF:REMScreen inits 50FORc%=0TOn%:d%=128*c%/n%:COLOURc%,96+d%,d%,128-d%:NEXT 60COLOUR15,0,0,0:ORIGIN640,512 70DIMs% 2^18:DIMt% 2^18:REMMemory for grammars 80a%=s%:PROCz(a%,"-rr-l-rr-l-rr-l-rr-l-rr-l-rr-"):?a%=0:REMInit grammar 90l=2^(11-n%) 100FORc%=0TOn%-1 110 GCOL15 120 a=2*PI/3:REMStart angle 130 l=1.8*l/3:REMlength of a segment 140 x=-l*2^c%:y=0:REMInitial position 150 IFc%>0THENFORd%=0TOc%-1:x-=l*2^(c%-d%)*3^d%*COS(PI/3):NEXT 160 a%=s%:b%=t% 170 WHILE?a%<>0 180 ?b%=?a%:b%+=1:REMCopy char 190 CASE?a%OF 200 WHENASC"-" 210 PROCz(b%,"l-rr-l-"):REMAdd this to grammar 220 MOVEx,y:x+=l*COSa:y+=l*SINa:DRAWx,y:REMAnd draw line 230 WHENASC"l":a+=PI/3:REMTurn left 240 WHENASC"r":a-=PI/3:REMTurn right 250 ENDCASE 260 a%+=1 270 ENDWHILE 280 ?b%=0:REMMark end 290 SWAPs%,t%:REMExchange grammars 300 GCOLn%-c%:FILLx+4,y:REMFill 310NEXT:END 320REMAdd string to memory 330DEFPROCz(RETURN z%,z$):FORy%=1TOLEN(z$):?z%=ASCMID$(z$,y%,1):z%+=1:NEXT:ENDPROC
�>>> Von Koch's Snowflake 9� Alain BROBECKER (baah/Arm's Tech) on 27-Mar-1997 n%=5:�Nb of iterations (�20:�:�Screen inits 2/�c%=0�n%:d%=128*c%/n%:�c%,96+d%,d%,128-d%:� <�15,0,0,0:ȑ640,512 F*�s% 2^18:�t% 2^18:�Memory for grammars PDa%=s%:�z(a%,"-rr-l-rr-l-rr-l-rr-l-rr-l-rr-"):?a%=0:�Init grammar Zl=2^(11-n%) d�c%=0�n%-1 n �15 x a=2*�/3:�Start angle �# l=1.8*l/3:�length of a segment �$ x=-l*2^c%:y=0:�Initial position �2 �c%>0��d%=0�c%-1:x-=l*2^(c%-d%)*3^d%*�(�/3):� � a%=s%:b%=t% � ȕ?a%<>0 � ?b%=?a%:b%+=1:�Copy char � Ȏ?a%� � ɗ"-" �- �z(b%,"l-rr-l-"):�Add this to grammar �0 �x,y:x+=l*�a:y+=l*�a:�x,y:�And draw line � ɗ"l":a+=�/3:�Turn left � ɗ"r":a-=�/3:�Turn right � � a%+=1 � ?b%=0:�Mark end " Ȕs%,t%:�Exchange grammars , �n%-c%:Ȑx+4,y:�Fill 6�:� @�Add string to memory J5��z(� z%,z$):�y%=1��(z$):?z%=��z$,y%,1):z%+=1:�:� �
00000000 0d 00 0a 1d f4 3e 3e 3e 20 56 6f 6e 20 4b 6f 63 |.....>>> Von Koc| 00000010 68 27 73 20 53 6e 6f 77 66 6c 61 6b 65 0d 00 14 |h's Snowflake...| 00000020 39 f4 20 20 20 20 41 6c 61 69 6e 20 42 52 4f 42 |9. Alain BROB| 00000030 45 43 4b 45 52 20 28 62 61 61 68 2f 41 72 6d 27 |ECKER (baah/Arm'| 00000040 73 20 54 65 63 68 29 20 6f 6e 20 32 37 2d 4d 61 |s Tech) on 27-Ma| 00000050 72 2d 31 39 39 37 0d 00 1e 1a 6e 25 3d 35 3a f4 |r-1997....n%=5:.| 00000060 4e 62 20 6f 66 20 69 74 65 72 61 74 69 6f 6e 73 |Nb of iterations| 00000070 0d 00 28 17 eb 32 30 3a 87 3a f4 53 63 72 65 65 |..(..20:.:.Scree| 00000080 6e 20 69 6e 69 74 73 0d 00 32 2f e3 63 25 3d 30 |n inits..2/.c%=0| 00000090 b8 6e 25 3a 64 25 3d 31 32 38 2a 63 25 2f 6e 25 |.n%:d%=128*c%/n%| 000000a0 3a fb 63 25 2c 39 36 2b 64 25 2c 64 25 2c 31 32 |:.c%,96+d%,d%,12| 000000b0 38 2d 64 25 3a ed 0d 00 3c 17 fb 31 35 2c 30 2c |8-d%:...<..15,0,| 000000c0 30 2c 30 3a c8 91 36 34 30 2c 35 31 32 0d 00 46 |0,0:..640,512..F| 000000d0 2a de 73 25 20 32 5e 31 38 3a de 74 25 20 32 5e |*.s% 2^18:.t% 2^| 000000e0 31 38 3a f4 4d 65 6d 6f 72 79 20 66 6f 72 20 67 |18:.Memory for g| 000000f0 72 61 6d 6d 61 72 73 0d 00 50 44 61 25 3d 73 25 |rammars..PDa%=s%| 00000100 3a f2 7a 28 61 25 2c 22 2d 72 72 2d 6c 2d 72 72 |:.z(a%,"-rr-l-rr| 00000110 2d 6c 2d 72 72 2d 6c 2d 72 72 2d 6c 2d 72 72 2d |-l-rr-l-rr-l-rr-| 00000120 6c 2d 72 72 2d 22 29 3a 3f 61 25 3d 30 3a f4 49 |l-rr-"):?a%=0:.I| 00000130 6e 69 74 20 67 72 61 6d 6d 61 72 0d 00 5a 0f 6c |nit grammar..Z.l| 00000140 3d 32 5e 28 31 31 2d 6e 25 29 0d 00 64 0e e3 63 |=2^(11-n%)..d..c| 00000150 25 3d 30 b8 6e 25 2d 31 0d 00 6e 08 20 e6 31 35 |%=0.n%-1..n. .15| 00000160 0d 00 78 19 20 61 3d 32 2a af 2f 33 3a f4 53 74 |..x. a=2*./3:.St| 00000170 61 72 74 20 61 6e 67 6c 65 0d 00 82 23 20 6c 3d |art angle...# l=| 00000180 31 2e 38 2a 6c 2f 33 3a f4 6c 65 6e 67 74 68 20 |1.8*l/3:.length | 00000190 6f 66 20 61 20 73 65 67 6d 65 6e 74 0d 00 8c 24 |of a segment...$| 000001a0 20 78 3d 2d 6c 2a 32 5e 63 25 3a 79 3d 30 3a f4 | x=-l*2^c%:y=0:.| 000001b0 49 6e 69 74 69 61 6c 20 70 6f 73 69 74 69 6f 6e |Initial position| 000001c0 0d 00 96 32 20 e7 63 25 3e 30 8c e3 64 25 3d 30 |...2 .c%>0..d%=0| 000001d0 b8 63 25 2d 31 3a 78 2d 3d 6c 2a 32 5e 28 63 25 |.c%-1:x-=l*2^(c%| 000001e0 2d 64 25 29 2a 33 5e 64 25 2a 9b 28 af 2f 33 29 |-d%)*3^d%*.(./3)| 000001f0 3a ed 0d 00 a0 10 20 61 25 3d 73 25 3a 62 25 3d |:..... a%=s%:b%=| 00000200 74 25 0d 00 aa 0d 20 c8 95 3f 61 25 3c 3e 30 0d |t%.... ..?a%<>0.| 00000210 00 b4 1e 20 20 3f 62 25 3d 3f 61 25 3a 62 25 2b |... ?b%=?a%:b%+| 00000220 3d 31 3a f4 43 6f 70 79 20 63 68 61 72 0d 00 be |=1:.Copy char...| 00000230 0c 20 20 c8 8e 3f 61 25 ca 0d 00 c8 0c 20 20 20 |. ..?a%..... | 00000240 c9 97 22 2d 22 0d 00 d2 2d 20 20 20 20 f2 7a 28 |.."-"...- .z(| 00000250 62 25 2c 22 6c 2d 72 72 2d 6c 2d 22 29 3a f4 41 |b%,"l-rr-l-"):.A| 00000260 64 64 20 74 68 69 73 20 74 6f 20 67 72 61 6d 6d |dd this to gramm| 00000270 61 72 0d 00 dc 30 20 20 20 20 ec 78 2c 79 3a 78 |ar...0 .x,y:x| 00000280 2b 3d 6c 2a 9b 61 3a 79 2b 3d 6c 2a b5 61 3a df |+=l*.a:y+=l*.a:.| 00000290 78 2c 79 3a f4 41 6e 64 20 64 72 61 77 20 6c 69 |x,y:.And draw li| 000002a0 6e 65 0d 00 e6 1e 20 20 20 c9 97 22 6c 22 3a 61 |ne.... .."l":a| 000002b0 2b 3d af 2f 33 3a f4 54 75 72 6e 20 6c 65 66 74 |+=./3:.Turn left| 000002c0 0d 00 f0 1f 20 20 20 c9 97 22 72 22 3a 61 2d 3d |.... .."r":a-=| 000002d0 af 2f 33 3a f4 54 75 72 6e 20 72 69 67 68 74 0d |./3:.Turn right.| 000002e0 00 fa 07 20 20 cb 0d 01 04 1c 20 20 61 25 2b 3d |... ..... a%+=| 000002f0 31 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |1 | 00000300 20 20 0d 01 0e 06 20 ce 0d 01 18 14 20 3f 62 25 | .... ..... ?b%| 00000310 3d 30 3a f4 4d 61 72 6b 20 65 6e 64 0d 01 22 1f |=0:.Mark end..".| 00000320 20 c8 94 73 25 2c 74 25 3a f4 45 78 63 68 61 6e | ..s%,t%:.Exchan| 00000330 67 65 20 67 72 61 6d 6d 61 72 73 0d 01 2c 19 20 |ge grammars..,. | 00000340 e6 6e 25 2d 63 25 3a c8 90 78 2b 34 2c 79 3a f4 |.n%-c%:..x+4,y:.| 00000350 46 69 6c 6c 0d 01 36 07 ed 3a e0 0d 01 40 19 f4 |Fill..6..:...@..| 00000360 41 64 64 20 73 74 72 69 6e 67 20 74 6f 20 6d 65 |Add string to me| 00000370 6d 6f 72 79 0d 01 4a 35 dd f2 7a 28 f8 20 7a 25 |mory..J5..z(. z%| 00000380 2c 7a 24 29 3a e3 79 25 3d 31 b8 a9 28 7a 24 29 |,z$):.y%=1..(z$)| 00000390 3a 3f 7a 25 3d 97 c1 7a 24 2c 79 25 2c 31 29 3a |:?z%=..z$,y%,1):| 000003a0 7a 25 2b 3d 31 3a ed 3a e1 0d ff |z%+=1:.:...| 000003ab