Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '
- ' Nasa Rouf nasarouf@gmail.com
- ' generates the dedication graphics for the PhD thesis
- ' http://www.cs.ubc.ca/~nasarouf/rouf_2018_computational.pdf
- '
- '
- DECLARE SUB printme (row!, s$)
- DECLARE SUB printNames (px() AS INTEGER, h!, w!, skip!)
- DECLARE SUB colorz ()
- DECLARE FUNCTION rz! ()
- DECLARE SUB cap (px() AS INTEGER, r!, h!, w!, skip!)
- DECLARE SUB drawNames (px() AS INTEGER, h!, w!, r!, c!, subs!)
- DECLARE SUB boxz (bx!())
- SCREEN 12
- 'darkening mask
- CLS
- DIM bx(100)
- LINE (0, 0)-(9, 9), 7, BF
- GET (0, 0)-(9, 9), bx
- CLS
- 'buffer for names
- skip = 1
- h = INT(5 * (16 / skip))
- w = INT(6 * 5 * 8 / skip)
- DIM px(4 * h, w / 8) AS INTEGER
- 'capture names
- printNames px(), h, w, skip
- CLS
- 'colorful animation; press any key to select and move to the next
- colorz
- boxz bx()
- drawNames px(), 4 * h, w, 240 - 2 * h + 36, 320 - w / 2, h
- COLOR 7
- END
- SUB boxz (bx())
- w = 90
- 'FOR x = w TO 640 - x
- ' FOR y = w TO 480 - w
- ' PSET (x, y), (POINT(x, y) AND 7)
- ' NEXT
- 'NEXT
- FOR x = w TO 640 - w - 1 STEP 10
- FOR y = w TO 480 - w - 1 STEP 10
- PUT (x, y), bx, AND
- NEXT
- NEXT
- FOR t = 0 TO 20 STEP 4
- LINE (w + t, w + t)-(640 - w - t, 480 - w - t), 7, B
- NEXT
- END SUB
- SUB cap (px() AS INTEGER, r, h, w, skip)
- FOR i = 0 TO h - 1
- k = 0
- v = 0
- FOR j = 0 TO w - 1
- vv = POINT(j * skip, i * skip)
- IF vv > 0 THEN vv = 1
- v = v * 2 + vv
- k = k + 1
- IF k = 8 THEN
- k = 0
- px(r + i, j / 8) = v
- v = 0
- END IF
- NEXT
- NEXT
- END SUB
- SUB colorz
- cn = 5
- DIM c(5)
- c(0) = 9
- c(1) = 11
- c(2) = 10
- c(3) = 14
- c(4) = 12
- c(5) = 0
- n = cn * 100 + 1
- DIM x1(n), y1(n), x2(n), y2(n)
- dx1 = rz
- dy1 = rz
- dx2 = rz
- dy2 = rz
- FOR i = 0 TO 100
- x1(i) = 0
- x2(i) = 0
- y1(i) = 0
- y2(i) = 0
- NEXT
- FOR i = 1 TO 50000
- ' PRINT i
- IF INKEY$ <> "" THEN EXIT FOR
- k = i MOD n
- k1 = (i - 1) MOD n
- x1(k) = x1(k1) + dx1
- IF x1(k) >= 640 OR x1(k) <= 1 THEN
- x1(k) = x1(k1)
- dx1 = -SGN(dx1) * rz
- END IF
- y1(k) = y1(k1) + dy1
- IF y1(k) >= 480 OR y1(k) <= 1 THEN
- y1(k) = y1(k1)
- dy1 = -SGN(dy1) * rz
- END IF
- x2(k) = x2(k1) + dx2
- IF x2(k) >= 640 OR x2(k) <= 1 THEN
- x2(k) = x2(k1)
- dx2 = -SGN(dx2) * rz
- END IF
- y2(k) = y2(k1) + dy2
- IF y2(k) >= 480 OR y2(k) <= 1 THEN
- y2(k) = y2(k1)
- dy2 = -SGN(dy2) * rz
- END IF
- FOR cc = 0 TO cn
- IF i > cc * 100 THEN
- kk = (i - cc * 100) MOD n
- LINE (x1(kk), y1(kk))-(x2(kk), y2(kk)), c(cc)
- END IF
- NEXT
- NEXT
- END SUB
- SUB drawNames (px() AS INTEGER, h, w, r, c, subs)
- ii = 0
- dif = 0
- rate = 8
- ita = subs / rate
- FOR i = 0 TO h - 1
- IF i MOD subs = 0 THEN
- IF dif = 0 THEN dif = (i - ii) / 2
- ii = ii + dif
- ita = subs / rate
- ELSE
- ita = ita - 1! / rate
- END IF
- k = 128
- sm = 0
- FOR j = 0 TO w / 8 - 1
- sm = sm + px(i, j)
- NEXT
- IF (sm = 0) THEN GOTO skipdrawing
- FOR j = 0 TO w - 1
- IF INT(px(i, INT(j / 8)) / k) MOD 2 > 0 THEN
- PSET (INT(j + c + ita), ii + r), 15
- 'ELSE
- ' PSET (j, i), 8
- END IF
- k = INT(k / 2)
- IF k = 0 THEN k = 128
- NEXT
- ii = ii + 1
- skipdrawing:
- NEXT
- END SUB
- SUB printme (row, s$)
- row = row + 1
- col = 1
- 'WHILE LEN(s$) > 0 AND LEFT$(s$, 1) = " "
- ' col = col + 1
- ' s$ = RIGHT$(s$, LEN(s$) - 1)
- 'WEND
- 'PRINT row
- IF (col > 0) THEN LOCATE row, col
- PRINT s$
- END SUB
- SUB printNames (px() AS INTEGER, h, w, skip)
- row = 0
- prefix$ = ""
- printme row, prefix$ + " A M M M M U U"
- printme row, prefix$ + " A A MM MM MM MM U U"
- printme row, prefix$ + "A A M M M M M M U U"
- printme row, prefix$ + "AAAAA M M M M U U"
- printme row, prefix$ + "A A M M M M UUU"
- printme row, ""
- cap px(), 0, h, w, skip
- row = 0
- printme row, prefix$ + " A BBBB BBBB U U"
- printme row, prefix$ + " A A B B B B U U"
- printme row, prefix$ + "A A BBBB BBBB U U"
- printme row, prefix$ + "AAAAA B B B B U U"
- printme row, prefix$ + "A A BBBB BBBB UUU"
- printme row, ""
- cap px(), h, h, w, skip
- row = 0
- printme row, prefix$ + " A L III CCC EEEEE"
- printme row, prefix$ + " A A L I C E"
- printme row, prefix$ + "A A L I C EEE"
- printme row, prefix$ + "AAAAA L I C E"
- printme row, prefix$ + "A A LLLLL III CCCC EEEEE"
- printme row, ""
- cap px(), h * 2, h, w, skip
- row = 0
- printme row, prefix$ + "N N A FFFFF III "
- printme row, prefix$ + "NN N A A F I "
- printme row, prefix$ + "N N N A A FFF I "
- printme row, prefix$ + "N NN AAAAA F I "
- printme row, prefix$ + "N N A A F III "
- printme row, ""
- cap px(), h * 3, h, w, skip
- row = 0
- END SUB
- FUNCTION rz
- rz = RND * 5 + 1
- END FUNCTION
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement