farry

fractal-mountain.py

Nov 12th, 2017
2,699
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.85 KB | None | 0 0
  1. import numpy, random
  2. from mayavi import mlab
  3.  
  4. levels = 11
  5. size = 2 ** (levels - 1)
  6. height  = numpy.zeros((size + 1, size + 1))
  7.  
  8. for lev in range(levels):
  9.   step = size // 2 ** lev
  10.   for y in range(0, size + 1, step):
  11.     jumpover = 1 - (y // step) % 2 if lev > 0 else 0
  12.     for x in range(step * jumpover, size + 1, step * (1 + jumpover)):
  13.       pointer = 1 - (x // step) % 2 + 2 * jumpover if lev > 0 else 3
  14.       yref, xref = step * (1 - pointer // 2), step * (1 - pointer % 2)
  15.       corner1 = height[y - yref, x - xref]
  16.       corner2 = height[y + yref, x + xref]
  17.       average = (corner1 + corner2) / 2.0
  18.       variation = step * (random.random() - 0.5)
  19.       height[y,x] = average + variation if lev > 0 else 0
  20.  
  21. xg, yg = numpy.mgrid[-1:1:1j*size,-1:1:1j*size]
  22. surf = mlab.surf(xg, yg, height, colormap='gist_earth', warp_scale='auto')
  23. mlab.show()
Advertisement
Add Comment
Please, Sign In to add comment