You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

75 lines
1.8 KiB

7 years ago
  1. from math import log
  2. from PIL import Image
  3. from serp import serp
  4. class SubPix:
  5. def __init__(self,mode,size,color = 0,s=2):
  6. self.s = s
  7. try:
  8. self.image = Image.new(mode,tuple(map(lambda x: int(x*s),size)),color)
  9. except:
  10. print(tuple(map(lambda x: x*s,size)))
  11. def set_subpix(self,cord,v):
  12. s=self.s
  13. x,y = map(lambda c: int(c*s),cord)
  14. args = tuple(map(lambda n: ((n%s+x,n//s+y),v),range(s**2)))
  15. for i in args:
  16. self.image.putpixel(*i)
  17. def make_triangle(n,b_w = False,outdir = r'x:\Users\Ralphie\Documents'):
  18. n = 2**n
  19. if b_w:
  20. p = (255,255,255)
  21. np = (0,0,0)
  22. else:
  23. np = (255,255,255)
  24. p = (0,0,0)
  25. s = serp(n)
  26. c = 0
  27. off = n-1
  28. triangle = SubPix('RGB',(2*n-1,n),np)
  29. for row in s:
  30. for x in range(len(row)):
  31. xy = (c,2*(x)+off)
  32. if row[x]:
  33. v = p
  34. else:
  35. v = np
  36. triangle.set_subpix(xy, v)
  37. off -= 1
  38. c += 1
  39. triangle.image.save(r'{}\serp.png'.format(outdir))
  40. ##make_triangle(11)
  41. def make_triangle1(n,b_w = False,outdir = r'x:\users\Ralphie\Documents'):
  42. n = 2**n
  43. if b_w:
  44. p = (255,255,255)
  45. np = (0,0,0)
  46. else:
  47. np = (255,255,255)
  48. p = (0,0,0)
  49. s = serp(n)
  50. c = 0
  51. off = (n-1)/2
  52. triangle = SubPix('RGB',(n,n),np)
  53. for row in s:
  54. for x in range(len(row)):
  55. xy = (x+off,c)
  56. if row[x]:
  57. v = p
  58. else:
  59. v = np
  60. try:
  61. triangle.set_subpix(xy,v)
  62. except:
  63. print(xy,triangle.image.size)
  64. off -= .5
  65. c += 1
  66. triangle.image.save(r'{}\serp.png'.format(outdir))
  67. make_triangle1(6)