Advertisement
Guest User

NewCubic

a guest
Aug 29th, 2015
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 10.94 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Fri Dec 06 11:41:17 2013
  4.  
  5. @author: Tom Babbitt
  6.  
  7. """
  8.  
  9. import math,cmath
  10. import numpy as np
  11. from PIL import Image
  12. import random
  13. RN = random.uniform
  14. MIAN = math.isnan
  15. NPFS = np.fromstring
  16. NP16 = np.int16
  17. MSN = math.sin
  18. NA = np.arange
  19. NPA = np.array
  20. MPI = math.pi
  21. MCS = math.cos
  22. IMN = Image.new
  23. CMLG = cmath.log
  24. IMGM = Image.merge
  25.  
  26. class IFS(object):
  27.     def __init__(self,Fn,Io):
  28.         self.Fn = Fn
  29.         self.Io = Io
  30.         self.Inext = Io
  31.     def __iter__(self):
  32.         return self
  33.     def next(self):
  34.         if self.Fn:
  35.             self.Inext = self.Fn(self.Inext)
  36.         return self.Inext
  37.  
  38. def imguxcol(graylist,fname):
  39.     imr = IMN('L',(len(graylist[0][int(len(graylist[0])/2)]),len(graylist[0])))
  40.     img = IMN('L',(len(graylist[0][int(len(graylist[0])/2)]),len(graylist[0])))
  41.     imb = IMN('L',(len(graylist[0][int(len(graylist[0])/2)]),len(graylist[0])))
  42.     for c,i in enumerate(graylist[0]):
  43.         for k,l in enumerate(i):
  44.             if l == None:
  45.                 l= 0
  46.             elif l > 255:
  47.                 l = 255
  48.             elif l < 0:
  49.                 l = 0
  50.             imr.putpixel((c,k),l)
  51.     for c,i in enumerate(graylist[1]):
  52.         for k,l in enumerate(i):
  53.             if l == None:
  54.                 l= 0
  55.             elif l > 255:
  56.                 l = 255
  57.             elif l < 0:
  58.                 l = 0
  59.             img.putpixel((c,k),l)
  60.     for c,i in enumerate(graylist[2]):
  61.         for k,l in enumerate(i):
  62.             if l == None:
  63.                 l= 0
  64.             elif l > 255:
  65.                 l = 255
  66.             elif l < 0:
  67.                 l = 0
  68.             imb.putpixel((c,k),l)
  69.     im = IMGM('RGB',(imr,img,imb))
  70.     im.save(open(fname,'wb'))
  71.    
  72. def imgux(gray,fname):
  73.     im = IMN('L',(len(gray[int(len(gray)/2)]),len(gray)))
  74.     for c,i in enumerate(gray):
  75.         for k,l in enumerate(i):
  76.             if l == None:
  77.                 l= 0
  78.             elif l > 255:
  79.                 l = 255
  80.             elif l < 0:
  81.                 l = 0
  82.             im.putpixel((c,k),l)  
  83.     im.save(open(fname,'wb'))
  84.    
  85. hbar = 1.0545718
  86. hbar = hbar * 10**-34 #* (10**−34)
  87.  
  88. def schrodenger(a1):
  89.     a,b,z = a1[0],a1[1],a1[2]
  90.     if z.real == 0 and z.imag == 0:
  91.         z = CMLG(complex(MCS(hbar),MSN(hbar)))
  92.     try:
  93.         z =  z**3 - 3* a**2 * z + b
  94.         #l =  j**5  + j
  95.        
  96.     except:
  97.         z = CMLG(complex(MCS(hbar),MSN(hbar)))
  98.     return NPA([a,b,z])
  99.    
  100. def mandle(a1):
  101.     j,c = a1[0],a1[1]
  102.     try:
  103.         j =  j**5 + c
  104.         #l =  j**5  + j
  105.        
  106.     except:
  107.         j = complex(.0001,.0001)
  108.     return NPA([j,c])
  109.    
  110. def mandle9(a2):
  111.     j,k,c = a2[0],a2[1],a2[2]
  112.     try:
  113.         j =  j**9 - 36 * j**7 *(k.real**2 + k.imag**2) + 126 * j**5 *(k.real**2 + k.imag**2)**2 - 84 * j**3 *(k.real**2 + k.imag**2)**3 + 9 * j *(k.real**2 + k.imag**2)**4 + c
  114.     except:
  115.         j = complex(.0001,.0001)
  116.     return NPA([j,c,k])  
  117. #superimg = [[0 for i in range(2048)] for j in range(2048)]
  118. superimg2R = [[0 for i in range(2048)] for j in range(2048)]
  119. superimg2G = [[0 for i in range(2048)] for j in range(2048)]
  120. superimg2B = [[0 for i in range(2048)] for j in range(2048)]
  121. superimg4R = [[0 for i in range(2048)] for j in range(2048)]
  122. superimg4G = [[0 for i in range(2048)] for j in range(2048)]
  123. superimg4B = [[0 for i in range(2048)] for j in range(2048)]
  124. su2R = [[0 for i in range(2048)] for j in range(2048)]
  125. su2G = [[0 for i in range(2048)] for j in range(2048)]
  126. su2B = [[0 for i in range(2048)] for j in range(2048)]
  127.  
  128. def mandle5(a3):
  129.     j,l,c,k = a3[0],a3[1],a3[2],a3[3]
  130.     try:
  131.         j = j**5-10* j**3* k**2 + 5* j* k**4 + c
  132.         #j =  j**5 + k
  133.         l = l**5-10* l**3* j**2 + 5* l* j**4 + k
  134. #        l = l**5-10* l**3* c**2 + 5* l* c**4 + k
  135. #        j = j**5-10* j**3* l**2 + 5* j* l**4 + c
  136.     except:
  137.         j = complex(.0001,.0001)
  138.         l = complex(.0001,.0001)
  139.     return NPA([j,l,c,k])
  140.  
  141.  
  142. for picnum in range(40):    
  143.     for i in range(120):#60):#120):
  144.         for j in range(120):#60):#120):
  145.             complex_time2 = complex((i-60.)/60.,(j-60.)/60.)#(i-30.)/30.,(j-30.)/30.)#60.)/ 60., (j-60.)/60.)
  146.             rnum = complex(RN(-1.,1.),RN(-1.,1.))#complex(RN(-1./30.,1./30.),RN(-1./30.,1./30.))
  147.             rnum2 = complex(RN(-1.,1.),RN(-1.,1.))
  148.             rnum3 = complex(RN(-1.,1.),RN(-1.,1.))
  149.             rnum4 = complex(RN(-1.,1.),RN(-1.,1.))
  150.             #newIFS2 = IFS(mandle9,NPA([rnum2,complex_time2,rnum]))
  151.             newIFS3 = IFS(mandle5,NPA([rnum3,rnum4,rnum,complex_time2]))
  152.             newIFS = IFS(mandle,NPA([rnum,complex_time2]))
  153.             for itercount in range(1024):                
  154.                 nextnum = newIFS.next()
  155.                 #nextnum2 = newIFS2.next()
  156.                 nextnum3 = newIFS3.next()
  157.                 try:
  158.                     newvalc = nextnum3[0]#/ nextnum[0]
  159.                 except:
  160.                     newvalc =  complex(.001,.001)
  161.                 if MIAN(newvalc.real):
  162.                     newvalc = complex(1.,newvalc.imag)
  163.                 if MIAN(newvalc.imag):
  164.                     newvalc = complex(newvalc.real,1.)
  165.                 if newvalc.real > 1.:
  166.                     newvalc = complex(1.,newvalc.imag)
  167.                 elif newvalc.real < -1.:
  168.                     newvalc = complex(-1.,newvalc.imag)
  169.                 if newvalc.imag > 1.:
  170.                     newvalc = complex(newvalc.real,1.)
  171.                 elif newvalc.imag < -1.:
  172.                     newvalc = complex(newvalc.real,-1)            
  173.                
  174.                
  175.                 try:
  176.                     newvalD =  nextnum3[1]#nextnum[0]-nextnum3[0]
  177.                 except:
  178.                     newvalD =  complex(.001,.001)
  179.                 if MIAN(newvalD.real):
  180.                     newvalD = complex(1.,newvalD.imag)
  181.                 if MIAN(newvalD.imag):
  182.                     newvalD = complex(newvalD.real,1.)
  183.                 if newvalD.real > 1.:
  184.                     newvalD = complex(1.,newvalD.imag)
  185.                 elif newvalD.real < -1.:
  186.                     newvalD = complex(-1.,newvalD.imag)
  187.                 if newvalD.imag > 1.:
  188.                     newvalD = complex(newvalD.real,1.)
  189.                 elif newvalD.imag < -1.:
  190.                     newvalD = complex(newvalD.real,-1)        
  191.                
  192.                 if MIAN(nextnum[0].real):
  193.                     nextnum[0] = complex(1.,nextnum[0].imag)
  194.                 if MIAN(nextnum[0].imag):
  195.                     nextnum[0] = complex(nextnum[0].real,1.)
  196.                 if nextnum[0].real > 1.:
  197.                     nextnum[0] = complex(1.,nextnum[0].imag)
  198.                 elif nextnum[0].real < -1.:
  199.                     nextnum[0] = complex(-1.,nextnum[0].imag)
  200.                 if nextnum[0].imag > 1.:
  201.                     nextnum[0] = complex(nextnum[0].real,1.)
  202.                 elif nextnum[0].imag < -1.:
  203.                     nextnum[0] = complex(nextnum[0].real,-1)
  204. #                if nextnum2[0].real > 1.:
  205. #                    nextnum2[0] = complex(1.,nextnum2[0].imag)
  206. #                elif nextnum2[0].real < -1.:
  207. #                    nextnum2[0] = complex(-1.,nextnum2[0].imag)
  208. #                if nextnum2[0].imag > 1.:
  209. #                    nextnum2[0] = complex(nextnum2[0].real,1)
  210. #                elif nextnum2[0].imag < -1.:
  211. #                    nextnum2[0] = complex(nextnum2[0].real,-1)
  212.                
  213.                 su2R[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023] += 10
  214.                 if su2R[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023]  >255:
  215.                     su2R[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.+ 1023)]  = 255
  216.                 su2G[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023] += 5
  217.                 if su2G[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023]  >255:
  218.                     su2G[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.+ 1023)]  = 255
  219.                 su2B[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023] += 2
  220.                 if su2B[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.)+ 1023]  >255:
  221.                     su2B[int(newvalD.imag * 1024.)+ 1023][int(newvalD.real * 1024.+ 1023)]  = 255
  222. #                superimg[int(nextnum2[0].imag * 1024.)+ 1023][int(nextnum2[0].real * 1024.)+ 1023] += 10
  223. #                if superimg[int(nextnum2[0].imag * 1024.)+ 1023][int(nextnum2[0].real * 1024.)+ 1023]  >255:
  224. #                    superimg[int(nextnum2[0].imag * 1024.)+ 1023][int(nextnum2[0].real * 1024.+ 1023)]  = 240
  225.                 superimg2R[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] += 10
  226.                 if superimg2R[int(nextnum[0].imag * 1024.)][int(nextnum[0].real * 1024.)] >255:
  227.                     superimg2R[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] = 255
  228.                 superimg2G[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] += 5
  229.                 if superimg2G[int(nextnum[0].imag * 1024.)][int(nextnum[0].real * 1024.)] >255:
  230.                     superimg2G[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] = 255
  231.                 superimg2B[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] += 2
  232.                 if superimg2B[int(nextnum[0].imag * 1024.)][int(nextnum[0].real * 1024.)] >255:
  233.                     superimg2B[int(nextnum[0].imag * 1024.)+ 1023][int(nextnum[0].real * 1024.)+ 1023] = 255
  234.                    
  235.                 superimg4R[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] += 10
  236.                 if superimg4R[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] >255:
  237.                     superimg4R[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] = 240
  238.                 superimg4G[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] += 5
  239.                 if superimg4G[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] >255:
  240.                     superimg4G[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] = 240
  241.                 superimg4B[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] += 2
  242.                 if superimg4B[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] >255:
  243.                     superimg4B[int(newvalc.imag * 1024.)+ 1023][int(newvalc.real * 1024.)+ 1023] = 240
  244.         print(i)
  245.     imguxcol((superimg2R,superimg2G,superimg2B),'c:\\python34\\tom\\lena182\\mandle'+str(picnum)+'.png')
  246.     imguxcol((superimg4R,superimg4G,superimg4B),'c:\\python34\\tom\\lena182\\mandle50'+str(picnum)+'.png')
  247.     #imgux(superimg,'c:\\python34\\tom\\lena178\\mandle9'+str(picnum)+'.png')
  248.     imguxcol((su2R,su2G,su2B),'c:\\python34\\tom\\lena182\\mandle51'+str(picnum)+'.png')
  249.     #su = [[abs(superimg4[j][k]- superimg[j][k])for j in range(2048)] for k in range(2048)]
  250.     #imgux(su,'c:\\python34\\tom\\lena178\\mandle-mandle9'+str(picnum)+'.png')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement