Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- REM *** Pythagoras tree ****
- SCREEN 12: REM screen 12 voor VGA
- CLS : pi = 4 * ATN(1)
- WINDOW (-2.5, 2)-(5.5, 5)
- INPUT "tolerantie (kan .1 zijn) =", eps: CLS
- p = 32: DIM xa(p), ya(p), xb(p), yb(p), s(p)
- REM *** initialiseren ****
- h = pi / 3'prescribed angle
- a1 = COS(h) * COS(h): b1 = SIN(h) * COS(h)
- a2 = SIN(h) * SIN(h): b2 = -b1
- xa = 0: ya = -1: xb = 0: yb = 0: g = 0: m = 0
- LINE (0, 0)-(1, 0): LINE -(1, -1)
- LINE -(0, -1): LINE -(0, 0)
- DO WHILE m >= 0
- diff = ABS(xb - xa) + ABS(yb - ya)
- IF g < p AND diff > eps THEN
- m = m + 1: g = g + 1: s(m) = g
- GOSUB graphics
- xa = xan: ya = yan: xb = xbn: yb = ybn
- ELSE
- xa = xa(m): ya = ya(m): xb = xb(m): yb = yb(m)
- g = s(m): m = m - 1
- END IF
- LOOP: END
- graphics:
- u = xb - xa: v = yb -ya
- xan = xb: yan = yb
- xbn = xb + a1 * u - b1 * v: ybn = yb + b1 * u + a1 * v
- un = xbn - xan: vn = ybn - yan
- xcn = xbn + vn: ycn = ybn - un
- xdn = xan + vn: ydn = yan - un
- LINE (xan, yan)-(xbn, ybn): LINE -(xcn, ycn)
- LINE -(xdn, ydn): LINE -(xan, yan)
- xa(m) = xdn: ya(m) = ydn
- xb(m) = xa(m) + a2 * u - b2 * v: yb(m) = ya(m) + b2 * u + a2 * v
- ur = xb(m) - xa(m): vr = yb(m) - ya(m)
- xcr = xb(m) + vr: ycr = yb(m) - ur
- xdr = xa(m) + vr: ydr = ya(m) - ur
- LINE (xa(m), ya(m))-(xb(m), yb(m)): LINE -(xcr, ycr)
- LINE -(xdr, ydr): LINE -(xa(m), ya(m))
- RETURN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement