Fractals

Basic Koch Curve

Basic Koch curve koch_curve(t, 4, 20)

        
def koch_curve(t, depth, length):
    if depth==1:
        t.fd(length)
        return
    koch_curve(t, depth-1, length)
    t.lt(60)
    koch_curve(t, depth-1, length)
    t.rt(120)
    koch_curve(t, depth-1, length)
    t.lt(60)
    koch_curve(t, depth-1, length)
        
      

__________________________________________________________________


Sierpinski Curve

This is a Koch curve with a base case that is a sierpinski triangle. As a result it takes some time to draw. This was the only modification I made. Looks really goofy. I have no idea why it does this. Perhaps a mystery to solve for the future. koch_custom(t, 4, 20)

        
        def koch_custom(t, depth, length):
            if depth==1:
                t.fd(length)
                sierpinski(t, 3, length)
                return
            koch_custom(t, depth-1, length)
            t.lt(60)
            koch_custom(t, depth-1, length)
            t.rt(120)
            koch_custom(t, depth-1, length)
            t.lt(60)
            koch_custom(t, depth-1, length)
        
      

__________________________________________________________________


Basic Sierpinski

Basic Sierpinski sierpinski(t, 4, 550)

        
def sierpinski(t, depth, length):
    if depth==1:
        triangle(t,int(length))
        return

    sierpinski(t,depth-1,length/2)
    t.lt(60)
    t.fd(length/2)
    t.rt(60)
    sierpinski(t,depth-1,length/2)
    t.lt(60)
    t.bk(length/2)
    t.rt(60)
    t.fd(length/2)
    sierpinski(t,depth-1,length/2)
    t.bk(length/2)

        
      

__________________________________________________________________


Disassembled Sierpinski Triangle

Freefall triangle!! My freefall triangle is a sierpinski triangle but all of the angles are slightly off (by a maximum of 5 degrees). sierpinski_custom(t, 4, 550)

        
        def sierpinski_custom(t, depth, length):
            if depth==1:
                triangle(t,int(length))
                #t.circle(int(length))

                return
            t.lt(random.randint(-10,10))
            sierpinski_custom(t,depth-1,length/2)
            t.pu()
            t.lt(random.randint(55,65))
            t.fd(length/2)
            t.pd()
            t.rt(random.randint(55,65))
            sierpinski_custom(t,depth-1,length/2)
            t.lt(random.randint(55,65))
            t.pu()
            t.bk(length/2)
            t.rt(random.randint(55,65))
            t.fd(length/2)
            t.pd()
            sierpinski_custom(t,depth-1,length/2)
            t.bk(length/2)
        
      

__________________________________________________________________


Basic Tree

Your average tree that you see outside. No randomness, perfectly symmetric. tree(t, 4, 100, 20)

        
def tree(t, depth, length, angle):
    if depth==1:
        t.fd(length)
        t.bk(length)
    else:
        t.fd(length)
        t.rt(angle)
        tree(t,depth-1,length,angle)
        t.lt(2*angle)
        tree(t,depth-1,length,angle)
        t.rt(angle)
        t.bk(length)
        
      

__________________________________________________________________


Leafy Trees

A tree with Sierpinski leaves. My tree has shorter and shorter branches with random angles making an irregular tree. I also gave it sierpinski leaves but adding sierpinski triangles to the base case. It was given the name "A Charlie Brown Tree" because of the sad bending and giant ornament tree_custom(t, 4, 200, 20)

        
        def tree_custom(t, depth, length, angle):
            length = random.randint(30,length)
            angle=random.randint(10, 30)
            if depth==1:
                t.fd(length)
                sierpinski(t, 4, length)
                t.bk(length)
            else:
                t.fd(length)
                t.rt(angle)
                tree_custom(t,depth-1,length,angle)
                t.lt(2*angle)
                tree_custom(t,depth-1,length,angle)
                t.rt(angle)
                t.bk(length)