project_drawing/helper_functions.py

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()