Un fractal es un patrón interminable. Los fractales son patrones infinitamente complejos que son autosimilares en diferentes escalas. Se crean repitiendo un proceso simple una y otra vez en un ciclo de retroalimentación continuo. Impulsados por la recursividad, los fractales son imágenes de sistemas dinámicos: las imágenes del Caos.
En este artículo, dibujaremos un colorido árbol fractal Y utilizando una técnica recursiva en Python.
Ejemplos:
Módulos requeridos
Turtle: la biblioteca de turtle permite a los usuarios dibujar imágenes o formas usando comandos, brindándoles un lienzo virtual. Turtle viene con la biblioteca estándar de Python. Necesita una versión de Python con soporte Tk , ya que usa tkinter para los gráficos.
Funciones utilizadas:
- fd(x) : dibuja el cursor hacia adelante x píxeles.
- rt(x), lt(x) : gira la dirección de orientación del cursor x grados hacia la derecha y hacia la izquierda respectivamente.
- colormode() : para cambiar el modo de color a rgb.
- pencolor(r, g, b) : para establecer el color de la pluma de la Turtle.
- speed() : para establecer la velocidad de la Turtle.
Enfoque :
- Comenzamos dibujando una sola forma de ‘Y’ para el árbol base (nivel 1). Entonces ambas ramas de la ‘Y’ sirven como base de otras dos ‘Y’s (nivel 2).
- Este proceso se repite recursivamente y el tamaño de la Y disminuye a medida que aumenta el nivel.
- La coloración del árbol se realiza por niveles: más oscuro en el nivel base a más claro en el superior.
En la implementación a continuación, dibujaremos un árbol de tamaño 80 y nivel 7 .
from turtle import * speed('fastest') # turning the turtle to face upwards rt(-90) # the acute angle between # the base and branch of the Y angle = 30 # function to plot a Y def y(sz, level): if level > 0: colormode(255) # splitting the rgb range for green # into equal intervals for each level # setting the colour according # to the current level pencolor(0, 255//level, 0) # drawing the base fd(sz) rt(angle) # recursive call for # the right subtree y(0.8 * sz, level-1) pencolor(0, 255//level, 0) lt( 2 * angle ) # recursive call for # the left subtree y(0.8 * sz, level-1) pencolor(0, 255//level, 0) rt(angle) fd(-sz) # tree of size 80 and level 7 y(80, 7)
Producción :
Publicación traducida automáticamente
Artículo escrito por cosine1509 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA