image_false_colors.py 871 B

1234567891011121314151617181920212223
  1. """Generate the Mandelbrot set as a color-mapped Image object"""
  2. import numpy as np
  3. from vedo import Image, dataurl, show
  4. def mandelbrot(h=400, w=400, maxit=20, r=2):
  5. # Returns an image of the Mandelbrot fractal of size (h,w)
  6. x = np.linspace(-2.5, 1.5, 4*h+1)
  7. y = np.linspace(-1.5, 1.5, 3*w+1)
  8. A, B = np.meshgrid(x, y)
  9. C = A + B*1j
  10. z = np.zeros_like(C)
  11. divtime = maxit + np.zeros(z.shape, dtype=int)
  12. for i in range(maxit):
  13. z = z**2 + C
  14. diverge = abs(z) > r # who is diverging
  15. div_now = diverge & (divtime == maxit) # who is diverging now
  16. divtime[div_now] = i # note when
  17. z[diverge] = r # avoid diverging too much
  18. return divtime
  19. img = Image(mandelbrot()).cmap("RdGy")
  20. show(img, __doc__, axes=1, size=[800,600], zoom=1.4).close()