Metadata-Version: 2.4
Name: lindenmayer-fractals
Version: 1.1.1
Summary: Biblioteca para generar fractales con L-systems
Author: Juan Gracia Sercado
Author-email: jfgracias86@email.com
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENCE
Requires-Dist: matplotlib
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: license-file
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# LINDENMAYER

**Biblioteca para generar fractales con L-systems y tortuga gráfica en Python.**  
Licencia: GNU GPLv3  
🌿 **VIVA PALESTINA LIBRE**

LINDERMAYER permite crear y visualizar **fractales clásicos y personalizados** usando sistemas de Lindenmayer (L-systems) y una tortuga gráfica basada en `matplotlib`.

Incluye **fractales predefinidos** listos para usar:

- `arboleo` → árbol fractal simple  
- `snowflake` → curva de Koch (copo de nieve)  
- `dragon` → curva del dragón  
- `koch` → curva de Koch básica

---

## Instalación

Desde Test PyPI:

```bash
pip install --index-url https://test.pypi.org/simple/ LINDERMAYER
Instalación local editable:


## Fractales predefinidos
from lindermayer import arboleo, snowflake, dragon, koch

# Curva de Koch básica
koch.plt(n=6)

# Árbol fractal simple
arboleo.plot(n=3)

# Curva del Dragón
dragon.plot(n=12)

# Copo de nieve
snowflake.plot(n=6)

# Función generar_fractal
generar_fractal

La función generar_fractal permite construir y dibujar fractales definidos mediante L-systems (Lindenmayer systems) usando una tortuga gráfica.

Definición
generar_fractal(V, P, omega, angle, step, n)

Descripción

Esta función:

Construye un sistema de Lindenmayer (L-system)

Aplica las reglas de producción n veces

Interpreta la cadena resultante con una tortuga gráfica

Muestra el fractal usando matplotlib

Parámetros
V — Alfabeto del sistema

Conjunto de símbolos válidos del L-system.

V = {'F', '+', '-'}


No todos los símbolos necesariamente dibujan; algunos solo controlan el comportamiento.

P — Reglas de producción

Diccionario que define cómo se reescribe cada símbolo.

P = {
    'F': 'F+F--F+F'
}


Cada iteración sustituye los símbolos según estas reglas.

omega — Axioma (estado inicial)

Cadena inicial del sistema antes de aplicar las reglas.

omega = 'F'

angle — Ángulo de giro

Ángulo en radianes usado por la tortuga para rotaciones.

Ejemplos comunes:

pi/2   # 90°
pi/3   # 60°
pi/4   # 45°

step — Tamaño del paso

Longitud del movimiento hacia adelante de la tortuga.

step = 1


Controla la escala del fractal.

n — Número de iteraciones

Cantidad de veces que se aplican las reglas de producción.

n = 5


Más iteraciones → mayor detalle → mayor costo computacional.

Comportamiento de los símbolos (Tortuga)

Por convención:

Símbolo	Acción
F	Avanzar dibujando
f	Avanzar sin dibujar
+	Girar a la derecha
-	Girar a la izquierda

(Esto depende de la implementación de la clase Tortuga.)

Ejemplo

Curva de Koch:

from lindenmayer.funcion_lindermayer import generar_fractal
from math import pi

V = {'F', '+', '-'}
omega = 'F'
P = {
    'F': 'F+F--F+F'
}

generar_fractal(V, P, omega, angle=pi/3, step=1, n=4)

Notas

Iteraciones grandes pueden generar cadenas muy largas

El tiempo de dibujo crece rápidamente con n

El ángulo incorrecto produce geometrías inesperadas
