Programming Resources
For Fun and Learning
Charles Cusack
Computer Science
Hope College
main


Python


C++
JAVA
PHP
SQL
Assignments

Turtle


023_Koch_Line.py

import os
from util import getTurtleAndScreen
# Koch Line. On the way to the Koch Snowflake.
# CAC, 3/29/2023

def drawKLine(turtle,length,level):
    if level==1:
        turtle.forward(length)
    else:
        l = length/3
        drawKLine(turtle,l,level-1)
        turtle.left(60)
        drawKLine(turtle,l,level-1)
        turtle.right(120)
        drawKLine(turtle,l,level-1)
        turtle.left(60)
        drawKLine(turtle,l,level-1)

def Draw():
    title = "Koch Line"
    width = 1200
    height = 600
    L = 1100
    filename = os.path.basename(__file__)[0:-3]
    turtle, screen = getTurtleAndScreen(title,width,height,filename,moveWorld=True)

    screen.bgcolor("black")
    turtle.color("white")
    turtle.pensize(2)

    # Get everything setup.
    turtle.penup()
    turtle.goto(50,50)
    turtle.setheading(0)
    turtle.pendown()

    #draw a kline
    drawKLine(turtle,L,4)

    # Scratch work. This was us working up to the proper solution.
    # length = L/3
    # length2 = L/9
    # drawKLine(turtle,length2)
    # turtle.left(60)
    # drawKLine(turtle,length2)
    # turtle.right(120)
    # drawKLine(turtle,length2)
    # turtle.left(60)
    # drawKLine(turtle,length2)

    # #draw a kline-1
    # length = L/3
    # turtle.forward(length)
    # turtle.left(60)
    # turtle.forward(length)
    # turtle.right(120)
    # turtle.forward(length)
    # turtle.left(60)
    # turtle.forward(length)

    turtle.penup()

    screen.mainloop()
# ----------------------------------------------------------------
if __name__ == '__main__':
   Draw()