Python – Curva de Hilbert usando Turtle

Fractal es una curva o una figura que se repite. Comprende un patrón recursivo que se repite hasta un nivel deseado de anidamiento. Los gráficos de Turtle se proporcionan en el módulo de Turtle que se utiliza para dibujar varias formas y patrones en Python.

Una curva de Hilbert es una curva que se forma conectando una secuencia de curvas en forma de U dispuestas y orientadas en diferentes direcciones. Estas curvas en forma de U se colocan separadas por una cierta distancia de tamaño de paso.

Examinemos una curva de Hilbert de nivel 1 . Los siguientes pasos dibujarán una curva U simple.

Sea y = 90 grados

  1. Rotar y grado hacia la derecha
  2. Mover tamaño de paso
  3. Rotar y grado hacia la izquierda
  4. Mover tamaño de paso
  5. Rotar y grado hacia la izquierda
  6. Mover tamaño de paso
  7. Rotar y grado hacia la derecha

Examinemos e intentemos comprender la Curva de Hilbert de nivel 2 .

Nuevamente, asumimos que el puntero de la Turtle apunta hacia la derecha inicialmente. Los siguientes pasos se pueden utilizar para dibujar la curva:

  1. Girar 90 grados hacia la derecha
  2. Cree una curva de hilbert en el nivel 1 girada -y grados (es decir, y grados en dirección contraria a las agujas del reloj)
  3. Mover tamaño de paso
  4. Rotar y grados hacia la derecha
  5. Cree una curva de hilbert de nivel 1 rotada por y grados (es decir, y grados en el sentido de las agujas del reloj)
  6. Gire y grados hacia la izquierda.
  7. Mover tamaño de paso
  8. Cree una curva de hilbert de nivel 1 rotada por -y grados
  9. Rotar y grados hacia la derecha

turtleLos métodos utilizados en esta sección son los siguientes:

  • adelante() : se utiliza para mover la Turtle hacia adelante una distancia determinada en la dirección de la Turtle.
  • back() : Se usa para mover la Turtle hacia atrás una distancia determinada en la dirección de la Turtle.
  • left() : Se usa para rotar la Turtle en la dirección izquierda en un ángulo específico.
  • right() : Se usa para rotar la Turtle en la dirección correcta en un ángulo específico.
  • goto() : Se usa para mover la Turtle a la ubicación especificada (coordenadas (x, y)).
  • penup() : Se utiliza para especificar que no se realizará ningún dibujo mientras se mueve.
  • pendown() : Se usa para especificar que ese dibujo se hará mientras se mueve.
  • done() : se utiliza para especificar que el trabajo de la Turtle se ha completado.

El código para la curva de Hilbert se da a continuación:

from turtle import * 
  
def hilbert(level, angle, step):
  
    # Input Parameters are numeric
    # Return Value: None
    if level == 0:
        return
  
    right(angle)
    hilbert(level-1, -angle, step)
  
    forward(step)
    left(angle)
    hilbert(level-1, angle, step)
  
    forward(step)
    hilbert(level-1, angle, step)
  
    left(angle)
    forward(step)
    hilbert(level-1, -angle, step)
    right(angle)
  
def main():
    level = int(input())
    size = 200
    penup()
    goto(-size / 2.0, size / 2.0)
    pendown()
     
    # For positioning turtle
    hilbert(level, 90, size/(2**level-1))       
    done()
  
if __name__=='__main__':
    main()

Publicación traducida automáticamente

Artículo escrito por kartikeysm2001 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 *