generated from mwc/project_drawing
150 lines
3.3 KiB
Python
150 lines
3.3 KiB
Python
import math # degrees() from math wasn't working so I have this to do math.degrees() instead...
|
|
from turtle import *
|
|
from superturtle import *
|
|
|
|
def startingPosition(HALF):
|
|
# Sets up a square region with max x-coordinate HALF and min -HALF
|
|
penup()
|
|
setup(HALF * 2 + 40, HALF * 2 + 40)
|
|
bgcolor("aquamarine")
|
|
left(180)
|
|
forward(HALF)
|
|
left(90)
|
|
forward(HALF)
|
|
left(90)
|
|
|
|
def drawPerson(HALF):
|
|
# Turtle starts and ends at starting position
|
|
drawBody(HALF)
|
|
drawHead(HALF)
|
|
drawFace(HALF)
|
|
|
|
def drawBody(HALF):
|
|
# Turtle starts at starting position
|
|
fillcolor("green")
|
|
begin_fill()
|
|
forward(HALF * 4 / 5.0)
|
|
pendown()
|
|
forward(HALF * 2 / 5.0)
|
|
left(90)
|
|
forward(HALF / 2.0)
|
|
right(180)
|
|
forward(HALF / 5.0)
|
|
left(90)
|
|
forward(HALF / 10.0)
|
|
left(45)
|
|
forward(HALF * math.sqrt(2) / 5.0)
|
|
left(135)
|
|
forward(HALF / 10.0)
|
|
left(45)
|
|
forward(HALF * math.sqrt(2) / 10.0)
|
|
right(135)
|
|
forward(HALF / 5.0)
|
|
left(90)
|
|
forward(HALF / 5.0)
|
|
left(45)
|
|
forward(HALF * math.sqrt(2) / 10.0)
|
|
right(90)
|
|
forward(HALF * math.sqrt(2) / 10.0)
|
|
left(45)
|
|
forward(HALF / 5.0)
|
|
left(90)
|
|
forward(HALF / 5.0)
|
|
right(135)
|
|
forward(HALF * math.sqrt(2) / 10.0)
|
|
left(45)
|
|
forward(HALF / 10.0)
|
|
left(135)
|
|
forward(HALF * math.sqrt(2) / 5.0)
|
|
left(45)
|
|
forward(HALF / 10.0)
|
|
left(90)
|
|
forward(HALF / 5.0)
|
|
left(180)
|
|
forward(HALF / 2.0)
|
|
penup()
|
|
end_fill()
|
|
|
|
|
|
def drawHead(HALF):
|
|
# Turtle starts from where drawBody ended
|
|
neckHeadAngle = math.degrees(math.acos(.35))
|
|
fillcolor("bisque")
|
|
right(180)
|
|
forward(.6 * HALF)
|
|
right(90)
|
|
forward(.1 * HALF)
|
|
begin_fill()
|
|
pendown()
|
|
right(45)
|
|
forward(.1 * math.sqrt(2) * HALF)
|
|
left(90)
|
|
forward(.1 * math.sqrt(2) * HALF)
|
|
left(135)
|
|
forward(.05 * HALF)
|
|
right(90)
|
|
forward(.1 * HALF)
|
|
right(neckHeadAngle)
|
|
circle(HALF / 7.0, 180 + 2 * neckHeadAngle)
|
|
right(neckHeadAngle)
|
|
forward(.1 * HALF)
|
|
right(90)
|
|
forward(.05 * HALF)
|
|
penup()
|
|
end_fill()
|
|
|
|
def drawFace(HALF):
|
|
# Turtle starts from where drawHead ended and returns to starting position
|
|
right(90)
|
|
forward(1.7 * HALF / 7.0)
|
|
right(90)
|
|
forward(.025 * HALF)
|
|
left(90)
|
|
pendown()
|
|
forward(.025 * HALF)
|
|
penup()
|
|
right(90)
|
|
forward(.15 * HALF)
|
|
right(90)
|
|
pendown()
|
|
forward(.025 * HALF)
|
|
penup()
|
|
forward(.05 * HALF)
|
|
pendown()
|
|
circle(-0.075 * HALF,180)
|
|
penup()
|
|
right(180)
|
|
forward(27 * HALF / 140.0)
|
|
right(90)
|
|
forward(37 * HALF / 40.0)
|
|
left(90)
|
|
forward(3 * HALF / 5.0)
|
|
print("C")
|
|
print(position())
|
|
left(90)
|
|
|
|
def drawJugglingCircle(HALF,OFFSET):
|
|
# Turtle starts and ends from starting position
|
|
# Draw 3 balls in a circle. The 3 balls are evenly spaced apart and the first ball starts at OFFSET degrees CCW from the starting position.
|
|
forward(.5 * HALF)
|
|
left(90)
|
|
forward(.5 * HALF)
|
|
right(150)
|
|
penup()
|
|
circle(math.sqrt(3) /3 * HALF,OFFSET)
|
|
for i in range(2):
|
|
pendown()
|
|
drawBall(HALF)
|
|
penup()
|
|
circle(math.sqrt(3) /3 * HALF,120)
|
|
pendown()
|
|
drawBall(HALF)
|
|
penup()
|
|
circle(math.sqrt(3) /3 * HALF,120-OFFSET)
|
|
|
|
def drawBall(HALF):
|
|
# draw a filled circle
|
|
fillcolor("blue")
|
|
begin_fill()
|
|
circle(HALF / 10.0)
|
|
end_fill() |