generated from mwc/project_drawing
	I added codes for the face of the ghosts! Also the
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!
This commit is contained in:
		
							
								
								
									
										71
									
								
								drawing.py
									
									
									
									
									
								
							
							
						
						
									
										71
									
								
								drawing.py
									
									
									
									
									
								
							@@ -9,10 +9,17 @@ 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(-150,250)
 | 
			
		||||
    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)
 | 
			
		||||
@@ -21,22 +28,22 @@ def ghostie(length,x,y):
 | 
			
		||||
    circle(5*length,30)
 | 
			
		||||
    circle(-0.2*length,180)
 | 
			
		||||
    print(pos())
 | 
			
		||||
#How can I determine these points directly with respect to my starting point?
 | 
			
		||||
 | 
			
		||||
    #Starts drawing the middle frill
 | 
			
		||||
    xpos, ypos = turtle.pos()
 | 
			
		||||
    points=np.array([
 | 
			
		||||
        [-189.48, -160, -260, -120, -189.48],
 | 
			
		||||
        [78, 30, -10, -70, -140]
 | 
			
		||||
        [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([
 | 
			
		||||
        [-189.48, -100, -180, -150, -140],
 | 
			
		||||
        [-140, -100, 20, 50, 78]
 | 
			
		||||
        [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)
 | 
			
		||||
@@ -44,15 +51,57 @@ def ghostie(length,x,y):
 | 
			
		||||
    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(170)
 | 
			
		||||
    left(171)
 | 
			
		||||
    circle(-6*length,30)
 | 
			
		||||
    forward(3*length)
 | 
			
		||||
    circle(2*length, 90)
 | 
			
		||||
    turtle.end_fill()
 | 
			
		||||
 | 
			
		||||
ghostie(30)
 | 
			
		||||
    #Starts drawing the face
 | 
			
		||||
    def ghostieface(length,x,y):
 | 
			
		||||
        turtle.fillcolor("#161616")
 | 
			
		||||
        penup()
 | 
			
		||||
turtle.goto(0,0)
 | 
			
		||||
        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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user