The art of turtle (po-mo, yin-yang, picasso )

2010 class: Based on some ideas by Erin and Julie, I present Mr. Turtle's latest Masterpiece -   "The 100 gotos"  


A triumph of post-modern turtelistic calligraphy, a fusion of deceptively simple yet interwoven  3D mikado patterns and bold visio-aleatoric, symbolizing perhaps the convoluted path we take through life.          



2011 class:

Here's Jay's turtle art:


# Draw Yin and Yang to fit the drawing window
# by Jay Smith

import turtle
import math

# Reset the turtle graphics
turtle.reset()

# Calculate the screen ratio of x pixels to y pixels
# Screens are typically wider on the x axis than the y axis
ss = turtle.screensize()
ratio = float(ss[0]) / float(ss[1])

# Set the drawing window size (centered square)
# percent of y direction, adjusted for x direction using screen ratio
# If you don't do this, circles won't come out round
ypercent = 50
xpercent = int(ypercent / ratio)
turtle.setup(xpercent/100.0,ypercent/100.0)

# Coordinates maximum
# Greater size => better resolution
size = 1000

# Set coordinate system
turtle.setworldcoordinates(-size,-size,size,size)

# Drawing speed (fast)
turtle.tracer(10, 0)

# Draw Yin
turtle.color("black")
turtle.penup()
for deg in range(270,90,-1):
    x = int(size * math.cos(math.radians(deg)))    
    y = int(size * math.sin(math.radians(deg)))
    turtle.goto(x,y)    
    if (deg == 270):
        turtle.pendown()
        turtle.fill(True)
for deg in range(450,270,-1):
    x = int((size/2) * math.cos(math.radians(deg)))   
    y = int((size/2) * math.sin(math.radians(deg))) + (size/2)
    turtle.goto(x,y)    
for deg in range(90,270):
    x = int((size/2) * math.cos(math.radians(deg)))    
    y = int((size/2) * math.sin(math.radians(deg))) - (size/2)
    turtle.goto(x,y)    
turtle.fill(False)

# Draw Yang
for deg in range(270,450):
    x = int(size * math.cos(math.radians(deg)))    
    y = int(size * math.sin(math.radians(deg)))
    turtle.goto(x,y)    

# Draw seed
turtle.color("white")
turtle.penup()
for deg in range(361):
    x = int((size/8) * math.cos(math.radians(deg))) 
    y = int((size/8) * math.sin(math.radians(deg))) + (size/8)*4   
    turtle.goto(x,y)    
    if (deg == 0):
        turtle.pendown()
        turtle.fill(True)
turtle.fill(False)

# Draw seed
turtle.color("black")
turtle.penup()
for deg in range(361):
    x = int((size/8) * math.cos(math.radians(deg))) 
    y = int((size/8) * math.sin(math.radians(deg))) - (size/8)*4   
    turtle.goto(x,y)    
    if (deg == 0):
        turtle.pendown()
        turtle.fill(True)
turtle.fill(False)

# Move turtle off screen so that it isn't in the middle of finished drawing
turtle.penup()
turtle.goto(size*2,size*2)

# Finish incomplete screen updates (if any)
turtle.update()

raw_input("press enter")

------------------------
And here's Tyler's homage to Picasso on a Bicyle:

4 comments:

Unknown said...

strangely, I am enjoying this a little too much I think. -Kim

Jason Hochwender said...

Copy and paste the following code....


from turtle import *

def draw_fractal(length, angle, level, initial_state, target, replacement, target2, replacement2):

state = initial_state

for counter in range(level):
state2 = ''
for character in state:
if character == target:
state2 += replacement
elif character == target2:
state2 += replacement2
else:
state2 += character
state = state2

# draw
for character in state:
if character == 'F':
forward(length)
elif character == '+':
right(angle)
elif character == '-':
left(angle)


if __name__ == '__main__':

delay(0)
speed(0)
hideturtle()
up(); goto(-180, 60); down();
draw_fractal(1, 60, 5, 'X++X++X', 'X', 'FX-FX++XF-XF', '', '')
exitonclick()



You can really start to see the capabilities of turtle graphics. I especially like the exitonclick()

I got the code from ActiveState which has a nice repository of code snippets
http://code.activestate.com/recipes/langs/python/

I actually found this site via the PyCon Lightning Talks on blip.tv
http://pycon.blip.tv/

Jason Hochwender said...

hmmm didn't keep my formatting so you will have to indent it yourself.

Briandy said...

This is fantastic :o)

Search This Blog