Curva de Koch o copo de nieve de Koch

¿Qué es la curva de Koch?

El copo de nieve de Koch (también conocido como curva de Koch, estrella de Koch o isla de Koch) es una curva matemática y una de las primeras curvas fractales descritas. Se basa en la curva de Koch, que apareció en un artículo de 1904 titulado «Sobre una curva continua sin tangentes, construible a partir de la geometría elemental» del matemático sueco Helge von Koch.

La progresión del área del copo de nieve converge en 8/5 veces el área del triángulo original, mientras que la progresión del perímetro del copo de nieve diverge hasta el infinito. En consecuencia, el copo de nieve tiene un área finita limitada por una línea infinitamente larga.

Construcción

Paso 1:

Dibuja un triángulo equilátero. Puedes dibujarlo con un compás o un transportador, o simplemente mirarlo a ojo si no quieres perder demasiado tiempo dibujando el copo de nieve.

  • Es mejor si la longitud de los lados es divisible por 3, debido a la naturaleza de este fractal. Esto quedará claro en los próximos pasos.
  • Paso 2:

    Divide cada lado en tres partes iguales. Por eso es útil tener los lados divisibles por tres.

    Paso 3:

    Dibuja un triángulo equilátero en cada parte central. Mide la longitud del tercio medio para saber la longitud de los lados de estos nuevos triángulos.

    Paso 4:

    Divide cada lado exterior en tercios. Puedes ver que la segunda generación de triángulos cubre un poco de la primera. Estos tres segmentos de línea no deben dividirse en tres.

    Paso 5:

    Dibuja un triángulo equilátero en cada parte central.

  • Tenga en cuenta cómo dibuja cada próxima generación de partes que son un tercio del mástil.
  • Representación como sistema de Lindenmayer

    La curva de Koch se puede expresar mediante el siguiente sistema de reescritura ( sistema de Lindenmayer ):

    Alfabeto : F
    Constantes : +, ?
    Axioma : F
    Reglas de producción : F? F+F–F+F

    Aquí, F significa «avanzar», – significa «girar 60° a la derecha» y + significa «girar 60° a la izquierda».
    Para crear el copo de nieve de Koch, se usaría F++F++F (un triángulo equilátero) como axioma.

    Para crear una curva de Koch:

    # Python program to print partial Koch Curve.
    # importing the libraries : turtle standard 
    # graphics library for python
    from turtle import *
      
    #function to create koch 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__":
      
        # defining the speed of the turtle
        speed(0)                   
        length = 300.0              
      
        # Pull the pen up – no drawing when moving.
        penup()                     
          
        # Move the turtle backward by distance, 
        # opposite to the direction the turtle 
        # is headed.
        # Do not change the turtle’s heading.
        backward(length/2.0)        
      
        # Pull the pen down – drawing when moving.
        pendown()         
      
        snowflake(length, 4)
      
        # To control the closing windows of the turtle
        mainloop() 
    

    Producción:

    Para crear un copo de nieve completo con la curva de Koch, debemos repetir el mismo patrón tres veces. Así que intentemos eso.

    # Python program to print complete Koch Curve.
    from turtle import *
      
    # function to create koch 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__":
        # defining the speed of the turtle
        speed(0)                   
        length = 300.0   
      
        # Pull the pen up – no drawing when moving.
        # Move the turtle backward by distance, opposite
        # to the direction the turtle is headed.
        # Do not change the turtle’s heading.           
        penup()                     
      
        backward(length/2.0)
      
        # Pull the pen down – drawing when moving.        
        pendown()           
        for i in range(3):    
            snowflake(length, 4)
            right(120)
      
         # To control the closing windows of the turtle
        mainloop()       
    

    Producción:

    
    

    Este artículo es una contribución de Subhajit Saha . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

    Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

    Publicación traducida automáticamente

    Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *