Change language

Koch Curve or Koch Snowflake

Koch Snowflake (also known as the Koch Curve, Koch Star or Koch Island) — it is a mathematical curve and one of the earliest fractal curves described. It is based on the Koch curve, published by the Swedish mathematician Helge von Koch in a 1904 article entitled “On a continuous curve without tangents, constructed from elementary geometry.”

The progression for the snowflake region converges 8/5 times the area the original triangle, while the progression along the perimeter of the snowflake diverges to infinity. Therefore, the snowflake has a finite area bounded by an infinitely long line.


construction

Step 1:

Draw an equilateral triangle. You can draw it with a compass or a protractor, or just look at it if you don’t want to spend too much time drawing a snowflake.

  • It is best if the length of the sides is divisible by 3 due to the nature of this fractal. This will become clear in the next few steps.
  • Step 2:

    Divide each side into three equal parts. This is why it is convenient to divide the sides into three. 

    Step 3:

    Draw an equilateral triangle on each middle part. Measure the length of the middle third to find out the length of the sides of these new triangles. 

    Step 4:

    Separate each outside by a third. You can see the 2nd generation of triangles cover a bit of the 1st. These three segments should not be divided into three. 

    Step 5:

    Draw an equilateral triangle on each middle section.

  • Notice how you draw each successive generation of parts that are third in relation to the mast.

  • Lindenmayer system view


    The Koch Curve can be expressed by the following rewriting system ( Lindenmayer system ):

    Alphabet : F
    Constants : + ,? 
    Axiom : F
    Production rules : F? F + FF + F

    Here F means "pull forward", — means turn right 60 °, and + means turn left 60 °. 
    To create a Koch snowflake, you can use F ++ F ++ F (equilateral triangle) as an axiom.

    To create a Koch curve:

    # Python program to print a partial Koch curve.
    # import libraries: turtle standard
    # graphical library for python

    from turtle import *

      
    # function to create snowflake or Koch curve

    def snowflake (lengthSide, levels):

    if levels =   = 0 :

    forward (lengthSide)

    return

      lengthSide / = 3.0

    snowflake (lengthSide, levels - 1 )

    left ( 60 )

    snowflake (lengthSide, levels - 1 )

    right ( 120 )

      snowflake (lengthSide, levels - 1 )

    left ( 60 )

    snowflake (lengthSide, levels - 1 )

     
    # main function

    if __ name__ = = "__ main__" :

     

    # determine the speed of the turtle

    speed ( 0

    length = 300.0  

      

    # Pull the handle up - no drawing while moving.

    penup () 

      

    # Move the turtle back a distance,

    # opposite the direction of the turtle

    # headed by.

      # Do not change the turtle’s course.

    backward ( length / 2.0

     

    # Pull pen down - draw while moving .

    pendown () 

     

    snowflake (length, 4 )

     

    # To control the closing of turtle windows

    mainloop () 

    Output: < / p>

    To create a complete snowflake with a Koch curve, we need to repeat the same drawing three times. So let’s try this.

    # Python program for printing the full Koch curve.

    from turtle import *

     
    # function to create Koch snowflake or Koch curve

    def snowflake (lengthSide, levels):

    if levels = = 0 :

    forward (lengthSide)

    return

    < p> lengthSide / = 3.0

    snowflake (lengthSide, levels - 1 )

    left ( 60 )

    snowflake (lengthSide, levels - 1 )

    right ( 120 )

    snowflake (lengthSide, levels - 1

    left ( 60 )

    snowflake (lengthSide, levels - 1 )

     
    # main function

    if __ name__ = = "__ main __" :

    # determine the speed of the turtle

    speed ( 0

    length = 300.0  

     

      # Pull handle up - no graphic while moving.

    # Move the turtle back the opposite distance

    # in the direction the turtle is heading

    # Do not change the turtle’s course.

    penup () 

     

    backward (length / 2.0 )

      

    # Pull the handle down - draw while moving.

    pendown () 

    for i in range ( 3 ) : 

    snowflake (length, 4 )

    right ( 120 )

     

    # To control the closing of turtle windows

      mainloop () 

    Output:

         

    This article courtesy of Subhajit Saha . If you are as Python.Engineering and would like to contribute, you can also write an article using contribute.python.engineering or by posting an article contribute @ python.engineering. See my article appearing on the Python.Engineering homepage and help other geeks.

    Please post comments if you find anything wrong or if you’d like to share more information on the topic discussed above.

    Shop

    Gifts for programmers

    Best laptop for Excel

    $
    Gifts for programmers

    Best laptop for Solidworks

    $399+
    Gifts for programmers

    Best laptop for Roblox

    $399+
    Gifts for programmers

    Best laptop for development

    $499+
    Gifts for programmers

    Best laptop for Cricut Maker

    $299+
    Gifts for programmers

    Best laptop for hacking

    $890
    Gifts for programmers

    Best laptop for Machine Learning

    $699+
    Gifts for programmers

    Raspberry Pi robot kit

    $150

    Latest questions

    PythonStackOverflow

    Common xlabel/ylabel for matplotlib subplots

    1947 answers

    PythonStackOverflow

    Check if one list is a subset of another in Python

    1173 answers

    PythonStackOverflow

    How to specify multiple return types using type-hints

    1002 answers

    PythonStackOverflow

    Printing words vertically in Python

    909 answers

    PythonStackOverflow

    Python Extract words from a given string

    798 answers

    PythonStackOverflow

    Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

    606 answers

    PythonStackOverflow

    Python os.path.join () method

    384 answers

    PythonStackOverflow

    Flake8: Ignore specific warning for entire file

    360 answers

    News


    Wiki

    Python | How to copy data from one Excel sheet to another

    Common xlabel/ylabel for matplotlib subplots

    Check if one list is a subset of another in Python

    How to specify multiple return types using type-hints

    Printing words vertically in Python

    Python Extract words from a given string

    Cyclic redundancy check in Python

    Finding mean, median, mode in Python without libraries

    Python add suffix / add prefix to strings in a list

    Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

    Python - Move item to the end of the list

    Python - Print list vertically