ForrestFox

FBM: Frac Broun Motion

Feb 19th, 2021 (edited)
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
QBasic 0.90 KB | None | 0 0
  1. SCREEN 13
  2.  
  3. COLOR 63
  4. FOR i = 0 TO 63: OUT 968, i: OUT 969, i: OUT 969, i: OUT 969, i: NEXT
  5.  
  6. FOR y = 0 TO 200
  7. FOR x = 0 TO 320
  8.  
  9.   mx = x / 320 * 8
  10.   my = y / 200 * 8
  11.   r = fbm(mx, my)
  12.   PSET (x, y), r * 63
  13.  
  14. NEXT
  15. NEXT
  16.  
  17. FUNCTION fbm (x, y)
  18.  
  19.   value = 0
  20.   amp = .5
  21.   freq = 0
  22.  
  23.   FOR i = 0 TO 5
  24.  
  25.     value = value + amp * noise(x, y)
  26.     x = x * 2
  27.     y = y * 2
  28.     amp = amp * .5
  29.  
  30.   NEXT
  31.  
  32.   fbm = value
  33.  
  34. END FUNCTION
  35.  
  36. FUNCTION noise (x, y)
  37.  
  38.   ix = INT(x): fx = x - ix
  39.   iy = INT(y): fy = y - iy
  40.  
  41.   a = rand(ix, iy)
  42.   b = rand(ix + 1, iy)
  43.   c = rand(ix, iy + 1)
  44.   d = rand(ix + 1, iy + 1)
  45.  
  46.   ux = fx ^ 2 * (3 - 2 * fx)
  47.   uy = fy ^ 2 * (3 - 2 * fy)
  48.  
  49.   noise = a * (1 - ux) + b * ux + (c - a) * uy * (1 - ux) + (d - b) * ux * uy
  50.  
  51. END FUNCTION
  52.  
  53. FUNCTION rand (x AS SINGLE, y AS SINGLE)
  54.  
  55.   m = SIN(x * 12.9898 + y * 78.233) * 43758.54531229992#
  56.   rand = m - INT(m)
  57.  
  58. END FUNCTION
Add Comment
Please, Sign In to add comment