_  __   _  _         _ _     _      _           _           
  __| |/ /_ | || |     __| (_)___| | __ (_)_ __   __| | _____  __
 / _` | '_ \| || |_   / _` | / __| |/ / | | '_ \ / _` |/ _ \ \/ /
| (_| | (_) |__   _| | (_| | \__ \   <  | | | | | (_| |  __/>  < 
 \__,_|\___/   |_|    \__,_|_|___/_|\_\ |_|_| |_|\__,_|\___/_/\_\
                                                                 
            

TREE

FILE INFORMATION

FILENAME(S): TREE

FILE TYPE(S): SEQ

FILE SIZE: 3.4K

FIRST SEEN: 2025-11-30 21:28:18

APPEARS ON: 1 disk(s)

FILE HASH

f7f07347c35e41303d81740c9e8f6047677891b1df104f0fc48a610a02a6b344

FOUND ON DISKS (1 DISKS)

DISK TITLE FILENAME FILE TYPE COLLECTION TRACK SECTOR ACTIONS
VCGN D 64007 TREE SEQ DuncanTwain 20 0 DOWNLOAD FILE

FILE CONTENT & ANALYSIS

00000000: 50 52 4F 47 52 41 4D 0D  20 20 20 20 20 20 20 20  |PROGRAM.        |
00000010: 74 72 65 65 20 28 69 6E  70 75 74 2C 6F 75 74 70  |tree (input,outp|
00000020: 75 74 29 3B 0D 43 4F 4E  53 54 0D 20 20 20 20 20  |ut);.CONST.     |
00000030: 20 20 20 20 20 20 70 69  3D 20 33 2E 31 34 31 35  |      pi= 3.1415|
00000040: 39 3B 0D 54 59 50 45 0D  20 20 20 20 20 20 20 76  |9;.TYPE.       v|
00000050: 65 63 74 6F 72 3D 20 52  45 43 4F 52 44 0D 20 20  |ector= RECORD.  |
00000060: 20 20 20 20 20 20 20 20  20 20 20 20 20 20 78 2C  |              x,|
00000070: 79 3A 20 72 65 61 6C 0D  20 20 20 20 20 20 20 20  |y: real.        |
00000080: 20 20 20 20 20 20 20 45  4E 44 3B 0D 56 41 52 0D  |       END;.VAR.|
00000090: 20 20 20 20 20 72 6F 6F  74 2C 74 6F 70 3A 20 76  |     root,top: v|
000000A0: 65 63 74 6F 72 3B 0D 20  20 20 20 20 20 20 20 65  |ector;.        e|
000000B0: 72 61 73 65 3A 20 62 6F  6F 6C 65 61 6E 3B 0D 20  |rase: boolean;. |
000000C0: 20 20 20 4C 2C 4F 2C 4C  64 2C 4F 64 3A 20 72 65  |   L,O,Ld,Od: re|
000000D0: 61 6C 3B 0D 20 20 20 20  20 20 20 20 76 4C 2C 76  |al;.        vL,v|
000000E0: 4F 2C 0D 20 20 20 20 20  64 2C 76 65 72 74 61 6B  |O,.     d,vertak|
000000F0: 3A 20 69 6E 74 65 67 65  72 3B 0D 23 61 72 74 2E  |: integer;.#art.|
00000100: 6C 69 62 0D 20 50 52 4F  43 45 44 55 52 45 0D 20  |lib. PROCEDURE. |
00000110: 20 20 20 20 20 20 20 20  20 20 70 61 72 61 6D 65  |          parame|
00000120: 74 65 72 73 3B 0D 20 56  41 52 0D 20 20 20 20 20  |ters;. VAR.     |
00000130: 20 20 20 20 20 20 78 3A  20 69 6E 74 65 67 65 72  |      x: integer|
00000140: 3B 0D 20 20 20 20 20 20  20 20 20 20 20 63 3A 20  |;.           c: |
00000150: 63 68 61 72 3B 0D 20 42  45 47 49 4E 0D 20 20 70  |char;. BEGIN.  p|
00000160: 61 67 65 3B 20 62 6F 72  64 65 72 28 30 29 3B 20  |age; border(0); |
00000170: 65 6D 70 74 79 3B 0D 20  20 77 72 69 74 65 6C 6E  |empty;.  writeln|
00000180: 28 27 20 54 52 45 45 20  27 29 3B 0D 20 20 77 72  |(' TREE ');.  wr|
00000190: 69 74 65 6C 6E 28 27 20  27 29 3B 0D 20 20 77 72  |iteln(' ');.  wr|
000001A0: 69 74 65 28 27 23 76 65  72 74 61 6B 6B 69 6E 67  |ite('#vertakking|
000001B0: 65 6E 20 27 2C 0D 20 20  20 20 20 20 20 20 27 20  |en ',.        ' |
000001C0: 5B 31 2E 2E 31 30 5D 20  3D 20 27 29 3B 0D 20 20  |[1..10] = ');.  |
000001D0: 72 65 61 64 6C 6E 28 76  65 72 74 61 6B 29 3B 0D  |readln(vertak);.|
000001E0: 20 20 77 72 69 74 65 28  27 53 74 61 6D 2D 6C 65  |  write('Stam-le|
000001F0: 6E 67 74 65 20 20 20 27  2C 0D 20 20 20 20 20 20  |ngte   ',.      |
00000200: 20 20 27 20 5B 31 2E 2E  38 30 5D 20 3D 20 27 29  |  ' [1..80] = ')|
00000210: 3B 0D 20 20 72 65 61 64  6C 6E 28 4C 29 3B 0D 20  |;.  readln(L);. |
00000220: 20 77 72 69 74 65 28 27  53 74 61 6D 2D 64 69 6B  | write('Stam-dik|
00000230: 74 65 20 20 20 20 27 2C  0D 20 20 20 20 20 20 20  |te    ',.       |
00000240: 20 27 20 5B 33 2E 2E 31  31 5D 20 3D 20 27 29 3B  | ' [3..11] = ');|
00000250: 0D 20 20 72 65 61 64 6C  6E 28 64 29 3B 0D 20 20  |.  readln(d);.  |
00000260: 4F 3A 3D 70 69 2F 32 3B  0D 20 20 28 2A 20 63 6F  |O:=pi/2;.  (* co|
00000270: 6E 74 72 6F 6C 65 20 2A  29 0D 20 20 49 46 20 4E  |ntrole *).  IF N|
00000280: 4F 54 20 28 76 65 72 74  61 6B 20 49 4E 20 5B 31  |OT (vertak IN [1|
00000290: 2E 2E 31 30 5D 29 0D 20  20 20 20 20 54 48 45 4E  |..10]).     THEN|
000002A0: 20 76 65 72 74 61 6B 3A  3D 33 3B 0D 20 20 49 46  | vertak:=3;.  IF|
000002B0: 20 28 4C 3C 31 29 4F 52  28 4C 3E 38 30 29 0D 20  | (L<1)OR(L>80). |
000002C0: 20 20 20 20 54 48 45 4E  20 4C 3A 3D 35 30 3B 0D  |    THEN L:=50;.|
000002D0: 20 20 49 46 20 4E 4F 54  28 64 20 49 4E 20 5B 33  |  IF NOT(d IN [3|
000002E0: 2E 2E 31 31 5D 29 0D 20  20 20 20 20 54 48 45 4E  |..11]).     THEN|
000002F0: 20 64 3A 3D 34 3B 0D 20  20 77 72 69 74 65 28 27  | d:=4;.  write('|
00000300: 56 65 72 6B 6F 72 74 69  6E 67 20 20 20 20 27 2C  |Verkorting    ',|
00000310: 0D 20 20 20 27 20 28 25  29 20 5B 31 2E 2E 39 30  |.   ' (%) [1..90|
00000320: 5D 20 3D 20 27 29 3B 0D  20 20 72 65 61 64 6C 6E  |] = ');.  readln|
00000330: 28 78 29 3B 0D 20 20 77  72 69 74 65 28 27 20 72  |(x);.  write(' r|
00000340: 75 69 73 20 64 61 61 72  20 6F 70 20 27 2C 0D 20  |uis daar op ',. |
00000350: 20 20 27 20 28 25 29 20  5B 30 2E 2E 33 30 5D 20  |  ' (%) [0..30] |
00000360: 3D 20 27 29 3B 0D 20 20  72 65 61 64 6C 6E 28 76  |= ');.  readln(v|
00000370: 4C 29 3B 0D 20 20 49 46  20 4E 4F 54 20 28 78 20  |L);.  IF NOT (x |
00000380: 20 49 4E 20 5B 31 2E 2E  39 30 5D 29 0D 20 20 20  | IN [1..90]).   |
00000390: 20 20 54 48 45 4E 20 78  3A 3D 36 36 3B 0D 20 20  |  THEN x:=66;.  |
000003A0: 49 46 20 4E 4F 54 20 28  76 4C 20 49 4E 20 5B 30  |IF NOT (vL IN [0|
000003B0: 2E 2E 33 30 5D 29 0D 20  20 20 20 20 54 48 45 4E  |..30]).     THEN|
000003C0: 20 76 4C 3A 3D 30 3B 0D  20 20 4C 64 3A 3D 78 2F  | vL:=0;.  Ld:=x/|
000003D0: 31 30 30 3B 0D 20 20 77  72 69 74 65 28 27 48 6F  |100;.  write('Ho|
000003E0: 65 6B 20 76 61 72 69 61  74 69 65 20 27 2C 0D 20  |ek variatie ',. |
000003F0: 20 20 27 20 28 25 29 20  5B 35 2E 2E 34 35 5D 20  |  ' (%) [5..45] |
00000400: 3D 20 27 29 3B 0D 20 20  72 65 61 64 6C 6E 28 78  |= ');.  readln(x|
00000410: 29 3B 0D 20 20 77 72 69  74 65 28 27 20 72 75 69  |);.  write(' rui|
00000420: 73 20 64 61 61 72 20 6F  70 20 27 2C 0D 20 20 20  |s daar op ',.   |
00000430: 27 20 28 25 29 20 5B 30  2E 2E 33 30 5D 20 3D 20  |' (%) [0..30] = |
00000440: 27 29 3B 0D 20 20 72 65  61 64 6C 6E 28 76 4F 29  |');.  readln(vO)|
00000450: 3B 0D 20 20 49 46 20 4E  4F 54 20 28 78 20 20 49  |;.  IF NOT (x  I|
00000460: 4E 20 5B 35 2E 2E 34 35  5D 29 0D 20 20 20 20 20  |N [5..45]).     |
00000470: 54 48 45 4E 20 78 3A 3D  33 30 3B 0D 20 20 49 46  |THEN x:=30;.  IF|
00000480: 20 4E 4F 54 20 28 76 4F  20 49 4E 20 5B 30 2E 2E  | NOT (vO IN [0..|
00000490: 33 30 5D 29 0D 20 20 20  20 20 54 48 45 4E 20 76  |30]).     THEN v|
000004A0: 4F 3A 3D 30 3B 0D 20 20  4F 64 3A 3D 78 2A 70 69  |O:=0;.  Od:=x*pi|
000004B0: 2F 31 38 30 3B 0D 20 20  77 72 69 74 65 28 27 43  |/180;.  write('C|
000004C0: 6F 6F 72 64 69 6E 61 74  65 6E 20 73 74 61 6D 20  |oordinaten stam |
000004D0: 27 2C 0D 20 20 20 20 20  20 20 20 27 5B 78 20 79  |',.        '[x y|
000004E0: 5D 20 3D 20 27 29 3B 0D  20 20 72 65 61 64 6C 6E  |] = ');.  readln|
000004F0: 28 72 6F 6F 74 2E 78 2C  72 6F 6F 74 2E 79 29 3B  |(root.x,root.y);|
00000500: 0D 20 20 77 72 69 74 65  28 27 48 69 72 65 73 2D  |.  write('Hires-|
00000510: 73 63 68 65 72 6D 20 73  63 68 6F 6F 6E 20 27 2C  |scherm schoon ',|
00000520: 0D 20 20 20 20 20 20 20  20 27 28 6A 2F 6E 29 20  |.        '(j/n) |
00000530: 3F 20 27 29 3B 0D 20 20  72 65 61 64 6C 6E 28 63  |? ');.  readln(c|
00000540: 29 3B 0D 20 20 65 72 61  73 65 3A 3D 28 63 3D 27  |);.  erase:=(c='|
00000550: 6A 27 29 3B 0D 20 45 4E  44 0D 20 3B 0D 20 50 52  |j');. END. ;. PR|
00000560: 4F 43 45 44 55 52 45 0D  20 20 20 20 20 20 20 20  |OCEDURE.        |
00000570: 20 20 20 74 65 6B 65 6E  65 6E 3B 0D 20 20 50 52  |   tekenen;.  PR|
00000580: 4F 43 45 44 55 52 45 0D  20 20 20 20 20 20 20 20  |OCEDURE.        |
00000590: 20 20 20 20 73 74 61 6D  0D 20 20 20 20 20 20 20  |    stam.       |
000005A0: 20 20 20 20 28 72 6F 6F  74 3A 20 76 65 63 74 6F  |    (root: vecto|
000005B0: 72 3B 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |r;.             |
000005C0: 4C 2C 4F 3A 20 72 65 61  6C 3B 0D 20 20 20 20 20  |L,O: real;.     |
000005D0: 20 20 20 20 20 20 20 20  20 20 64 3A 20 69 6E 74  |          d: int|
000005E0: 65 67 65 72 3B 0D 20 20  20 20 20 20 20 20 20 56  |eger;.         V|
000005F0: 41 52 20 74 6F 70 3A 20  76 65 63 74 6F 72 29 3B  |AR top: vector);|
00000600: 0D 20 20 56 41 52 0D 20  20 20 20 20 20 78 31 2C  |.  VAR.      x1,|
00000610: 78 32 2C 79 31 2C 79 32  3A 20 69 6E 74 65 67 65  |x2,y1,y2: intege|
00000620: 72 3B 0D 20 20 20 20 20  20 20 20 20 20 20 20 20  |r;.             |
00000630: 20 20 20 7A 3A 20 69 6E  74 65 67 65 72 3B 0D 20  |   z: integer;. |
00000640: 20 20 20 20 20 20 20 20  20 76 2C 64 65 6C 74 61  |         v,delta|
00000650: 3A 20 76 65 63 74 6F 72  3B 0D 20 20 42 45 47 49  |: vector;.  BEGI|
00000660: 4E 0D 20 20 20 74 6F 70  2E 78 3A 3D 4C 2A 63 6F  |N.   top.x:=L*co|
00000670: 73 28 4F 29 2B 72 6F 6F  74 2E 78 3B 0D 20 20 20  |s(O)+root.x;.   |
00000680: 74 6F 70 2E 79 3A 3D 4C  2A 73 69 6E 28 4F 29 2B  |top.y:=L*sin(O)+|
00000690: 72 6F 6F 74 2E 79 3B 0D  20 20 20 49 46 20 28 64  |root.y;.   IF (d|
000006A0: 3E 31 29 0D 20 20 20 54  48 45 4E A0 42 45 47 49  |>1).   THEN.BEGI|
000006B0: 4E 0D 20 20 20 20 64 65  6C 74 61 2E 78 3A 3D 2D  |N.    delta.x:=-|
000006C0: 73 69 6E 28 4F 29 2F 32  3B 0D 20 20 20 20 64 65  |sin(O)/2;.    de|
000006D0: 6C 74 61 2E 79 3A 3D 2B  63 6F 73 28 4F 29 2F 32  |lta.y:=+cos(O)/2|
000006E0: 3B 0D 20 20 20 20 46 4F  52 20 7A 3A 3D 2D 64 20  |;.    FOR z:=-d |
000006F0: 54 4F 20 2B 64 20 44 4F  20 42 45 47 49 4E 0D 20  |TO +d DO BEGIN. |
00000700: 20 20 20 20 76 2E 78 3A  3D 7A 2A 64 65 6C 74 61  |    v.x:=z*delta|
00000710: 2E 78 3B 0D 20 20 20 20  20 76 2E 79 3A 3D 7A 2A  |.x;.     v.y:=z*|
00000720: 64 65 6C 74 61 2E 79 3B  0D 20 20 20 20 20 78 31  |delta.y;.     x1|
00000730: 3A 3D 72 6F 75 6E 64 28  72 6F 6F 74 2E 78 2B 76  |:=round(root.x+v|
00000740: 2E 78 29 3B 0D 20 20 20  20 20 79 31 3A 3D 72 6F  |.x);.     y1:=ro|
00000750: 75 6E 64 28 72 6F 6F 74  2E 79 2B 76 2E 79 29 3B  |und(root.y+v.y);|
00000760: 0D 20 20 20 20 20 78 32  3A 3D 72 6F 75 6E 64 28  |.     x2:=round(|
00000770: 20 74 6F 70 2E 78 2B 76  2E 78 29 3B 0D 20 20 20  | top.x+v.x);.   |
00000780: 20 20 79 32 3A 3D 72 6F  75 6E 64 28 20 74 6F 70  |  y2:=round( top|
00000790: 2E 79 2B 76 2E 79 29 3B  0D 20 20 20 20 20 70 6C  |.y+v.y);.     pl|
000007A0: 6F 74 28 32 2C 78 31 2C  79 31 2C 78 32 2C 79 32  |ot(2,x1,y1,x2,y2|
000007B0: 29 0D 20 20 20 20 45 4E  44 0D 20 20 20 45 4E 44  |).    END.   END|
000007C0: 0D 20 20 20 45 4C 53 45  0D 20 20 20 20 70 6C 6F  |.   ELSE.    plo|
000007D0: 74 28 32 2C 72 6F 75 6E  64 28 72 6F 6F 74 2E 78  |t(2,round(root.x|
000007E0: 29 2C 0D 20 20 20 20 20  20 20 20 20 20 20 72 6F  |),.           ro|
000007F0: 75 6E 64 28 72 6F 6F 74  2E 79 29 2C 0D 20 20 20  |und(root.y),.   |
00000800: 20 20 20 20 20 20 20 20  72 6F 75 6E 64 28 20 74  |        round( t|
00000810: 6F 70 2E 78 29 2C 0D 20  20 20 20 20 20 20 20 20  |op.x),.         |
00000820: 20 20 72 6F 75 6E 64 28  20 74 6F 70 2E 79 29 29  |  round( top.y))|
00000830: 0D 20 20 45 4E 44 0D 20  20 3B 0D 20 20 50 52 4F  |.  END.  ;.  PRO|
00000840: 43 45 44 55 52 45 0D 20  20 20 20 20 20 20 20 20  |CEDURE.         |
00000850: 20 20 20 74 61 6B 6B 65  6E 0D 20 20 20 20 20 20  |   takken.      |
00000860: 20 20 20 20 20 28 72 6F  6F 74 3A 20 76 65 63 74  |     (root: vect|
00000870: 6F 72 3B 0D 20 20 20 20  20 20 20 20 20 20 20 20  |or;.            |
00000880: 20 4C 2C 4F 3A 20 72 65  61 6C 3B 0D 20 20 20 20  | L,O: real;.    |
00000890: 20 20 20 20 64 2C 76 65  72 74 61 6B 3A 20 69 6E  |    d,vertak: in|
000008A0: 74 65 67 65 72 29 3B 0D  20 20 20 46 55 4E 43 54  |teger);.   FUNCT|
000008B0: 49 4F 4E 0D 20 20 20 20  20 20 20 20 20 20 20 20  |ION.            |
000008C0: 6B 61 6E 73 3A 20 62 6F  6F 6C 65 61 6E 3B 0D 20  |kans: boolean;. |
000008D0: 20 20 20 42 45 47 49 4E  0D 20 20 20 20 20 6B 61  |   BEGIN.     ka|
000008E0: 6E 73 3A 3D 28 72 61 6E  64 6F 6D 3E 31 32 37 29  |ns:=(random>127)|
000008F0: 0D 20 20 20 20 45 4E 44  0D 20 20 20 20 3B 0D 20  |.    END.    ;. |
00000900: 20 20 50 52 4F 43 45 44  55 52 45 0D 20 20 20 20  |  PROCEDURE.    |
00000910: 20 20 20 20 20 20 20 20  20 74 61 6B 20 28 73 69  |         tak (si|
00000920: 67 6E 3A 20 69 6E 74 65  67 65 72 29 3B 0D 20 20  |gn: integer);.  |
00000930: 20 56 41 52 0D 20 20 20  20 20 20 20 6E 4F 2C 6E  | VAR.       nO,n|
00000940: 4C 3A 20 72 65 61 6C 3B  0D 20 20 20 20 20 20 20  |L: real;.       |
00000950: 20 20 74 6F 70 3A 20 76  65 63 74 6F 72 3B 0D 20  |  top: vector;. |
00000960: 20 20 20 46 55 4E 43 54  49 4F 4E 0D 20 20 20 20  |   FUNCTION.    |
00000970: 20 20 20 20 20 20 20 20  20 72 75 69 73 0D 20 20  |         ruis.  |
00000980: 20 20 20 20 20 20 20 20  20 20 20 28 61 3A 20 69  |           (a: i|
00000990: 6E 74 65 67 65 72 29 0D  20 20 20 20 20 20 20 20  |nteger).        |
000009A0: 20 20 20 20 20 20 20 3A  20 72 65 61 6C 3B 0D 20  |       : real;. |
000009B0: 20 20 20 42 45 47 49 4E  0D 20 20 20 20 20 20 49  |   BEGIN.      I|
000009C0: 46 20 28 61 3D 30 29 0D  20 20 20 20 20 20 20 20  |F (a=0).        |
000009D0: 20 54 48 45 4E A0 72 75  69 73 3A 3D 30 0D 20 20  | THEN.ruis:=0.  |
000009E0: 20 20 20 20 20 20 20 45  4C 53 45 20 72 75 69 73  |       ELSE ruis|
000009F0: 3A 3D 0D 20 20 20 20 20  20 20 20 20 28 2D 61 2B  |:=.         (-a+|
00000A00: 28 72 61 6E 64 6F 6D 20  4D 4F 44 20 61 29 29 2F  |(random MOD a))/|
00000A10: 31 30 30 0D 20 20 20 20  45 4E 44 0D 20 20 20 20  |100.    END.    |
00000A20: 3B 0D 20 20 20 20 46 55  4E 43 54 49 4F 4E 0D 20  |;.    FUNCTION. |
00000A30: 20 20 20 20 20 20 20 20  20 20 20 20 66 72 61 63  |            frac|
00000A40: 74 69 6F 6E 0D 20 20 20  20 20 20 20 20 20 20 20  |tion.           |
00000A50: 20 20 28 4C 3A 20 72 65  61 6C 29 0D 20 20 20 20  |  (L: real).    |
00000A60: 20 20 20 20 20 20 20 20  20 20 20 3A 20 72 65 61  |           : rea|
00000A70: 6C 3B 0D 20 20 20 20 42  45 47 49 4E 0D 20 20 20  |l;.    BEGIN.   |
00000A80: 20 20 66 72 61 63 74 69  6F 6E 3A 3D 0D 20 20 20  |  fraction:=.   |
00000A90: 20 20 4C 2A 28 31 2B 72  75 69 73 28 76 4C 29 29  |  L*(1+ruis(vL))|
00000AA0: 2A 4C 64 0D 20 20 20 20  45 4E 44 0D 20 20 20 20  |*Ld.    END.    |
00000AB0: 3B 0D 20 20 20 20 46 55  4E 43 54 49 4F 4E 0D 20  |;.    FUNCTION. |
00000AC0: 20 20 20 20 20 20 20 20  20 20 20 20 76 61 72 69  |            vari|
00000AD0: 61 74 65 0D 20 20 20 20  20 20 20 20 20 20 20 20  |ate.            |
00000AE0: 20 28 4F 3A 20 72 65 61  6C 3B 0D 20 20 20 20 20  | (O: real;.     |
00000AF0: 20 20 20 20 20 20 73 69  67 6E 3A 20 69 6E 74 65  |      sign: inte|
00000B00: 67 65 72 29 0D 20 20 20  20 20 20 20 20 20 20 20  |ger).           |
00000B10: 20 20 20 20 3A 20 72 65  61 6C 3B 0D 20 20 20 20  |    : real;.    |
00000B20: 42 45 47 49 4E 0D 20 20  20 20 20 76 61 72 69 61  |BEGIN.     varia|
00000B30: 74 65 3A 3D 0D 20 20 20  20 20 4F 2B 4F 64 2A 28  |te:=.     O+Od*(|
00000B40: 72 75 69 73 28 76 4F 29  2B 73 69 67 6E 29 0D 20  |ruis(vO)+sign). |
00000B50: 20 20 20 45 4E 44 0D 20  20 20 20 3B 0D 20 20 20  |   END.    ;.   |
00000B60: 42 45 47 49 4E 20 28 2A  20 74 61 6B 20 2A 29 0D  |BEGIN (* tak *).|
00000B70: 20 20 20 20 6E 4F 3A 3D  20 76 61 72 69 61 74 65  |    nO:= variate|
00000B80: 28 4F 2C 73 69 67 6E 29  3B 0D 20 20 20 20 6E 4C  |(O,sign);.    nL|
00000B90: 3A 3D 66 72 61 63 74 69  6F 6E 28 4C 29 3B 0D 20  |:=fraction(L);. |
00000BA0: 20 20 20 73 74 61 6D 20  28 72 6F 6F 74 2C 6E 4C  |   stam (root,nL|
00000BB0: 2C 6E 4F 2C 64 2C 74 6F  70 29 3B 0D 20 20 20 20  |,nO,d,top);.    |
00000BC0: 74 61 6B 6B 65 6E 28 74  6F 70 2C 6E 4C 2C 6E 4F  |takken(top,nL,nO|
00000BD0: 2C 64 2D 31 2C 76 65 72  74 61 6B 2D 31 29 0D 20  |,d-1,vertak-1). |
00000BE0: 20 20 45 4E 44 0D 20 20  20 3B 0D 20 20 42 45 47  |  END.   ;.  BEG|
00000BF0: 49 4E 20 28 2A 20 74 61  6B 6B 65 6E 20 2A 29 0D  |IN (* takken *).|
00000C00: 20 20 20 49 46 20 28 76  65 72 74 61 6B 3E 3D 30  |   IF (vertak>=0|
00000C10: 29 20 54 48 45 4E 20 42  45 47 49 4E 0D 20 20 20  |) THEN BEGIN.   |
00000C20: 20 74 61 6B 28 2B 31 29  3B 0D 20 20 20 20 74 61  | tak(+1);.    ta|
00000C30: 6B 28 2D 31 29 3B 0D 20  20 20 20 49 46 20 28 64  |k(-1);.    IF (d|
00000C40: 3E 31 29 20 41 4E 44 20  6B 61 6E 73 20 54 48 45  |>1) AND kans THE|
00000C50: 4E 20 74 61 6B 28 30 29  0D 20 20 20 45 4E 44 0D  |N tak(0).   END.|
00000C60: 20 20 45 4E 44 0D 20 20  3B 0D 20 42 45 47 49 4E  |  END.  ;. BEGIN|
00000C70: 20 28 2A 20 74 65 6B 65  6E 65 6E 20 2A 29 0D 20  | (* tekenen *). |
00000C80: 20 20 73 74 61 6D 20 28  72 6F 6F 74 2C 4C 2C 4F  |  stam (root,L,O|
00000C90: 2C 64 2C 74 6F 70 29 3B  0D 20 20 20 74 61 6B 6B  |,d,top);.   takk|
00000CA0: 65 6E 28 74 6F 70 2C 4C  2C 4F 2C 64 2D 31 2C 76  |en(top,L,O,d-1,v|
00000CB0: 65 72 74 61 6B 2D 31 29  0D 20 45 4E 44 0D 20 3B  |ertak-1). END. ;|
00000CC0: 0D 42 45 47 49 4E 20 28  2A 20 74 72 65 65 20 2A  |.BEGIN (* tree *|
00000CD0: 29 0D 20 20 52 45 50 45  41 54 0D 20 20 20 20 70  |).  REPEAT.    p|
00000CE0: 61 72 61 6D 65 74 65 72  73 3B 0D 20 20 20 20 69  |arameters;.    i|
00000CF0: 6E 6B 28 31 34 29 3B 0D  20 20 20 20 49 46 20 65  |nk(14);.    IF e|
00000D00: 72 61 73 65 20 54 48 45  4E 20 67 72 61 66 69 6E  |rase THEN grafin|
00000D10: 69 74 28 30 2C 32 29 0D  20 20 20 20 20 20 20 20  |it(0,2).        |
00000D20: 20 20 20 20 20 45 4C 53  45 20 68 69 72 65 73 28  |     ELSE hires(|
00000D30: 31 29 3B 0D 20 20 20 20  74 65 6B 65 6E 65 6E 3B  |1);.    tekenen;|
00000D40: 0D 20 20 20 20 49 46 20  61 66 64 72 75 6B 20 54  |.    IF afdruk T|
00000D50: 48 45 4E 20 42 45 47 49  4E 0D 20 20 20 20 20 20  |HEN BEGIN.      |
00000D60: 20 6D 6F 76 65 3B 20 68  61 72 64 63 6F 70 79 0D  | move; hardcopy.|
00000D70: 20 20 20 20 45 4E 44 0D  20 20 55 4E 54 49 4C 20  |    END.  UNTIL |
00000D80: 6B 6C 61 61 72 6F 76 65  72 0D 45 4E 44 2E 0D FF  |klaarover.END...|
PROGRAM.        TREE (INPUT,OUTPUT);.CON
ST.           PI= 3.14159;.TYPE.       V
ECTOR= RECORD.                X,Y: REAL.
               END;.VAR.     ROOT,TOP: V
ECTOR;.        ERASE: BOOLEAN;.    L,O,L
D,OD: REAL;.        VL,VO,.     D,VERTAK
: INTEGER;.#ART.LIB. PROCEDURE.         
  PARAMETERS;. VAR.           X: INTEGER
;.           C: CHAR;. BEGIN.  PAGE; BOR
DER(0); EMPTY;.  WRITELN(' TREE ');.  WR
ITELN(' ');.  WRITE('#VERTAKKINGEN ',.  
      ' [1..10] = ');.  READLN(VERTAK);.
  WRITE('STAM-LENGTE   ',.        ' [1..
80] = ');.  READLN(L);.  WRITE('STAM-DIK
TE    ',.        ' [3..11] = ');.  READL
N(D);.  O:=PI/2;.  (* CONTROLE *).  IF N
OT (VERTAK IN [1..10]).     THEN VERTAK:
=3;.  IF (L<1)OR(L>80).     THEN L:=50;.
  IF NOT(D IN [3..11]).     THEN D:=4;. 
 WRITE('VERKORTING    ',.   ' (%) [1..90
] = ');.  READLN(X);.  WRITE(' RUIS DAAR
 OP ',.   ' (%) [0..30] = ');.  READLN(V
L);.  IF NOT (X  IN [1..90]).     THEN X
:=66;.  IF NOT (VL IN [0..30]).     THEN
 VL:=0;.  LD:=X/100;.  WRITE('HOEK VARIA
TIE ',.   ' (%) [5..45] = ');.  READLN(X
);.  WRITE(' RUIS DAAR OP ',.   ' (%) [0
..30] = ');.  READLN(VO);.  IF NOT (X  I
N [5..45]).     THEN X:=30;.  IF NOT (VO
 IN [0..30]).     THEN VO:=0;.  OD:=X*PI
/180;.  WRITE('COORDINATEN STAM ',.     
   '[X Y] = ');.  READLN(ROOT.X,ROOT.Y);
.  WRITE('HIRES-SCHERM SCHOON ',.       
 '(J/N) ? ');.  READLN(C);.  ERASE:=(C='
J');. END. ;. PROCEDURE.           TEKEN
EN;.  PROCEDURE.            STAM.       
    (ROOT: VECTOR;.             L,O: REA
L;.               D: INTEGER;.         V
AR TOP: VECTOR);.  VAR.      X1,X2,Y1,Y2
: INTEGER;.                Z: INTEGER;. 
         V,DELTA: VECTOR;.  BEGIN.   TOP
.X:=L*COS(O)+ROOT.X;.   TOP.Y:=L*SIN(O)+
ROOT.Y;.   IF (D>1).   THEN BEGIN.    DE
LTA.X:=-SIN(O)/2;.    DELTA.Y:=+COS(O)/2
;.    FOR Z:=-D TO +D DO BEGIN.     V.X:
=Z*DELTA.X;.     V.Y:=Z*DELTA.Y;.     X1
:=ROUND(ROOT.X+V.X);.     Y1:=ROUND(ROOT
.Y+V.Y);.     X2:=ROUND( TOP.X+V.X);.   
  Y2:=ROUND( TOP.Y+V.Y);.     PLOT(2,X1,
Y1,X2,Y2).    END.   END.   ELSE.    PLO
T(2,ROUND(ROOT.X),.           ROUND(ROOT
.Y),.           ROUND( TOP.X),.         
  ROUND( TOP.Y)).  END.  ;.  PROCEDURE. 
           TAKKEN.           (ROOT: VECT
OR;.             L,O: REAL;.        D,VE
RTAK: INTEGER);.   FUNCTION.            
KANS: BOOLEAN;.    BEGIN.     KANS:=(RAN
DOM>127).    END.    ;.   PROCEDURE.    
         TAK (SIGN: INTEGER);.   VAR.   
    NO,NL: REAL;.         TOP: VECTOR;. 
   FUNCTION.             RUIS.          
   (A: INTEGER).               : REAL;. 
   BEGIN.      IF (A=0).         THEN RU
IS:=0.         ELSE RUIS:=.         (-A+
(RANDOM MOD A))/100.    END.    ;.    FU
NCTION.             FRACTION.           
  (L: REAL).               : REAL;.    B
EGIN.     FRACTION:=.     L*(1+RUIS(VL))
*LD.    END.    ;.    FUNCTION.         
    VARIATE.             (O: REAL;.     
      SIGN: INTEGER).               : RE
AL;.    BEGIN.     VARIATE:=.     O+OD*(
RUIS(VO)+SIGN).    END.    ;.   BEGIN (*
 TAK *).    NO:= VARIATE(O,SIGN);.    NL
:=FRACTION(L);.    STAM (ROOT,NL,NO,D,TO
P);.    TAKKEN(TOP,NL,NO,D-1,VERTAK-1). 
  END.   ;.  BEGIN (* TAKKEN *).   IF (V
ERTAK>=0) THEN BEGIN.    TAK(+1);.    TA
K(-1);.    IF (D>1) AND KANS THEN TAK(0)
.   END.  END.  ;. BEGIN (* TEKENEN *). 
  STAM (ROOT,L,O,D,TOP);.   TAKKEN(TOP,L
,O,D-1,VERTAK-1). END. ;.BEGIN (* TREE *
).  REPEAT.    PARAMETERS;.    INK(14);.
    IF ERASE THEN GRAFINIT(0,2).        
     ELSE HIRES(1);.    TEKENEN;.    IF 
AFDRUK THEN BEGIN.       MOVE; HARDCOPY.
    END.  UNTIL KLAAROVER.END...
C64 Preview

> CLICK IMAGE PREVIEW FOR FULL MODAL