L-Systeme und was sie sich erlauben

Beginnen wir mit den Grundlagen. Wenn wir eine Definition aus der bekannten und geliebten Wikipedia ĂŒbernehmen, dann ist das L-System (oder das Lindenmeier-System ) ein paralleles Umschreibungssystem und eine Form der formalen Grammatik.





In einfachen Worten, das L-System besteht aus einem Alphabet von Zeichen, mit denen Zeichenfolgen erstellt werden können, einem Satz generativer Regeln, die Substitutionsregeln fĂŒr jedes Zeichen festlegen, einer Anfangszeichenfolge ( "Axiom" ), mit der die Konstruktion beginnt. und einen Translationsmechanismus, der durch Linien in geometrische Strukturen gebildet wird. Das einfachste Beispiel fĂŒr ein L-System ist das Baumkonstruktionsproblem.





Eingabedaten:





Zeichenfolge ( im Folgenden Axiom ): AB





Variablen ( die wir beim Erstellen des Baums verwenden können ): ABC





Regel (die Regel, nach der sich jede Variable in der nÀchsten Zeile Àndert ):





  • A -> AB





  • B -> AC





  • C -> A.





Die folgenden Transformationen werden erhalten:                                        





Generation





Bedingung





ein





AB





2





AB AC





3





AB AC AB A.





4





AB AC AB A AB AC AB





fĂŒnf





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





6





usw






Die Hauptrichtung, in der L-Systeme verwendet werden, ist die Modellierung der Wachstumsprozesse sowohl lebender Organismen als auch lebloser Objekte (Kristalle, Molluskenschalen oder Waben) .





Beispiel:





Um solche Prozesse zu simulieren, verwenden wir eine Programmiersprache wie Python, die ĂŒber eine integrierte "Turtle" -Bibliothek verfĂŒgt .





Also lasst uns anfangen:





  1. Hier importieren wir die Turtle- Bibliothek in unser Projekt:





    import turtle







  2. Als nĂ€chstes fĂŒgen wir alle notwendigen Konfigurationen fĂŒr unsere Schildkröte hinzu :





    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() . "". -:





, "" , .





Am Ende möchte ich noch hinzufĂŒgen, dass ich es wirklich genossen habe, an diesem Thema zu arbeiten und zu schreiben, vielleicht werde ich in Zukunft eine Reihe von Artikeln zum Thema "L-Systeme" schreiben, aber in der Zwischenzeit möchte ich prĂ€sentieren Ihnen die Ergebnisse meiner Stocher KreativitĂ€t:












All Articles