mas110 exhibition .fundamentals of computational media design.spring 2000.professor john maeda
megan's static pieces . megan's dynamic pieces

 

#the transition from a square to a triangle over time

import math
g.norefresh()

def square(x, y, size, color):
 #a simple empty square
 g.field(x, y, x+size, y+size, color)
 g.field(x+5, y+5, x+size-5, y+size-5, 0)
 g.refresh()

def to_triangle(x, y, size, L, color):
 #a shape that can be square, trapazoidal, triangular
 #depending on the value of L
 g.pen(color)
 g.field(x, y, x+size+4, y+4, color)
 if L < size:
  g.field(x+(L/2)+2, y+size, x+2+size-(L/2), y+size+4, color)
  for b in range(0, 6):
   #left edges of square/triangle
   g.line(x, y+b, x+(L/2), y+size+b-1)
   g.line(x+1, y+b, x+(L/2)+1, y+size+b-1)
   g.line(x+2, y+b, x+(L/2)+2, y+size+b-1)
   #right edges of square/triangle
   g.line(x+size+4, y+b, x+4+size-(L/2), y+size+b-1)
   g.line(x+size+3, y+b, x+3+size-(L/2), y+size+b-1)
   g.line(x+size+2, y+b, x+2+size-(L/2), y+size+b-1)
 if L > size:
  g.field(x+(size/2)+2, y+size, x+2+size-(size/2), y+size+4, color)
  for b in range(0, 6):
   s = size/2
   c = size + b - 1
   #left edges of square/triangle
   g.line(x, y+b, x+s, y+c)
   g.line(x+1, y+b, x+s+1, y+c)
   g.line(x+2, y+b, x+s+2, y+c)
   #right edges of square/triangle
   g.line(x+size+4, y+b, x+4+size-s, y+c)
   g.line(x+size+3, y+b, x+3+size-s, y+c)
   g.line(x+size+2, y+b, x+2+size-s, y+c)
    
def clock1(pen_color, paper_color):
 #watch the square grow over time
 for i in range(0, 180):
  g.paper(paper_color)
  #draw the square
  square(40, 10, i/4, pen_color)
  #draw the clock
  angle = i * 2 * math.pi / 180.0
  sx = math.sin(angle)
  sy = math.cos(angle)
  x = sx * 20
  y = sy * 20
  g.line(25, 70, int(x)+25, int(y)+70)
  g.setPixel(int(x)+25, int(y)+74, 100)  
 g.refresh()
 
def clock2(pen_color, paper_color):
 #watch the triangle form over time
 for i in range(0, 180):
  g.paper(paper_color)
  #draw the morphing square/triangle
  to_triangle(40, 10, 40, i/4, pen_color)
  #draw the clock
  angle = i * 2 * math.pi / 180.0
  sx = math.sin(angle)
  sy = math.cos(angle)
  x = sx * 20
  y = sy * 20
  g.line(25, 70, int(x)+25, int(y)+70)
  g.setPixel(int(x)+25, int(y)+74, 100)  
  g.refresh()

clock1(80, 10)
clock2(80, 10)