20100312

Poslední buddhabrot, kterým vás otravuji

Od nynějška již nebudu mrhat časem CPU svého počítače na buddhabrota. Zde je poslední obrázek, který můj počítač vygeneroval.
Nyní se zaměřím na něco mnohem zajímavějšího, a to generování buddha-like fraktálu Burning ship, který vám popíšu ve svém příštím příspěvku. Zatím přeji hezký víkend vám všem.



EDIT:
pro zájemce ještě přidávám zdroják v pythonu, kterým jsem těchto všech obrázků docílil.


from math import sqrt
import bpy
from random import randrange
from time import time
me=bpy.data.meshes.new('Mandel')
scn = bpy.data.scenes.active
ob = scn.objects.new(me, 'Mandel')
timers=time()


def iter(zr,zi,r,i):
 return (zr*zr)-(zi*zi)+r,2*zr*zi+i


def check(r,i,it,bail):
 zr,zi=r,i
 a=1
 while a<=it:
  zr,zi=iter(zr,zi,r,i)
  if sqrt((zr**2)+(zi**2))>=bail:
   return 1
  a+=1
 return 0


def plot(r,i,b,it,bail):
 zr=r
 zi=i
 a=1
 while a<=it:
  zr,zi=iter(zr,zi,r,i)
  me.verts.extend([[zr,zi,b],[zr,-zi,b]])
  if sqrt((zr**2)+(zi**2))>=bail:
   return False
  a+=1
 return True


try:
 a=1
 timer=time()
 timers=time()
 while 0==0:
  r=randrange(-30000000000000,30000000000000)/float(10000000000000)
  i=randrange(-30000000000000,30000000000000)/float(10000000000000)
  if (a%1000)==0:
   print a,"iterovanych bodu Z (",time()-timer,"sec. )"
   timer=time()
  plot(r,i,check(r,i,1000,16),1000,16)
  a+=1

finally:
 print "Celkem iterovano",a,"bodu Z, ubehlo",time()-timers,"sekund."

1 komentář: