Skip to content

Instantly share code, notes, and snippets.

@justvanrossum
Last active January 5, 2016 11:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save justvanrossum/9ba02301ea5d151a8b61 to your computer and use it in GitHub Desktop.
Save justvanrossum/9ba02301ea5d151a8b61 to your computer and use it in GitHub Desktop.
DrawBot: A moving tribute to Ellsworth Kelly's "Seine" (1951).
# A moving tribute to Ellsworth Kelly's "Seine" (1951).
from random import seed # seed() allows us to get repeatable pseudo-noise
def expandGrid(pixels):
assert len(pixels) % 2
mid = len(pixels) // 2
midColumn = pixels[mid]
pixels.insert(mid + 1, list(midColumn))
pixels.insert(mid + 0, list(midColumn))
del pixels[0]
del pixels[-1]
def killPixels(pixels, howMany=0.3):
nPixelsX = len(pixels)
nPixelsY = len(pixels[0])
mid = nPixelsX//2
for i in range(nPixelsX):
if i == mid:
continue
dist = (abs(i-mid) / mid)
for k in range(int(round(dist*howMany*nPixelsY))):
j = randint(0, nPixelsY-1)
pixels[i][j] = 0
canvasSize = 500
nPixelsX = 35 # must be odd
nPixelsY = 45
pixelX = canvasSize/nPixelsX
pixelY = canvasSize/nPixelsY
pixels = [[1 for i in range(nPixelsY)] for j in range(nPixelsX)] # create a grid of black pixels
nFrames = nPixelsX//2
# prerun, to get the correct pixel state for the actual first frame
for frame in range(nFrames):
seed(frame) # restart the random number generator with the frame number
expandGrid(pixels)
killPixels(pixels)
for frame in range(nFrames):
seed(frame) # restart the random number generator with the frame number
newPage(canvasSize, canvasSize)
fill(219/255, 202/255, 174/255)
rect(0, 0, canvasSize, canvasSize)
fill(0)
stroke(0)
strokeWidth(0.7)
expandGrid(pixels)
killPixels(pixels)
for j in range(nPixelsY):
for i in range(nPixelsX):
x = i * pixelX
y = j * pixelY
if pixels[i][j]:
rect(x, y, pixelX, pixelY)
if nFrames > 20:
saveImage("EllsworthKellySeine" + ".gif")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment