![]() |
L-System
Hallo
Ich möchte meine Umsetzung eines L-Systems vorstellen. Es ist mit Delphi 7 PE geschrieben, benötigt zusätzlich noch Turtle-Komponenten: ![]() Anleitung: Es beherrscht folgendes Alphabet: 'F', 'f', '[', ']', '+', '-'. Bei 'F' wird eine Strecke gezeichnet. Bei 'f' wird eine Strecke ohne zeichnen gegangen. Bei '[' wird sich die Position und der Winkel gemerkt. Bei ']' wird die letzte Position und der dazu gehörige Winkel ausgegeben. Bei '+' wird ein Winkel in mathematische Richtung (gegen den Uhrzeigersinn) gegangen. Bei '-' wird ein Winkel gegen die mathematische Richtung (mit den Uhrzeigersinn) gegangen. ![]() ps. Bei Generation besser nicht mehr als 5-7 eingeben, je nach Bildungsvorschrift, kann sonst ein wenig länger dauern. |
Re: L-System
Hi fwsp!
Ich habe das Programm mal getestet. Als erstes muss ich loswerden, dass das eine Interessante Idee ist, dieses Programm. Nur wozu braucht man das? Außerdem bekomme ich ziemlich haufig AV wenn die Formel (anscheinend) nicht stimmt. Flare |
Re: L-System
|
Re: L-System
Weitere ... Bugs...
Der Zeichenfortschritt wird erst nach der Ausgabe angezeigt, sollte vielleicht nebenbei kommen :mrgreen: Aber mit diesem Programm kann man schöne Spielereien machen! Eine "Blume" habe ich schon... Flare |
Re: L-System
Die AV wird kommen wenn die Anzahl der ']' nicht gleich der Anzahl der '[' ist. Die Eingabe einer ungleichen Anzahl ist auch nicht allzu sinnvoll. :wink:
Die Abfolge des Programms ist so konzipiert, dass erst die Zeichenkette generiert wird und anschließend diese grafisch umgesetzt wird. Eine Gleichzeitigkeit hab ich nicht vorgesehen. |
Re: L-System
Ich habe mich falsch ausgedrückt ^^
Dein Programm zeichnet erst und füllt dann die Leiste "Zeichenfortschritt" Flare |
Re: L-System
To Flare: Setzt mal die Länge auf 2-5, dann wirst du sehen, dass er noch zeichnet. Vielleicht zeichnet er schon außerhalb der Zeichenfläche, dann setz mal die y-Koordinate auf -150, oder so.
|
Re: L-System
Sehr schönes Programm...
Versuche Folgendes: 1. Die Linien zeichnest Du als Rechteck der Breite B und Höhe H. Die Höhe variiert jeweils um einen Randomwert. 2. Jede Linie ist um +/- Randomwinkel (einige Grad) nach links oder gedreht. 3. Bei jeder Rekursionstiefe nimmt B und H um X Prozent ab. 4. Die Winkel der Verästelungen variieren auch um einige Randomprozente. 5. Einige Rekursionen werden nicht ausgeführt. Damit wirst Du dann wirklich realistische Bäume erstellen können. |
Re: L-System
to alzaimar:
ich mag das '...' nicht. :wink: Ich hab den Source ja mit zur Verfügung gestellt, du kannst das gerne so umsetzen... |
Re: L-System
Ok fwsp, du hattest recht. Ich glaube der hat irgendwelche Linien doppelt gezeichnet, sodass es so aussah als wenn er schon fertig wäre. :wall:
Aber es lag nicht an den Grenzen des Bildschirmes Flare |
Re: L-System
bei mir produziert das nicht immer das komplette bild -> siehe
![]() aber damit kann man schöne sachen machen ;) erinnert mich irgendwie bissl an logo ^^ |
Re: L-System
das liegt an der von mir verwendeten Turtle-Komponente. Gibt es vielleicht eine Jedi-Turtle-Komponente?
|
Re: L-System
Liste der Anhänge anzeigen (Anzahl: 1)
o.O
Leider sind meine nicht so kreativ: Zitat:
W: 10 L: 5 SX: 50 SY: 150 @ Attachment das Bild |
Re: L-System
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Mit dem Source kann ich aber nichts anfangen, weil mir die Turtle-Grafik nicht gefällt. Na ja, hier mal eine ähnliche Implementierung. Sie ist vom Prinzip fast gleich, aber in meinen Augen leichter zu 'programmieren'. '-' ist ein Baumsegment, '/' bzw. '\' eine Verästelung nach links/rechts und 'o' ein Blatt. Die Blätter werden nur im letzten Rekursionsabschnitt gezeichnet. Es sind einfach kleine grüne Kreise. Die Resultate sind natürlich läääängst nicht so schön wie die Natur, man erkennt aber auch, das Rekursivität, oder Selbstbeinhaltung ein Grundalgorithmus unserer Welt ist. Wer will, kann damit weiter rumspielen... |
Re: L-System
als weitere erweiterung könnte ich mir noch vorstellen, den "zeichensatz" um das zeichen & oder so zu erweitern, mit dem man (vorangestellt an ein F) erreichen kann, dass sich in der danach durch das F eingeleiteten rekursion alle + in - und alle - in + umwandeln. dann wäre das zwar kein original L-System mehr, aber man hätte einige möglichkeiten mehr und könnte auch ein paar nette Fraktale wie z.b. die
![]() @alzaimar: respekt, das sieht echt cool aus. :thumb: |
Re: L-System
to alzaimar: das war gar nicht so böse gemeint...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz