KOCH(ORTHO)
FILE INFORMATION
FILENAME(S): KOCH(ORTHO)
FILE TYPE(S): SEQ
FILE SIZE: 2.3K
FIRST SEEN: 2025-11-30 21:28:18
APPEARS ON: 1 disk(s)
FILE HASH
8d7c85f11c2353c5f9680a1b7a92e58b87f0ead86886a6e5440a37e0caa9bfe1
FOUND ON DISKS (1 DISKS)
| DISK TITLE | FILENAME | FILE TYPE | COLLECTION | TRACK | SECTOR | ACTIONS |
|---|---|---|---|---|---|---|
| VCGN D 64007 | KOCH(ORTHO) | SEQ | DuncanTwain | 19 | 1 | DOWNLOAD FILE |
FILE CONTENT & ANALYSIS
00000000: 50 52 4F 47 52 41 4D 0D 20 20 20 20 20 20 20 20 |PROGRAM. |
00000010: 6B 6F 63 68 A4 6F 72 74 68 6F 3B 0D 43 4F 4E 53 |koch.ortho;.CONS|
00000020: 54 0D 20 20 20 20 20 20 66 6D 61 78 3D 20 31 36 |T. fmax= 16|
00000030: 3B 0D 20 20 20 20 20 20 20 63 68 69 3D 20 31 3B |;. chi= 1;|
00000040: 0D 54 59 50 45 0D 20 20 20 20 20 74 61 62 65 6C |.TYPE. tabel|
00000050: 3D 20 41 52 52 41 59 20 5B 31 2E 2E 66 6D 61 78 |= ARRAY [1..fmax|
00000060: 5D 0D 20 20 20 20 20 20 20 20 20 20 20 20 4F 46 |]. OF|
00000070: 20 69 6E 74 65 67 65 72 3B 0D 56 41 52 0D 20 20 | integer;.VAR. |
00000080: 20 20 20 20 61 6E 73 77 65 72 3A 20 63 68 61 72 | answer: char|
00000090: 3B 0D 20 20 20 20 20 20 20 20 61 6C 66 61 3A 20 |;. alfa: |
000000A0: 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 20 20 |integer;. |
000000B0: 6C 2C 78 2C 79 3A 20 69 6E 74 65 67 65 72 3B 0D |l,x,y: integer;.|
000000C0: 20 20 20 20 20 20 20 20 20 70 68 69 3A 20 74 61 | phi: ta|
000000D0: 62 65 6C 3B 0D 20 20 20 20 20 20 20 6E 66 2C 6E |bel;. nf,n|
000000E0: 67 3A 20 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 |g: integer;. |
000000F0: 20 20 20 67 72 61 61 64 3A 20 69 6E 74 65 67 65 | graad: intege|
00000100: 72 3B 0D 20 20 20 20 20 20 20 78 30 2C 79 30 3A |r;. x0,y0:|
00000110: 20 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 20 | integer;. |
00000120: 20 20 20 20 20 65 3A 20 41 52 52 41 59 20 5B 30 | e: ARRAY [0|
00000130: 2E 2E 33 5D 20 4F 46 0D 20 20 20 20 20 20 20 20 |..3] OF. |
00000140: 20 20 20 20 20 20 52 45 43 4F 52 44 0D 20 20 20 | RECORD. |
00000150: 20 20 20 20 20 20 20 20 20 20 20 20 20 78 2C 79 | x,y|
00000160: 3A 20 69 6E 74 65 67 65 72 3B 0D 20 20 20 20 20 |: integer;. |
00000170: 20 20 20 20 20 20 20 20 20 45 4E 44 3B 0D 23 61 | END;.#a|
00000180: 72 74 2E 6C 69 62 0D 50 52 4F 43 45 44 55 52 45 |rt.lib.PROCEDURE|
00000190: 0D 20 20 20 20 20 20 20 20 20 20 70 72 69 6D 69 |. primi|
000001A0: 74 69 65 76 65 6E 3B 0D 56 41 52 0D 20 20 20 20 |tieven;.VAR. |
000001B0: 20 20 69 2C 6A 3A 20 69 6E 74 65 67 65 72 3B 0D | i,j: integer;.|
000001C0: 42 45 47 49 4E 0D 20 20 65 5B 30 5D 2E 78 3A 3D |BEGIN. e[0].x:=|
000001D0: 31 3B 20 65 5B 30 5D 2E 79 3A 3D 30 3B 0D 20 20 |1; e[0].y:=0;. |
000001E0: 46 4F 52 20 69 3A 3D 31 20 54 4F 20 33 20 44 4F |FOR i:=1 TO 3 DO|
000001F0: 20 42 45 47 49 4E 0D 20 20 20 20 6A 3A 3D 69 2D | BEGIN. j:=i-|
00000200: 31 3B 0D 20 20 20 20 65 5B 69 5D 2E 78 3A 3D 2B |1;. e[i].x:=+|
00000210: 65 5B 6A 5D 2E 79 3B 0D 20 20 20 20 65 5B 69 5D |e[j].y;. e[i]|
00000220: 2E 79 3A 3D 2D 65 5B 6A 5D 2E 78 3B 0D 20 20 45 |.y:=-e[j].x;. E|
00000230: 4E 44 0D 45 4E 44 0D 3B 0D 50 52 4F 43 45 44 55 |ND.END.;.PROCEDU|
00000240: 52 45 0D 20 20 20 20 20 20 20 20 20 20 73 65 74 |RE. set|
00000250: 70 65 6E 20 28 61 2C 62 3A 20 69 6E 74 65 67 65 |pen (a,b: intege|
00000260: 72 29 3B 0D 42 45 47 49 4E 0D 20 20 78 3A 3D 61 |r);.BEGIN. x:=a|
00000270: 3B 20 79 3A 3D 62 3B 0D 45 4E 44 0D 3B 0D 50 52 |; y:=b;.END.;.PR|
00000280: 4F 43 45 44 55 52 45 0D 20 20 20 20 20 20 20 20 |OCEDURE. |
00000290: 20 20 64 72 61 77 0D 20 20 20 20 20 20 20 20 20 | draw. |
000002A0: 20 28 6C 2C 61 3A 20 69 6E 74 65 67 65 72 29 3B | (l,a: integer);|
000002B0: 0D 56 41 52 0D 20 20 20 20 20 20 78 31 2C 79 31 |.VAR. x1,y1|
000002C0: 3A 20 69 6E 74 65 67 65 72 3B 0D 42 45 47 49 4E |: integer;.BEGIN|
000002D0: 0D 20 20 61 3A 3D 28 61 2B 34 29 20 4D 4F 44 20 |. a:=(a+4) MOD |
000002E0: 34 3B 0D 20 20 78 31 3A 3D 78 2B 6C 2A 65 5B 61 |4;. x1:=x+l*e[a|
000002F0: 5D 2E 78 3B 0D 20 20 79 31 3A 3D 79 2B 6C 2A 65 |].x;. y1:=y+l*e|
00000300: 5B 61 5D 2E 79 3B 0D 20 20 70 6C 6F 74 28 32 2C |[a].y;. plot(2,|
00000310: 78 2C 79 2C 78 31 2C 79 31 29 3B 0D 20 20 78 3A |x,y,x1,y1);. x:|
00000320: 3D 78 31 3B 0D 20 20 79 3A 3D 79 31 3B 0D 45 4E |=x1;. y:=y1;.EN|
00000330: 44 0D 3B 0D 50 52 4F 43 45 44 55 52 45 0D 20 20 |D.;.PROCEDURE. |
00000340: 20 20 20 20 20 20 20 20 70 61 72 61 6D 65 74 65 | paramete|
00000350: 72 73 3B 0D 56 41 52 0D 20 20 20 20 20 20 20 20 |rs;.VAR. |
00000360: 69 2C 68 6F 65 6B 3A 20 69 6E 74 65 67 65 72 3B |i,hoek: integer;|
00000370: 0D 20 20 20 20 20 20 20 20 20 20 20 20 63 72 3A |. cr:|
00000380: 20 63 68 61 72 3B 0D 20 20 50 52 4F 43 45 44 55 | char;. PROCEDU|
00000390: 52 45 0D 20 20 20 20 20 20 20 20 20 20 20 20 74 |RE. t|
000003A0: 61 62 3B 0D 20 20 42 45 47 49 4E 0D 20 20 20 20 |ab;. BEGIN. |
000003B0: 20 20 20 20 77 72 69 74 65 28 27 20 20 20 20 27 | write(' '|
000003C0: 29 0D 20 20 45 4E 44 0D 20 20 3B 0D 42 45 47 49 |). END. ;.BEGI|
000003D0: 4E 20 28 2A 20 70 61 72 61 6D 65 74 65 72 73 20 |N (* parameters |
000003E0: 2A 29 0D 20 20 63 72 3A 3D 63 68 72 28 31 33 29 |*). cr:=chr(13)|
000003F0: 3B 0D 20 20 70 61 67 65 3B 20 65 6D 70 74 79 3B |;. page; empty;|
00000400: 0D 20 20 77 72 69 74 65 6C 6E 28 27 20 4B 4F 43 |. writeln(' KOC|
00000410: 48 A0 49 53 4C 45 20 27 2C 63 72 29 3B 0D 20 20 |H.ISLE ',cr);. |
00000420: 77 72 69 74 65 6C 6E 28 27 20 28 4F 72 74 68 6F |writeln(' (Ortho|
00000430: 67 6F 6E 61 6C 65 20 62 61 73 69 73 29 27 29 3B |gonale basis)');|
00000440: 0D 20 20 77 72 69 74 65 6C 6E 28 27 20 20 49 6E |. writeln(' In|
00000450: 69 74 69 61 74 6F 72 20 3A 27 29 3B 0D 20 20 74 |itiator :');. t|
00000460: 61 62 3B 0D 20 20 77 72 69 74 65 28 27 47 72 61 |ab;. write('Gra|
00000470: 61 64 20 70 6F 6C 79 67 6F 6F 6E 20 27 29 3B 0D |ad polygoon ');.|
00000480: 20 20 77 72 69 74 65 28 27 20 5B 31 2C 34 5D 20 | write(' [1,4] |
00000490: 3D 20 27 29 3B 0D 20 20 72 65 61 64 6C 6E 28 67 |= ');. readln(g|
000004A0: 72 61 61 64 29 3B 0D 20 20 49 46 20 4E 4F 54 20 |raad);. IF NOT |
000004B0: 28 67 72 61 61 64 20 49 4E 20 5B 31 2C 34 5D 29 |(graad IN [1,4])|
000004C0: 0D 20 20 20 20 20 54 48 45 4E 20 67 72 61 61 64 |. THEN graad|
000004D0: 3A 3D 31 3B 0D 20 20 74 61 62 3B 20 77 72 69 74 |:=1;. tab; writ|
000004E0: 65 28 27 4C 65 6E 67 74 65 20 7A 79 64 65 20 3D |e('Lengte zyde =|
000004F0: 20 27 29 3B 0D 20 20 72 65 61 64 6C 6E 28 6C 29 | ');. readln(l)|
00000500: 3B 0D 20 20 77 72 69 74 65 6C 6E 28 63 72 2C 27 |;. writeln(cr,'|
00000510: 20 20 47 65 6E 65 72 61 74 6F 72 20 3A 27 29 3B | Generator :');|
00000520: 0D 20 20 74 61 62 3B 0D 20 20 77 72 69 74 65 28 |. tab;. write(|
00000530: 27 41 61 6E 74 61 6C 20 67 65 6E 65 72 61 74 69 |'Aantal generati|
00000540: 65 73 20 3D 20 27 29 3B 0D 20 20 72 65 61 64 6C |es = ');. readl|
00000550: 6E 28 6E 67 29 3B 0D 20 20 74 61 62 3B 0D 20 20 |n(ng);. tab;. |
00000560: 77 72 69 74 65 28 27 41 61 6E 74 61 6C 20 66 72 |write('Aantal fr|
00000570: 61 63 74 75 72 65 73 20 20 3D 20 27 29 3B 0D 20 |actures = ');. |
00000580: 20 72 65 61 64 6C 6E 28 6E 66 29 3B 0D 20 20 49 | readln(nf);. I|
00000590: 46 20 6E 66 3E 66 6D 61 78 20 54 48 45 4E A0 6E |F nf>fmax THEN.n|
000005A0: 66 3A 3D 66 6D 61 78 3B 0D 20 20 77 72 69 74 65 |f:=fmax;. write|
000005B0: 28 63 72 29 3B 20 74 61 62 3B 0D 20 20 77 72 69 |(cr); tab;. wri|
000005C0: 74 65 28 27 48 6F 65 6B 65 6E 20 69 6E 20 6E 2A |te('Hoeken in n*|
000005D0: 39 30 20 67 72 61 64 65 6E 27 29 3B 0D 20 20 77 |90 graden');. w|
000005E0: 72 69 74 65 28 63 72 29 3B 0D 20 77 72 69 74 65 |rite(cr);. write|
000005F0: 28 27 20 44 65 20 72 65 65 6B 73 20 3D 20 27 29 |(' De reeks = ')|
00000600: 3B 0D 20 20 46 4F 52 20 69 3A 3D 31 20 54 4F 20 |;. FOR i:=1 TO |
00000610: 6E 66 20 44 4F 20 42 45 47 49 4E 0D 20 20 20 20 |nf DO BEGIN. |
00000620: 72 65 61 64 28 68 6F 65 6B 29 3B 0D 20 20 20 20 |read(hoek);. |
00000630: 70 68 69 5B 69 5D 3A 3D 28 68 6F 65 6B 2B 34 29 |phi[i]:=(hoek+4)|
00000640: 20 4D 4F 44 20 34 3B 0D 20 20 45 4E 44 3B 0D 20 | MOD 4;. END;. |
00000650: 20 72 65 61 64 6C 6E 3B 0D 20 20 77 72 69 74 65 | readln;. write|
00000660: 28 27 53 74 61 72 74 20 70 6F 73 69 74 69 65 20 |('Start positie |
00000670: 5B 78 20 79 5D 20 3D 20 27 29 3B 0D 20 20 72 65 |[x y] = ');. re|
00000680: 61 64 6C 6E 28 78 30 2C 79 30 29 3B 0D 45 4E 44 |adln(x0,y0);.END|
00000690: 0D 3B 0D 50 52 4F 43 45 44 55 52 45 0D 20 20 20 |.;.PROCEDURE. |
000006A0: 20 20 20 20 20 20 20 69 6E 69 74 69 61 74 6F 72 | initiator|
000006B0: 3B 0D 56 41 52 0D 20 20 20 20 20 20 20 20 20 20 |;.VAR. |
000006C0: 20 20 69 3A 20 69 6E 74 65 67 65 72 3B 0D 20 20 | i: integer;. |
000006D0: 50 52 4F 43 45 44 55 52 45 0D 20 20 20 20 20 20 |PROCEDURE. |
000006E0: 20 20 20 20 20 20 67 65 6E 65 72 61 74 65 0D 20 | generate. |
000006F0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 | (|
00000700: 67 2C 61 6C 66 61 3A 20 69 6E 74 65 67 65 72 29 |g,alfa: integer)|
00000710: 3B 0D 20 20 56 41 52 0D 20 20 20 20 20 20 6A 2C |;. VAR. j,|
00000720: 6B 3A 20 69 6E 74 65 67 65 72 3B 0D 20 20 42 45 |k: integer;. BE|
00000730: 47 49 4E 0D 20 20 20 20 49 46 20 28 67 3D 30 29 |GIN. IF (g=0)|
00000740: 0D 20 20 20 20 20 20 20 54 48 45 4E 20 64 72 61 |. THEN dra|
00000750: 77 28 6C 2C 61 6C 66 61 29 0D 20 20 20 20 20 20 |w(l,alfa). |
00000760: 20 45 4C 53 45 20 42 45 47 49 4E 0D 20 20 20 20 | ELSE BEGIN. |
00000770: 20 20 20 20 20 46 4F 52 20 6A 3A 3D 31 20 54 4F | FOR j:=1 TO|
00000780: 20 6E 66 20 44 4F 20 42 45 47 49 4E 0D 20 20 20 | nf DO BEGIN. |
00000790: 20 20 20 20 20 20 20 20 61 6C 66 61 3A 3D 61 6C | alfa:=al|
000007A0: 66 61 2B 70 68 69 5B 6A 5D 3B 0D 20 20 20 20 20 |fa+phi[j];. |
000007B0: 20 20 20 20 20 20 67 65 6E 65 72 61 74 65 28 67 | generate(g|
000007C0: 2D 31 2C 61 6C 66 61 29 3B 0D 20 20 20 20 20 20 |-1,alfa);. |
000007D0: 20 20 20 45 4E 44 0D 20 20 20 20 20 20 20 45 4E | END. EN|
000007E0: 44 0D 20 20 45 4E 44 0D 20 20 3B 0D 42 45 47 49 |D. END. ;.BEGI|
000007F0: 4E 20 28 2A 20 69 6E 69 74 69 61 74 6F 72 20 2A |N (* initiator *|
00000800: 29 0D 20 20 61 6C 66 61 3A 3D 30 3B 0D 20 20 46 |). alfa:=0;. F|
00000810: 4F 52 20 69 3A 3D 31 20 54 4F 20 67 72 61 61 64 |OR i:=1 TO graad|
00000820: 20 44 4F 20 42 45 47 49 4E 0D 20 20 20 20 67 65 | DO BEGIN. ge|
00000830: 6E 65 72 61 74 65 28 6E 67 2C 61 6C 66 61 29 3B |nerate(ng,alfa);|
00000840: 0D 20 20 20 20 61 6C 66 61 3A 3D 61 6C 66 61 2B |. alfa:=alfa+|
00000850: 63 68 69 3B 0D 20 20 45 4E 44 0D 45 4E 44 0D 3B |chi;. END.END.;|
00000860: 0D 42 45 47 49 4E 20 28 2A 20 6B 6F 63 68 20 69 |.BEGIN (* koch i|
00000870: 73 6C 65 20 2A 29 0D 20 20 70 72 69 6D 69 74 69 |sle *). primiti|
00000880: 65 76 65 6E 3B 0D 20 20 52 45 50 45 41 54 0D 20 |even;. REPEAT. |
00000890: 20 20 20 70 61 72 61 6D 65 74 65 72 73 3B 0D 20 | parameters;. |
000008A0: 20 20 20 67 72 61 66 69 6E 69 74 28 30 2C 32 29 | grafinit(0,2)|
000008B0: 3B 0D 20 20 20 20 73 65 74 70 65 6E 28 78 30 2C |;. setpen(x0,|
000008C0: 79 30 29 3B 0D 20 20 20 20 69 6E 6B 28 37 29 3B |y0);. ink(7);|
000008D0: 0D 20 20 20 20 69 6E 69 74 69 61 74 6F 72 3B 0D |. initiator;.|
000008E0: 20 20 20 20 49 46 20 61 66 64 72 75 6B 20 54 48 | IF afdruk TH|
000008F0: 45 4E 20 42 45 47 49 4E 0D 20 20 20 20 20 20 20 |EN BEGIN. |
00000900: 6D 6F 76 65 3B 20 68 61 72 64 63 6F 70 79 0D 20 |move; hardcopy. |
00000910: 20 20 20 45 4E 44 0D 20 20 55 4E 54 49 4C 20 6B | END. UNTIL k|
00000920: 6C 61 61 72 6F 76 65 72 0D 45 4E 44 2E 0D 34 |laarover.END..4 |
PROGRAM. KOCH.ORTHO;.CONST.
FMAX= 16;. CHI= 1;.TYPE. TABEL
= ARRAY [1..FMAX]. OF INTEGER
;.VAR. ANSWER: CHAR;. ALFA:
INTEGER;. L,X,Y: INTEGER;.
PHI: TABEL;. NF,NG: INTEGER;.
GRAAD: INTEGER;. X0,Y0: INTEGER
;. E: ARRAY [0..3] OF.
RECORD. X,Y: INTEGE
R;. END;.#ART.LIB.PROCEDURE
. PRIMITIEVEN;.VAR. I,J: I
NTEGER;.BEGIN. E[0].X:=1; E[0].Y:=0;.
FOR I:=1 TO 3 DO BEGIN. J:=I-1;. E
[I].X:=+E[J].Y;. E[I].Y:=-E[J].X;. E
ND.END.;.PROCEDURE. SETPEN (A,B
: INTEGER);.BEGIN. X:=A; Y:=B;.END.;.PR
OCEDURE. DRAW. (L,A: I
NTEGER);.VAR. X1,Y1: INTEGER;.BEGIN
. A:=(A+4) MOD 4;. X1:=X+L*E[A].X;. Y
1:=Y+L*E[A].Y;. PLOT(2,X,Y,X1,Y1);. X:
=X1;. Y:=Y1;.END.;.PROCEDURE.
PARAMETERS;.VAR. I,HOEK: INTEGER;
. CR: CHAR;. PROCEDURE.
TAB;. BEGIN. WRITE(' '
). END. ;.BEGIN (* PARAMETERS *). CR:
=CHR(13);. PAGE; EMPTY;. WRITELN(' KOC
H ISLE ',CR);. WRITELN(' (ORTHOGONALE B
ASIS)');. WRITELN(' INITIATOR :');. T
AB;. WRITE('GRAAD POLYGOON ');. WRITE(
' [1,4] = ');. READLN(GRAAD);. IF NOT
(GRAAD IN [1,4]). THEN GRAAD:=1;. T
AB; WRITE('LENGTE ZYDE = ');. READLN(L)
;. WRITELN(CR,' GENERATOR :');. TAB;.
WRITE('AANTAL GENERATIES = ');. READL
N(NG);. TAB;. WRITE('AANTAL FRACTURES
= ');. READLN(NF);. IF NF>FMAX THEN N
F:=FMAX;. WRITE(CR); TAB;. WRITE('HOEK
EN IN N*90 GRADEN');. WRITE(CR);. WRITE
(' DE REEKS = ');. FOR I:=1 TO NF DO BE
GIN. READ(HOEK);. PHI[I]:=(HOEK+4)
MOD 4;. END;. READLN;. WRITE('START
POSITIE [X Y] = ');. READLN(X0,Y0);.END
.;.PROCEDURE. INITIATOR;.VAR.
I: INTEGER;. PROCEDURE.
GENERATE. (G,ALFA:
INTEGER);. VAR. J,K: INTEGER;. BE
GIN. IF (G=0). THEN DRAW(L,ALFA
). ELSE BEGIN. FOR J:=1 TO
NF DO BEGIN. ALFA:=ALFA+PHI[J
];. GENERATE(G-1,ALFA);.
END. END. END. ;.BEGIN (* INI
TIATOR *). ALFA:=0;. FOR I:=1 TO GRAAD
DO BEGIN. GENERATE(NG,ALFA);. ALF
A:=ALFA+CHI;. END.END.;.BEGIN (* KOCH I
SLE *). PRIMITIEVEN;. REPEAT. PARAM
ETERS;. GRAFINIT(0,2);. SETPEN(X0,
Y0);. INK(7);. INITIATOR;. IF A
FDRUK THEN BEGIN. MOVE; HARDCOPY.
END. UNTIL KLAAROVER.END..4
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL