generated from mwc/project_drawing
coloring!! I was able to explore Turtle commands and use them smoothly. I didn't really run into any issues. Coloring was much easier than I imagined it would be. I am excited to see how these will look animated. One thing I wish was having more time (and clarity of mind) to code the face of these ghosts as a replice of the GhostFace. I really wanted to do that but currently I have way too much on my plate to complicate this any further! So this could be an improvement or a future project idea!
108 lines
2.5 KiB
Python
108 lines
2.5 KiB
Python
# drawing.py
|
|
# ----------
|
|
# By Challa Zirek
|
|
#
|
|
# (Briefly describe what this program does.)
|
|
|
|
import turtle
|
|
from turtle import *
|
|
import bezier
|
|
import numpy as np
|
|
|
|
TurtleScreen=turtle.Screen
|
|
turtle.bgcolor("#B04021")
|
|
turtle.pensize(4)
|
|
def ghostie(length,x,y):
|
|
turtle.pencolor("#3C025E")
|
|
turtle.fillcolor("#B8B8B8")
|
|
penup()
|
|
turtle.goto(x,y)
|
|
pendown()
|
|
#Starts drawing the left side of the outline
|
|
turtle.begin_fill()
|
|
left(180)
|
|
circle(2*length, 90)
|
|
forward(3*length)
|
|
circle(-6*length,30)
|
|
left(170)
|
|
circle(5*length,30)
|
|
circle(-0.2*length,180)
|
|
print(pos())
|
|
|
|
#Starts drawing the middle frill
|
|
xpos, ypos = turtle.pos()
|
|
points=np.array([
|
|
[xpos, (xpos+30), (xpos-70), (xpos+70), xpos],
|
|
[ypos, (ypos-48), (ypos-88), (ypos-148), (ypos-218)]
|
|
])
|
|
curve = bezier.Curve(points, 4)
|
|
s_vals = np.linspace(0,1,100)
|
|
bezierpoints= curve.evaluate_multi(s_vals)
|
|
for n in range(1, bezierpoints.shape[1]):
|
|
turtle.goto(bezierpoints[0][n], bezierpoints[1][n])
|
|
left(180)
|
|
points2=np.array([
|
|
[xpos, (xpos+90), (xpos+10), (xpos+40), (xpos+50)],
|
|
[(ypos-218), (ypos-178), (ypos-58), (ypos-28), ypos]
|
|
])
|
|
curve2 = bezier.Curve(points2, 4)
|
|
s_vals = np.linspace(0,1,100)
|
|
bezierpoints2= curve2.evaluate_multi(s_vals)
|
|
for n in range(1, bezierpoints2.shape[1]):
|
|
turtle.goto(bezierpoints2[0][n], bezierpoints2[1][n])
|
|
|
|
#Starts drawing the right side of the outline
|
|
circle(-0.2*length,180)
|
|
left(10)
|
|
circle(5*length,30)
|
|
left(171)
|
|
circle(-6*length,30)
|
|
forward(3*length)
|
|
circle(2*length, 90)
|
|
turtle.end_fill()
|
|
|
|
#Starts drawing the face
|
|
def ghostieface(length,x,y):
|
|
turtle.fillcolor("#161616")
|
|
penup()
|
|
turtle.goto(x-20, y-50)
|
|
pendown()
|
|
turtle.begin_fill()
|
|
turtle.shape("circle")
|
|
turtle.stamp()
|
|
turtle.end_fill()
|
|
penup()
|
|
turtle.goto(x+20, y-50)
|
|
pendown()
|
|
turtle.begin_fill()
|
|
turtle.shape("circle")
|
|
turtle.stamp()
|
|
turtle.end_fill()
|
|
penup()
|
|
turtle.goto(x-5, y-90)
|
|
pendown()
|
|
left(95)
|
|
turtle.begin_fill()
|
|
turtle.shape("circle")
|
|
turtle.shapesize(stretch_len=2)
|
|
turtle.stamp()
|
|
turtle.shape("classic")
|
|
turtle.shapesize(1,1)
|
|
turtle.end_fill()
|
|
ghostieface(length,x,y)
|
|
|
|
|
|
ghostie(30, -150, 250)
|
|
penup()
|
|
turtle.home()
|
|
pendown()
|
|
ghostie (30, 150, 250)
|
|
hideturtle()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
turtle.done()
|