L-Systems y lo que se permiten

Comencemos con lo básico, si tomamos una definición de la conocida y querida Wikipedia, entonces el sistema L (o el sistema de Lindenmayer ) es un sistema de reescritura paralelo y una forma de gramática formal.





En términos simples, el sistema L consiste en un alfabeto de caracteres que se puede usar para crear cadenas, un conjunto de reglas generativas que especifican reglas de sustitución para cada carácter, una cadena inicial ( "axioma" ), con la que comienza la construcción, y un mecanismo de traducción formado por líneas en estructuras geométricas. El ejemplo más simple de un sistema L es el problema de la construcción de árboles.





Los datos de entrada:





Cadena (en adelante Axiom ): AB





Variables ( que podemos usar para construir el árbol ): ABC





Regla (la regla por la cual cambia cada variable en la siguiente línea ):





  • A -> AB





  • B -> AC





  • C -> A





Se obtienen las siguientes transformaciones:                                        





Generacion





condición





uno





AB





2





AB AC





3





AB AC AB A





4





AB AC AB A AB AC AB





cinco





AB AC AB A AB AC AB AB AC AB A AB AC





6





etc ...





La principal dirección en la que se utilizan los sistemas L es el modelado de los procesos de crecimiento tanto de organismos vivos como de objetos inanimados (cristales, conchas de moluscos o panales) .





Ejemplo:





Para simular tales procesos, usaremos un lenguaje de programación como Python, que tiene una biblioteca "tortuga" incorporada .





Entonces empecemos:





  1. Aquí estamos importando la biblioteca Turtle a nuestro proyecto:





    import turtle







  2. A continuación, incluimos todas las configuraciones necesarias para nuestra tortuga :





    turtle.hideturtle()







    turtle.tracer(1)







    turtle.penup()







    turtle.setposition(-300,340)







    turtle.pendown()







    turtle.pensize(1)







  3. , :





    axiom = "F+F+F+F"







    tempAx = ""







    itr = 3







    (itr- , )





  4. , itr-, "" /:





    for k in range(itr):







    for ch in axiom:







    if ch == "+":







    tempAx = tempAx + "+"







    elif ch == "-":







    tempAx = tempAx + "-"







    elif ch == "F": #F







    tempAx = tempAx + "F+F-f-F+F"







    else:







    tempAx = tempAx + "f"







    axiom = tempAx







    tempAx = " "







    print(axiom)







    , "+":





    if ch == "+":







    tempAx = tempAx + "+"







    ( ) “+” “+” . “-” “f”, “-” “f” . “F”, “F + F – f – F + F”, . , “”, . :





    axiom = tempAx







    tempAx = " "







    ( ):





  5. , , . , :





    for ch in axiom:







    if ch == "+":







    turtle.right(45)







    turtle.forward(10)







    turtle.right(45)







    elif ch == "-":







    turtle.left(45)







    turtle.forward(10)







    turtle.left(45)







    else:







    turtle.forward(20)







    , , "+", "-", "F" "f". , "+":





    if ch == "+":







    turtle.right(45)







    turtle.forward(10)







    turtle.right(45)







    , 45 , , 10, , 45 . "-":





    elif ch == "-":







    turtle.left(45)







    turtle.forward(10)







    turtle.left(45)







    , "+", , . "F" "f", 20 :





    else:







    turtle.forward(20)







    -:





  6. -, :





    turtle.fillcolor("#99BBFF")







    turtle.begin_fill()







    #99BBFF - (RGB: 153, 187, 255), begin_fill() . , , :





    turtle.end_fill()







    turtle.update()







    turtle.done()







    end_fill() . "". -:





, "" , .





Al final, también quiero agregar que realmente disfruté trabajando y escribiendo sobre este tema, quizás en el futuro, escribiré una serie de artículos sobre el tema de los "sistemas L", pero mientras tanto, quiero se presentarán los resultados de mi meter la creatividad:












All Articles