Home

Diplomarbeit - Labor für künstliche Intelligenz

image

Contents

1. UNFFURF ELF EE YD LD MD FL YE FFF FFF FER R dfm Methodenname ImagelClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Formular wenn auf das Bild gelickt wird procedure TShowPicForm ImagelClick Sender TObject begin Close SchlieBe das Formular end MCCC ar Yr Yr ED Er TH YY eS ECT a a i Ne YY il a a We ce TTE NC EC I Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TShowPicForm FormClose Sender TObject var Action TCloseAction begin Action caFree Speicher freigeben end end 271 H Quelltexte Dateiname TurtleComSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 Klassenname TTurtleComForm Version 1 0 Kurzbeschreibung Diese Klasse repr sentiert das Fenster das zum Anzeigen der Turtle Kommandos benutzt wird uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls Buttons TTurtleComForm class TForm Auflistung aller eingebundenen Komponenten der Klasse GroupBoxl TGroupBox Labell TLabel Label3 TLabel Lab
2. fprintf stderr ERROR There exists no value for LightZ in LPROCESS CFG n n return 1 else if info light_z atof temp 0 0 fprintf stderr ERROR Illegal Value for LightZ in LPROCESS CFG n n return 1 Speicher den Pfad aus der CFG Datei f r POV Ray in die Variable pathPOV my temp getValueFromList opts POV if temp NULL fprintf stderr ERROR There exists no path for POV Ray in LPROCESS CFG n n return 1 else length strlen temp if length 1 sprintf zeile pvengine exe else if temp length 1 sprintf zeile spvengine exe temp else sprintf zeile s pvengine exe temp if CFGFile fopen zeile rb NULL fprintf stderr ERROR POV Ray could not be found in this directory n n return 1 fclose CFGFile strcpy info pathPOV temp Speicher den Pfad aus der CFG Datei f r QuietPOV in die Variable pathQPOV temp getValueFromList opts OPOV if temp NULL else fprintf stderr ERROR There exists no path for QuietPOV in LPROCESS CFG n n return 1 length strlen temp if length 1 sprintf zeile quietpov exe else if temp length 1 sprintf zeile sguietpov exe temp else sprintf zeile sNNquietpov exe temp if CFGFile fopen zeile rb NULL fprintf stderr ERROR OuietPOV could not be found in this directory n n
3. bracketrr Linker Kontext gefunden else if state 0 amp amp line i Wenn Klammern vorhanden dann gebe eine Fehlermeldung aus if bracket gt 0 fprintf stderr ERROR There are brackets in the left context of rule d n errorRule errorCountertt statett bracket 0 Rechter Kontext gefunden SC else if state lt 2 amp amp line i gt state 2 bracket 0 Bedingungteil gefunden else if line i 144 H Quelltexte Wenn Klammern vorhanden im r Kontext dann gebe eine Fehlermeldung aus if state 2 amp amp bracket gt 0 fprintf stderr ERROR There are brackets in the right context of rule d n errorRule errorCountertt state 3 bracket 0 Hauptteil der Regel gefunden else if line i amp amp line i l gt Klammern im rechten Kontext gefunden if state 2 amp amp bracket gt 0 SC SC fprintf stderr ERROR There are brackets in the right context of rule d n errorRule errorCountertt Klammern im Bedinungsteil gefunden else if state 3 amp amp bracket gt 0 fprintf stderr ERROR There are brackets in the condition of rule d n errorRule errorCountertt bracket 0 continue Die Anzahl der gefundenen Fehler wird zurtick gegeben return errorCounter A SC KKK RK A
4. eee 1 1 2 Amfsabenstellung cis dore een hn Mn ee EXPO ER rennen RH RE SES ME Free 3 1 3 Gliederung an ansehe PIS Y TR eR OPER dened ER AR SERRE ERRAT A N 3 1 4 Anforderungen an den Leser 4 v 4491544852 5n gon oin vs eee oa etis soo eY Ee evan en aH Se eua eee OAN ee eaae aed 4 2 THEORETISCHE GRUNDLAGEN VON L SYSTEMEN UND DEREN EVOLUTION FA OH 5 2 1 Kurzbiografien von wichtigen Personen ceres ee ee eene eren eerte netta setas etna se tnu 5 2 2 Icd 6 2 2 1 Wichtige Unterschiede zu den Chomskysprachen sess 6 2 2 2 Das urspr ngliche Kette oon ae acie opem educ GN fa 7 22 3 bersicht der L Systeme 23 nte oerte peto i bte ts ie YA ace 9 2 2 31 Basis BEE 10 2 2 3 2 Determmistisches L System ete ee tre ue oes eui Y dto 12 2 2 3 3 Propagierendes EE 12 2 2 3 4 L Systeme mit Termmalzeichen os soo oett reacts aet rt NUDD FY 14 22 59 LeSysteme mit Tabelen ea ua erbe e eer aes 16 22 50 L Systeme mit Verzweigungen se eco Y a cans tie Ree y O 18 223 7 tochasusehe L Systeme s n oe Ne eei ou eid ta ei edit e pt 20 2 238 Parametrisiene L Systeme ise see cce eek 21 2 2 3 9 Komntextsensittyclu System osse duce Elek 22 22 310 Weitere D Systeme al asien 23 2 23 11 Kombination von E Systemen a Re neue 24 2 2 4 Wachstumsfunktion ew GR etana aget st A NF Y yD 25 2 25 Klassifikation Einordnung ta neu 26 2 2 6 Interpretation des Wortes u a aan a 28 2 2 7 bersicht b
5. Ist die Ausfuhrung eine Konvertierung und ist diese erfolgreich else if JvCreateProcessl Tag 2 then openLS PicName Offne die Datei und zeigen den Inhalt in einem neuen Kindfenster end end Dateiname ShowPicSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 10 Klassenname TShowPicForm Version Lad Kurzbeschreibung Diese Klasse repr sentiert das Fenster das zum Anzeigen der Grafik benutzt wird uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs ExtCtrls TShowPicForm class TForm Auflistung aller eingebundenen Komponenten der Klasse Imagel TImage Auflistung aller Methoden fur die Ereignisverarbeitung procedure ImagelClick Sender TObject procedure FornClose Sender TObject var Action TCloseAction private Private Deklarationen public 276 H Quelltexte Public Deklarationen end a a T RG MM UNTERE Y CY Offentliche globale Variablen E E var ShowPicForm TShowPicForm Die Instanz von TShowPicForm ist ffentlich fur alle ande ren Units erreichbar dee IMPLEMENTATIONSTEIL DER UNIT TI BP EHRE IR ETON Be Cw OE Br ow TRAC SH BEU Ci EN CE Cn ARN E CEA QE EE Ea CEI EN N RCE EWN ENO CEN ADAR LEERE DE EM CEPR INC Bw SENGL Bb ES LEAN BECA EE BECA ENT CEPR ATI EN TORE N implementation nn EE Biennale Compiler Schalter P
6. fprintf volume file g g g gt ver poly store t 0 xl ver poly store t 0 z ver poly store tl1 011 vii fprintf volume file g g g gt ver poly_store t 1 _xl ver poly_store t 1 _z ver poly_store t l _yl fprintf volume file lt g g g gt ver poly store t 2 11 x ver poly_store t 2 _z ver poly_store t 2 _y fprintf volume file finish t_leaf pigment color col_ d n color 16 if maxX lt ver poly store t 0 _x maxX ver poly store t 0 x if maxY lt ver poly store t 0 _yl maxY ver poly store t 0 1 yl if maxZ lt ver poly store t 0 zl maxZ ver poly store t 0 _z if minX gt ver poly_store t 0 _x minX ver poly store t 0 x if minY gt ver poly_store t 2 _y minY ver poly_store t 2 sei if minZ gt ver poly store t 011 z1 minZ ver poly store t 0 z if maxX lt ver poly store t 1 _x maxX ver poly_store t 1 _x if maxY lt ver poly store t 1 _yl maxY ver poly_store t 1 _y if maxZ lt ver poly store t 1 _z maxZ ver poly store t 1 z if minX gt ver poly store t 111 x1 minX ver poly store t 1 x if minY gt ver poly_store t 2 _y minY ver poly_store t 2 sei if minZ gt ver poly_store t 1 _z minZ ver poly store t 1 z if maxX lt ver poly store t 211 x1 maxX ver poly store t 2 _x if maxY lt ver poly st
7. 86 4 Entwurf und Implementierung der Fassade Um wie im Ouelltext von Lparser das umst ndliche Suchen von Funktionen zu unterbinden wurden Funktionen gruppiert und in eigene C Dateien ausgelagert Somit ergibt sich eine Modularisierung gem Tabelle 4 4 Modulname Kurzbeschreibung Lprocess c Enth lt lediglich die main Funktion globals h Enth lt wichtige Pr prozessor Anweisungen globale Variablen und Strukturen die fiir alle Module zur Verfiigung stehen cfg file c cfg file h Alle Funktion die zum Auslesen und Interpretieren der CFG Datei ben tigt werden sind in dem Modul enthalten com line c com line h Enth lt Funktionen zur Verarbeitung und Interpretation der Kommandozeilenargumente Iparser c lparser h Das Modul enth lt alle Funktionen die mit dem Lparser Paket interagieren misc c misc h Die einzelnen Funktionen die keinem speziellen Modul zuge wiesen werden k nnen finden sich hier wieder pov c pov h Alle Funktionen die mit POV Ray oder OuietPOV kommunizie ren sind in diesem Modul enthalten Tabelle 4 4 Module der Fassade Die Datei Lprocess c enth lt lediglich die main Funktion Diese entspricht im Groben dem Ablaufdiagramm aus Abbildung 4 6 Lediglich die Priifung und das Starten einer POV Ray Instanz wird von der Fassade vor dem Ausf hren von Lparser get tigt Dies ist n tig damit POV Ray ausreichend Zeit bekommt die GUI Extension Schnittstelle zur Verfiigung zustellen u
8. Zwischenspeicher begin Durchl uft die Produktionsliste nach identischen String Wurde keiner gefunden dann wird der String in die Liste aufgenommen for i 0 to ProductionList Count 1 do if CompareText updProduction ProductionList Items i 0 then begin ProductionList Items Delete i break end Deaktiviere die Buttons zum Aktualisieren einer Produktion Add2Btn Visible false AddBtn Visible true UpdateBtn Visible false AddBtn Click end EE Methodenname Add2BtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung F gt eine Produktion hinzu wenn der Button Aktualisiere aktiv ist procedure TMDIChildMain Add2BtnClick Sender TObject begin Add2Btn Visible false AddBtn Visible true UpdateBtn Visible false AddBtn Click end GA Y cap ESI y AEN ES RP NEN CS RYN RED RI RE SRP ERC RE PER RECN RE I PI ESC NEP NEE CP YF OR Ry FY ED Methodenname ProBodyEditKeyPress Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Funktion wird ausgef hrt wenn ein Zeichen im Editierfeld f r den Produktionsk rper eingegeben wird H Quelltexte procedure TMDIChildMain ProBodyEditKeyPress Sender var Key Char TObject var i integer Zwischenspeicher begin Berechne die Breite des Textes des Editierfeldes mit dem neuen Zeichen
9. for int i 0 i lt N Succ i 3 0 while Succ i j NO if Succ il j II Succ il j strcpy Rem Str amp Succ i j 1 Succ i j 1 NO sprintf amp Succ i j 1 21f double rand 100 25 0 2 0 strcat Succ i Rem Str N Paren 0 j while Succ i j amp amp Succ i j Il N Paren 0 if Succ i j N_Parent if Succ i j N_Paren j else j void L_Finish for int i 0 i lt N Rules i delete Rules i MIMMMMMlMMMMMIMMMHLEIMMBFMMMMMM MP M MMMPMMMMMPMMMMMMMIMMEMMMMMUMMMMMLIMIMMMMIMMMMIMMMIEIHI HyHYYWYW DIAIMM Ill Adding functions to computate the best Cameraposition by Jan Derer Absolut function for variables from type double double dAbs double number t if number O0 return 1 number return number Computate the percantage perc from the Axis x y or z double percOfAxisValues double perc char type t if perc 100 0 perc 0 0 return 1 switch type case x return __max maxX dAbs minX perc 100 00 break case y return _ max maxY dAbs minY perc 100 00 206 H Quelltexte break case z return _ max maxZ dAbs minZ perc 100 00 break default return 1 Computate the best cameraposition and create INFO TXT void createINFOTXT void char Center0 0 double CamX
10. function TMDIMain checkLSLine var line string string var s string Zwischenspeicher f r ein String production string Enth lt die fertige Produktion lcon string Linker Kontext der Produktion pred string Produktionskopf der Produktion rcon string Rechter Kontext der Produktion cond string Bedingungsteil der Produktion succ string Produktionsk rper der Produktion i integer Speichert die Position des linken Kontext Zeichens j integer Speichert die Position des Anfangs des Produktionsk rpers k integer Speichert die Position des rechten Kontext Zeichens 1 integer Speichert die Position des Bedingungszeichens begin result R ckgabewert mit einem Leerstring initialisieren i Pos lt line Zuweisung der Position des linken Kontext Zeichens k Pos gt line Zuweisung der Position des rechten Kontext Zeichens L Pos line Zuweisung der Position des Bedingungszeichens Falls das linke Kontext Zeichen ganz links au en steht dann ist die Produktion nicht richtig formuliert if i 1 then begin result Linker Kontext fehlt Exit end S trim Copy line 1 i 1 Der linke Kontext wird aus dem String herauskopiert Ist das Wildcardzeichen enthalten und weitere Zeichen if Pos s gt 0 and length s gt 1 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Der linke Kontext enth lt neben dem Ze
11. long Obj Len Rule Type Rules MAX RULES int N Const char Const Names MAX CONST VAR L char Const Vals MAX CONST MAX NUM LEN char Ign Chars MAX NUM LEN Basic types Simple types define define define define efine efine efine d d d define endif u8 ul6 u32 s8 s16 s32 32 r64 My own boolean type define boolean ifndef TRUE define TRUE Next_Ctx char Prv double Prb char Prv int N_Args char Str2 unsigned char unsigned short int unsigned long int signed char signed short int signed long int Max number of constants Max number of successors Depth of recursion The main block and replacement string The array of possible successors The probability distribution array Pointers to previous and next contexts Pointer to the condition The total number of parameters in the rule The number of possible successors char Nxt char Cnd char Suc double Prb int N_ Par char Nxt char Cnd return strlen Pred bool App 154 H Quelltexte fifndef FALSE define FALSE s16 0 fendif GonstanEs ee Max char size of filename and large string define max_file 512 Max vectors per polygon define vectors_p_poly 15 Max polygons per object define max_p_object 400 Max size of the and stacks during drawing define max_stack 1024L Version id for the VOL file format
12. 1000 0 Reichweite light Attenuation0 1 0 Abnahme des Lichtes Position der Lichtguelle light Position D3DXVECTOR3 1 0 info CamX info LightX 1 0 info CamY info LightY 1 0 info CamZ info LightZ SetLight 0 light Setze die Lichtquelle auf Index 0 LightEnable 0 TRUE Aktiviere das Licht auf Index 0 SetRenderState D3DRS_LIGHTING 1 Aktiviere global das Licht Erzeuge Vertex Buffer f r alle Vertexe hr CreateVertexBuffer sizeof TMyVertices Gr e der Vertex Liste D3DUSAGE_WRITEONLY Nur Schreibzugriffe D3D8T_CUSTOMVERTEX Eigene Vertexe D3DPOOL_MANAGED MyVB Zeiger zum Buffer Falls Erzeugung fehlschl ge gib eine Fehlermeldung aus if FAILED hr then FatalError 0 Fehler beim Erstellen des Vertex Buffers with MyVB do begin hr Lock 0 offset des Anfangs 0 Gr e des locks 0 alles vbVertices Wenn erfolgreich dann hier ablegen 0 sonstige Flags Falls Erzeugung fehlschl ge gib eine Fehlermeldung aus if FAILED hr then FatalError 0 Fehler beim Locken des Vertex Buffers Kopiere Vertex Buffer Move MyVertices vbVertices SizeOf TMyVertices Unlock end Einstellungen f r die R ckseiten der Dreiecke SetRenderState D3DRS_CULLMODE D3DCULL CCW SetRenderState D3DRS_ZENABLE 0 2 Buffer aktivieren Definieren der Ausrichtung der Kamera D3DXMatrixLookAtLH ViewMatrix D3DXVECTOR
13. Diese Funktion sucht nach einer ffnenden Klammer in einer gegebenen Zeile und versucht vom Anfang der ge ffneten Klammer bis zur n chsten schlie enden Klammer drei Werte zu extra hieren Das n chste Modul enth lt zwei einzelne nicht zusammengeh rende Funktionen Die Funkti on deleteFiles l scht alle Dateien die zwischenzeitig erzeugt wurden wie zum Bei spiel die LOG Dateien von Lparser oder LV2POVID Dar ber hinaus wird in der gesamten Fassade zum L schen und Umbenennen von Dateien die Funktion system verwendet Entsprechend sind die Befehle die system an das Betriebssystem bergibt betriebssys temabh ngig Zum Nachschlagen der Befehle f r den Kommandozeileninterpreter von Win dows sei auf Mi93 verwiesen Die Funktion checkingEnvVariables pr ft ob eine Umgebungsvariable f r QuietPOV angelegt wurde Ist dies nicht der Fall dann wird die Um gebungsvariable mit SetEnvironmentVariable gesetzt Dies ist eine der wenigen API Funktionen von Windows Sie wird verwendet weil Windows 98 keine Umgebungsvari able mit der system Funktion setzten kann Das berpr fen der Umgebungsvariablen l uft wie folgt ab Aus der Datei LPROCESS CFG wird ein Pfad ausgelesen mit dem ange geben wird wo sich QuietPOV befindet Nun werden nacheinander die Strings durchsucht die in envp enthalten sind Dazu wird gepr ft ob die ersten vier Zeichen das Wort Path ergeben Wurde ein solcher String gefunden wird dieser S
14. ESK96 ESK97 FMF04 Fo00 Erzsebet Csuhaj Varju Gheorghe Paun und Arto Salomaa Conditional Ta bled Eco Grammar Systems versus E TOL Systems Journal of Universal Computer Science Band 1 S 252 268 Springer Verlag 1995 http www jucs org jucs 1 5 conditional tabled eco grammar paper pdf Stand 06 2004 Judit Csima nvestigations on Simple Eco Grammar Systems Ph D Disserta tion E tv s Lor nd University 2002 http sziami cs bme hu csima phd1 ps Stand 06 2004 Roger Luke DuBois Applications of Generative String Substitution Systems in Computer Music Ph D Dissertation University of Columbia 2003 http Www music columbia edu luke dissertation dissertation pdf Stand 06 2004 Oliver Deussen Computergenerierte Pflanzen Springer Verlag 2003 Walter Doberenz und Thomas Kowalski Borland Delphi 5 Grundlagen und Profiwissen Carl Hanser Verlag 2000 Stephen R Davis und Richard J Simon Win98 Programmierung fiir Dum mies MITP Verlag GmbH 1998 Robert L Dunlop DirectX 7 Programmierung Markt Technik Verlag 2000 Michael Ebner Delphi 6 nachschlagen und verstehen Addison Wesley Ver lag 2002 Wolfgang F Engel und Amir Geva Direct 3D Spieleprogrammierung SY BEX Verlag GmbH 2001 Frank Eller workshop Delphi 5 Addison Wesley Verlag 2000 Frank Eller workshop Delphi 6 Addison Wesley Verlag 2001 Jose Encarnag o Wolfgang Stra er und Reinhard Klein Graphische
15. EditCutl TEditCut EditCopyl TEditCopy EditPastel TEditPaste EditSelectAlll TEditSelectAll EditUndol TEditUndo EditDeletel TEditDelete HelpAbout TAction FileOpen TFileOpen FileExitl TFileExit WindowClosel TWindowClose WindowCascadel TWindowCascade WindowTileHorizontall TWindowTileHorizontal WindowTileVerticall TWindowTileVertical windowMinimizeAlll TWindowMinimizeAll WindowArrangel TWindowArrange ActionMainMenuBar TActionMainMenuBar ActionToolBarl TActionToolBar CoolBarl TCoolBar StatusBarl TStatusBar ImageListl TImageList 256 H Quelltexte OptionsCFG TAction ImportLS TAction OpenDialogl TOpenDialog JvCreateProcessl TJvCreateProcess Auflistung aller Methoden fur die Ereignisverarbeitung procedure HelpAboutExecute Sender TObject procedure FileNewExecute Sender TObject procedure OptionsCFGExecute Sender TObject procedure FileOpenlAccept Sender TObject procedure FormCreate Sender TObject procedure FormClose Sender TObject var Action TCloseAction procedure FormCloseQuery Sender TObject var CanClose Boolean procedure ImportLSExecute Sender TObject procedure JvCreateProcesslRead Sender TObject const S String procedure JvCreateProcesslTerminate Sender TObject ExitCode Cardinal Auflistung aller privaten Methoden als Prototypen private procedure CreateMDIChild const Name string function checkLSLine
16. begin files true Option gefunden Wenn der Wert on ist if CompareText value on nfo Files True Wenn der Wert off ist else if CompareText value nfo Files False Falls nichts zutrifft else files false end Ist es der Bezeichner CamX else if CompareText key CamX 0 begin try nfo CamX StrToFloat value camx true except on EConvertError do end end Ist es der Bezeichner CamY else if CompareText key CamY 0 begin try Info CamY StrToFloat value camy true except on EConvertError do end end Ist es der Bezeichner CamZ else if CompareText key CamZ 0 begin try Info CamZ StrToFloat value camz true except on EConvertError do end end Ist es der Bezeichner LightX else if CompareText key LightX begin try Info LightX lightx true except on EConvertError do end end StrToFloat value Ist es der Bezeichner LightY else if CompareText key LightY begin try Info LightY lighty true except on EConvertError do end end StrToFloat value dann setze die Variable in der Info Struktur 0 then dann setze nicht die Variable off 0 then dann liegt ein ung ltiger Wert vor then Wandel den String in eine Flie kommazahl um Option gefunden Bei einem Konvertierungsfehler mache nichts then Wandel den String in eine Flie kommazahl um O
17. declare col 6 colour blue 1 0 n fprintf pov file declare col 7 colour red 1 0 blue 1 0 n fprintf pov file declare col 8 colour red 0 439216 green 0 858824 blue 0 576471 Nn fprintf pov file declare col 9 colour red 1 0 green 0 498039 blue 0 0 5n fprintf pov file declare col 10 colour red 0 258824 green 0 258824 blue 0 435294 An fprintf pov file declare col 11 colour red 0 6 green 0 196078 blue 0 8 Mn fprintf pov file declare col 12 colour red 0 439216 green 0 576471 blue 0 858824 Vn fprintf pov file declare col 13 colour red 0 556863 green 0 137255 blue 0 137255 Nn fprintf pov file declare col 14 colour red 0 858824 green 0 858824 blue 0 439216 5n fprintf pov file declare col 15 colour red 0 623529 green 0 623529 blue 0 372549 n fprintf pov file f include Lpar2pov inc n n fprintf pov file object Lsystem n n fprintf pov file light source lt 4 4 4 gt color White n CamVector 0 info light x CamVector 2 info light z CamVector 1 info light y fprintf pov file light source 4f 4f 4f gt color Gray60 n fclose pov file fclose info file return 0 149 H Quelltexte Dateiname pov h KKK 25 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 ck ck ck kkk k Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lpr
18. strchr Ign_Chars Object_Str j NULL Object Str j ll Object Str j if Object Str j N_Brack 0 do if Object_Str j N_Brack if Object_Str j N_Brack 3 while N_Brack gt 0 else j if j lt 0 return false if Obj Matches j Prev Ctx 1 amp Prev Len return false Check for next context if Next_Ctx NULL Again find the next context making sure to ignore branches j it while j lt Obj Len amp amp Object Str j amp amp strchr Ign Chars Object Str j NULL Object Str j if Object Str j N_Brack 0 do if Object_Str j N_Brack if Object_Str j N_Brack j while N_Brack gt 0 else j if j gt Obj_Len Object_Str j return false if Obj_Matches j Next_Ctx 1 amp Tmp return false Check if the condition is met return Condition Met i bool Rule Type Condition Met long i YA EF i lau N Function Is Condition Met This function checks to see if a rule s condition is met at position i in Object Str char Cond Str COND L float Arg List MAX VARS if Cond NULL return true else 196 H Quelltexte Find N Args amp Object Str i Prev Len Arg List N Param Repl Addr Args Cond Cond Str Arg List return BExp Eval Cond Str 0 strlen Cond
19. string public Public Deklarationen end var MDIChildMain TMDIChildMain Die Instanz von TMDIMain ist ffentlich fur alle anderen Units erreichbar uses MDIMainSource Direct3DSource TurtleComSource CondFormSource ConsoleFormSource var updProduction string Speichert die Produktion die Bearbeitet werden soll GYDD FOD AID Re ene ee ee ee ee es ee ee pei i ee ee ee ee ee ee eee Methodenname TestingHeadParameterList Ruckgabewert Typ string Bedeutung Gibt einen String mit einer Warnmeldung zurtick oder eine leere Zeichenkette Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name pred Bedeutung Enth lt den Produktionskopf einer Produktion Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name cond 233 H Quelltexte Bedeutung Enth lt den Bedingungsteil einer Produktion Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name succ Bedeutung Enth lt den Produktionsk rper einer Produktion Methodenbeschreibung Die Aufgabe dieser Methode ist die Parameterliste des Produktionskopfs zu pr fen ob die angegebenen Parameter verwendet werden und ob Parameter verwendet werden die nicht aufgelistet sind function TMDIChildMain TestingHeadParameterList const pred string const cond string const succ string string var parameterlist string Speichert alle Variablen die in der Parameterliste enthalten sind notfoundlist strin
20. true Option wurde gefunden except on EConvertError do Bei einem Konvertierungsfehler mache nichts end end Ist es der Bezeichner Width else if CompareText key Width 0 then begin try Info Width StrToInt value Wandel den String in eine Zahl um width true Option wurde gefunden except on EConvertError do Bei einem Konvertierungsfehler mache nichts end end Ist es der Bezeichner AA else if CompareText key AA 0 then begin aa true Option gefunden Wenn der Wert on ist dann setze die Variable in der Info Struktur if CompareText value on 0 then nfo AA True Wenn der Wert off ist dann setze nicht die Variable else if CompareText value off 0 then nfo AA False Falls nichts zutrifft dann liegt ein ungultiger Wert vor else aa false end Ist es der Bezeichner POV else if CompareText key POV 0 then begin Ist es keine leere Zeichenkette if length value lt gt 0 then begin Info PathPOV value Ubernehme den String pov true Option gefunden end end Ist es der Bezeichner QPOV else if CompareText key OPOV 0 then begin Ist es keine leere Zeichenkette if length value lt gt 0 then 264 Ouelltexte begin Info PathQPOV value qpov true end end Ist es der Bezeichner Files Ubernehme den String Option gefunden 0 then else if CompareText key Files
21. 24 2 Theoretische Grundlagen von L Systemen und deren Evolution L System OL System DOL System deterministic POL System propagating EOL System Extension TOL System table BOL System branching SOL System stochastic Parametrisierte 0L System IL System interaction Map L System Timed L System dL System differential UOL System unary Bedeutung Basis Lindenmayer System Fiir jedes Symbol existiert nur eine Produktion e ist nicht Bestandteil einer Produktion Einf hrung von Terminal und Nichtterminalzeichen Einf hrung von mehreren Mengen von Produktionen Einf hrung von Verzweigungs symbolen Zuweisung der Produktionen einer Wahrscheinlichkeit f r deren Ausf hrung Erweiterung der Produktionen um eine Bedingung und um Parameter die bergeben wer den k nnen Erweiterung der L Systeme um Kontextsensivit t Graphenbasierte L Systeme Produktionen werden um Initi al und Sterbealter erweitert um eine Animation zu realisie ren Animation einer Szene von L Systemen durch Differential gleichungen Beschr nkung des Alphabetes x auf ein Symbol Anwendung Siehe Kapitel 2 1 7 Zum automatischen Entwi ckeln eines Wortes Entwicklung ohne Absterben von Teilen des Wortes Schnittstelle zur Chomskyhie rarchie Verschiedene Umgebungen modellieren warm kalt Mehr dimensionale Strukturen Automatische Entwicklung eines Wortes wobei unter schiedliche Worte generie
22. Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename com line h Modulversion 148 Modulbeschreibung Header Datei zum Modul com_line c KCKCKCKCkCkCk 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 2 2 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 k k k k k k k ifndef com_line_H define com_line_H extern void print_Welcome void extern void print_Comline_Help void fendif 127 H Quelltexte Dateiname com line c BRK RK 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 20 Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename com line c Modulversion La Modulbeschreibung Wichtige Ausgaben fiir die Kommandozeile und Funktionen zum verarbeiten der Argumente von der Kommandozeile sind in dem Modul enthalt KCKCkCkCkCkCk IR ARR kk Ck Ck 2 2 222 22 2 2 22 2 2 22 2 22 2 2 22 2 5 KKK RK A kk kk E kk KK KK KK KK KK KK KK KK kkk kkk 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 20 INCLUDE DATEIEN Jd 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 k k k k finclude lt stdio h gt finclude lt string h gt finclude lt ctype h gt finclude lt stdlib h gt include globals h KKK RK 25 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 I k k
23. Diese Klasse repr sentiert das Info Fenster uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls Buttons jpeg ExtCtrls TAboutForm class TForm Auflistung aller eingebundenen Komponenten der Klasse Imagel TImage Panell TPanel Labell TLabel Label2 TLabel Label3 TLabel BitBtnl TBitBtn Label4 TLabel Auflistung aller Methoden fur die Ereignisverarbeitung procedure FornClose Sender TObject var Action TCloseAction procedure BitBtnlClick Sender TObject private Private Deklarationen public Public Deklarationen end EEN Offentliche globale Variablen X Y Y eee et var AboutForm TAboutForm Die Instanz von TAboutForm ist ffentlich fir alle anderen Units erreichbar H Quelltexte implementation Zeche Compiler Schalter R d m AIS ee eee ee eee Liste aller private eingebundenen Units E Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TAboutForm FormClose Sender TObject var Action TCloseAction begin Action caFree Speicher freigeben en
24. Funktionsname print_Welcome Funktionsbeschreibung Eine einfache Startnachricht f r die Konsole FERRARA IR A kk Ck 2 2 22 IR 2 2 2 2 2 A 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2 22 2 2 222 2 22 2 22 2 2 22 2 2 ek f void print_Welcome void puts LIESS ss sae OO OO O WR puts Lprocess Version 1 0 by Jan Derer puts Contact darkhabits aol com EE n n KOR KK Ck Ck Ck kk kk E 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 2 22 22 20 Funktionsname print_Comline_Help Funktionsbeschreibung Zeigt auf der Konsole eine kurze Hilfe f r Lprocess an KCKCKCkCkCkCk IR AR 2 2 22 kk A Kk Ck kk kk 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 2 k k void print_Comline_Help void printf Usage lprocess options ls file to convert 1s file n n puts Examples puts lprocess H640 W480 A bekerpl ls puts Make a Bitmap Image of the L System bekerpl with 640 480 and Anti Aliasing puts lprocess C bekerpl bekerpl5 puts Convert bekerpl and save the L System to bekerpl5 and generate a Image puts lprocess e printf Just closing the POV Ray Instance n n printf t tThis screen n printf H num t tImage height in pixel n printf W num t tImage width in pixel n printf TNtNtUsing Imageformat Targa n printf ANtNtUsing Anti Al
25. PS eh e ed i nd nf er Ve BE pe ec end FYS SE ea a EY Methodenname EditBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Wenn eine Produktion bearbeitet werden soll dann Rufe diese Funktion auf procedure TMDIChildMain EditBtnClick Sender TObject var lcon string Enth lt den linken Kontext der Produktion pred string Enth lt den Produktionskopf der Produktion rcon string Enth lt den rechten Kontext der Produktion cond string Enth lt den Bedingungsteil der Produktion prob string Enth lt den Produktionsk rper der Produktion I integer Laufvariable begin Speicher die zu bearbeitende Produktion zwischen damit UpdateBtnClick auf den String zugreifen kann updProduction ProductionList Items ProductionList ItemIndex Zerlege die Produktion in seine Einzelteile und zeige diese mit den entsprechenden Editierfelder an StrToProduction ProductionList Items ProductionList ItemIndex lcon pred rcon cond prob LeftContextEdit Text lcon ProHeadEdit Text pred RightContextEdit Text rcon ConditionEdit Text cond ProBodyEdit Text prob UpdateBtn Visible true Add2Btn Visible true Aktiviere die alternative Hinzufuge Funktion AddBtn Visible false Deaktiviere die Standard Hinzuf ge Funktion Passe die Gr be des Editierfeldes fur den Produktionsk rper an die G
26. Rules i gt Swap_Sizes else if R lt 1 0 Randomize expressions 10 probability Rules i gt Rand Expr int Rule_Type Get_Pred char Str This function returns the rule s entire predecessor including the parameters int i N_Vars 0 char Tmp Str MAX NUM LEN int Len strlen Pred Str 0 0 for i 0 i lt Len i if Pred i Tmp_Str 0 Pred i Imp_Str 1 NO strcat Str Tmp_Str else strcat Str strcat Str itoa N_Varsrr Tmp Str 10 streat Str return N_Param int Rule_Type Get_Pred2 char Str This function returns only part of the rule s predecessor without any parameters For example if the predecessor is A x y then only A is returned This is used for replacement if we are replacing B y z with A x y we really want to replace it with A y z int i 0 N_Vars 0 char Tmp_Str Tmp Str strchr Pred if Tmp_Str NULL strcpy Str Pred else strncpy Str Pred amp Tmp Str 0 amp Pred 0 while Imp Str i 1 if mp Str i 1 N Varstt itt return N_Vars bool Rule_Type Insert char Str int N_Args bool App This function inserts Str into a random position in the rule s successor The position must not be inside an expression so this is checked for It accepts the string to insert the number of arguments in the string being inserted and
27. TObject TObject 232 TCloseAction H Quelltexte procedure CamYTrackChange Sender TObject procedure CamZTrackChange Sender TObject procedure LightXTrackChange Sender TObject procedure LightYTrackChange Sender TObject procedure LightZTrackChange Sender TObject procedure Button2Click Sender TObject procedure UpdateBtnClick Sender TObject procedure Add2BtnClick Sender TObject procedure ProBodyEditKeyPress Sender TObject var Key Char procedure CloseBtnClick Sender TObject procedure FormCloseQuery Sender TObject var CanClose Boolean procedure FormCreate Sender TObject procedure CondBtnClick Sender TObject Auflistung aller privaten Methoden als Prototypen private function SyntaxLineCheck var production String var new_production String String function SystemCheck boolean function saveToCFG boolean procedure StrToProduction const str string var lcontext string var predessor string var rcontext string var condition string var successor string function TestingForBrackets const succ string string procedure TestingProductionHeads const pred string var headlist string var headdoublelist string procedure TestingForExistingSymbols const succ string const lcon string const rcon string const headList string var missHeadList string function TestingHeadParameterList const pred string const cond string const succ string
28. Z _y xz A x Z _x X _z Z x N z X x Yl y D N x N x N Y _z XL yl Y _z YL x1 X _z Y _x yl NL y N _z N _z if D lt r32 0 0001 return TRUE else return FALSE Output data file procs static void Open datafile void Open and setup the different output files depending on the flags 7 char S max file s16 i if pov_form pov_form2 strcpy S inc out output inc output pov Message Pov file Ss n Sys volume_file fopen S wt if volume_file User_error Cannot open file s S Buffer IO volume_file 0 return else if pov_form3 for i 0 i lt 8 itt sprintf S inc out output d inc output d pov i Message Pov file s n Sy vf i fopen S wt if vf i User_error Cannot open file s S fprintf vf i component 1 0 1 0 lt 0 0 O gt n return 166 Y yl H Quelltexte else if blb form strcpy S output blb Message Blob file MS SDN Uy volume_file fopen S wt if volume file User error Cannot open file s S Buffer IO volume file 0 fprintf volume file blob nThreshold 0 5 n return else if dxfl strcpy S output dxf Message Dxf file Tes n SG volume_file fopen S wt if volume_file User_error Cannot open file s S Buffer_IO volume_
29. e return Expr_Eval Expr_Str First i 1 Term Eval Expr Str i 1l Last if Expr Str i N_Paren if Expr Str i N Paren lc return Term Eval Expr Str First Last bool BExp Eval char Expr Str int First int Last This function evaluates a boolean expression int N Paren 0 int i Last if Expr Str First return BExp Eval Expr Str First l Last else if Expr Str First amp amp Expr Str Last return BExp Eval Expr Str First l Last 1 else while i First if N Paren 0 if Expr Str i amp return BExp Eval Expr Str First i 1 amp amp BExp Eval Expr Str i tl Last else if Expr Str i return BExp Eval Expr Str First i 1 198 H Quelltexte BExp Eval Expr Str i tl Last else if Expr Str i return Expr Eval Expr Str First i 1 Expr Eval Expr Str i tl Last else if Expr Str i gt if Expr_Str itl return Expr Eval Expr Str First i 1 gt Expr Eval Expr Str i 2 Last else return Expr Eval Expr Str First i 1 Expr Eval Expr Str i 1 Last else if Expr Str i lt if Expr_Str itl return Expr_Eval Expr_Str First i l lt Expr_Eval Expr_Str i 2 Last else return Expr Eval Expr Str First i 1 lt Expr Eval Expr Str i 1 Last if Expr Str i N_Paren t if Expr_Str i N_Paren
30. http psystems disco unimib it Stand 05 2004 PRO1 Pa00 23 2 Eco Grammar Systeme Eco Grammar Systeme werden 1994 in Eco grammar systems von P un Kelemenov Kelemen und Csuhaj Varju Cs02 eingefiihrt Die folgende Abbildung illustriert ein solches Eco Grammar System 31 2 Theoretische Grundlagen von L Systemen und deren Evolution Mg ER evolution Pr rules A parallel G rewriting Wn u E Ze description N ar Wn n u 5 Rn action rules E sequential N rewriting D V description WE R parallel O rewriting N luti M Pr evolution rules E N T Abbildung 2 17 Ein vollst ndiges Eco Grammar System CPS95 Die Idee die hinter den Eco Grammar Systems steckt ist die Modellierung eines kosys tems In einem Eco Grammar System gibt es zwei Rollen die eines Agenten Agents und die Rolle der Umgebung Environment Dabei darf es eine beliebige Menge von Agenten geben aber nur eine Umgebung Alle Agenten leben in einer gemeinsamen Umgebung Die Umgebung kann sich selbst unabh ngig von den Agenten weiterentwickeln die Agenten dagegen entwickeln sich abh ngig von der Umgebung Dadurch nehmen die Agenten die Umgebung wahr Die Umgebung selbst muss die Agenten nicht wahrnehmen sie kann aber durch die Agenten ver ndert werden Der Zustand eines jeden Agenten und der der Umge bung wird durch eine Zeichenkette repr sentiert Die Agenten und die Umgebung stellen je weils ein L Syste
31. i Canvas TextWidth ProBodyEdit Text tkey Wurde RETURN gedr ckt if key 13 and AddBtn Visible true then begin AddBtn Click dann f ge die Produktion hinzu ProHeadEdit SetFocus Gebe den Eingabefokus an den Editierfeld des Produktionskopf end else if key 13 then begin UpdateBtn Click dann aktualisiere die Produktion wenn diese zum bearbeiten angeklickt wurde ProHeadEdit SetFocus Gebe den Eingabefokus an den Editierfeld des Produktionskopf end Breite der Zeichenkette ist immer die Gr e an Wird ein Zeichen gel scht und die berechnete noch gr er als das Editierfeld dann passe else if key 8 and i gt 169 then begin ProBodyEdit Width i UpdateBtn Left ProBodyEdit Width 311 AddBtn Left UpdateBtn Left Add2Btn Left UpdateBtn Left 88 end Wird ein Zeichen hinzugef gt dann Passe die Breite des die Breite des Strings else if i 9 gt ProBodyEdit Width then begin ProBodyEdit Width i 8 UpdateBtn Left ProBodyEdit Width 311 Editierfeldes an AddBtn Left UpdateBtn Left Add2Btn Left UpdateBtn Left 88 end Ansonsten gebe die Standardwerte else begin ProBodyEdit Width 169 UpdateBtn Left 480 AddBtn Left 480 Add2Btn Left 568 end end Y ee CCP Methodenname CloseBtnClick Parameter Typ TObject Nam
32. return 1 fclose CFGFile strcpy info pathQPOV temp 138 H Quelltexte Falls per Kommandozeile nicht Files gesetzt wurde dann pr fe nach ob in der CFG Datei die Option gesetzt wurde if info state amp KEEP FILES 0 temp getValueFromList opts Files if temp NULL fprintf stderr ERROR There exists no value for Files in LPROCESS CFG n n return 1 else if stricmp temp on 0 info state KEEP_FILES else if stricmp temp off 0 else fprintf stderr ERROR Illegal Value for Files in LPROCESS CFG n n return 1 return 0 Dateiname misc h KKK KK A A A kk kk kk KC KC KK KK KK KK KK KK 22 22 22 I k k Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename misc h Modulversion 1 0 Modulbeschreibung Header Datei zum Modul misc c FERRI KA IR A RR IR A IR 2 2 2 2 2 22 2 2 22 2 22 2 2 222 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2072 ifndef misc_H define misc H extern char deleteFiles void extern char checkingEnvVariables char envp fendif Dateiname misc c BORK 28 2 5 22 22 22 22 22 A 22 A 22 A 22 22 22 22 22 22 22 A 22 A 22 22 22 22 22 22 22 22 22 22 22 2 2 2 2 2 2 20 Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename misc c Modulversio
33. return 0 BORK RK 2 2 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 200 Funktionsname checkingRulesForBrackets R ckgabewert Typ int Bedeutung Gibt die Anzahl der gefundenen Fehler zur ck Parameter Typ FILE Name LSFile Bedeutung Zeiger auf die zu durchsuchende Datei Funktionsbeschreibung Diese Funktion pr ft ob sich runde Klammern in nicht erlaubten Regelteilen befinden KCKCKCkCkCkCk 2 2 222 e A 2 2 22 2 2 E 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2072 int checkingRulesForBrackets FILE LSFile char line MAX LS LINE LENGTH Speicherplatz zum einlesen einer Zeile xy int i state length state speichert den letzten gefundenen Regelteil dabei steht 1 fiir linker Kontext 2 fiir rechter Kontext und 3 f r den Bedingungsteil errorRule 0 Z hler zur Angabe in welcher Regel ein Fehler ist bracket 0 Speichert die Anzahl der gefundenen Klammern 7 errorCounter 0 Zahlt die Anzahl der gefundenen Fehler Z Durchlaufe die Schleife bis zum Ende der Datei SI while feof LSFile fgets line MAX_LS_LINE_LENGTH LSFile length strlen line errorRulerr state 0 Durchlaufe die Regel zeichenweise for i 0 i lt length i Wurde eine Klammer gefunden Z if line i line i
34. val lt lt 8 val td void Fput bin u8 FILE f u8 r if fwrite amp r sizeof u8 1 User_error Can t continue void Fput_bin_s8 FILE f s8 r if fwrite amp r sizeof s8 1 User_error Can t continue void Fput_bin_r32 FILE f r32 r if fwrite amp r sizeof r32 1 User_error Can t continue void Fput bin s16 FILE f s16 r if fwrite amp r sizeof sl6 1 User_error Can t continue void Fput_bin_ul6 FILE f ul6 r if fwrite amp r sizeof ul6 1 User_error Can t continue void Fput_bin_s32 FILE f s32 r if fwrite amp r sizeof s32 1 User_error Can t continue void Fput_bin_u32 FILE f u32 r if fwrite amp r sizeof u32 1 User_error Can t continue fe File buffet progs sem Sinces there is a lot of fileio define f buffer size 30L 1024L static char f buffer 3 void E t ck writing outputfile EU dese writing outputfile E XL writing outputfile EJ uec writing outputfile ER UL writing outputfile f eT writing outputfile E f writing outputfile we use large buffers NULL NULL NULL 161 H Quelltexte Buffer IO FILE f s16 i Attach filebuffer i to open f setvbuf f f_buffer i _IOFBF f_buffer_size void Init_file_buf sl6 i Init filebuffer i if f buffer i NULL return f buffer i char malloc f buffer size if f buf
35. 0 when using changing amounts of randomness for animations we want the seed to be the same so we set it here else srand time NULL D Get_comline_opt P amp trope_set temp set amount of trope if trope_set sscanf temp Sf amp trope amount srand 0 same for trope animations Get_comline_opt X amp user_form x_name use a vol file as user shape Get_comline_opt i amp closed_form temp create closed connected cylinders Get_comline_opt d amp dxfl temp create a dxf file with inserts Get_comline_opt 3 amp dxf2 temp create a dxf with only polygons Get_comline_opt R amp dxf3 temp create a RAW triangle file Get_comline_opt V amp vrml temp create a WRL VRML v1 0 file Get_comline_opt B amp pov_form3 temp create multiple povray blob files 189 H Quelltexte for multi colord blobs Get_comline_opt O amp blb_ form temp create a blb blob file Get_comline_opt b amp pov_form2 temp create a povray blob file Get_comline_opt v amp pov_form temp create a povray file Get_comline_opt c amp inc_out temp create a povray inc file In these cases an user defined form is used In the other cases a simple block or connected cylinder shape will be used Si if pov_form pov_form2 pov_form3 blb_form user_form TRUE Read ls file and setup rules
36. 207 H Quelltexte else break CamY dAbs CenterX dAbs CenterZ y CamZ CenterZ CamX CenterX CamY CamY CamZ dAbs CenterX dAbs CenterY z The scene is 2D and one axis have the expansion near 0 and the expansion of another axis is egual case 2 if dAbs CenterY gt percOfAxisValues 1 0 maxXYZ if dAbs CenterZ gt percOfAxisValues 1 0 if CenterX else if CenterY else break if dAbs CenterX gt percOfAxisValues 1 0 x maxXYZ CenterX y amp amp maxXYZ lt CenterY CenterY z amp amp maxXYZ lt CenterZ maxXYZ CenterZ maxXYZ amp amp _ max maxX dAbs minX lt percOfAxisValues 1 0 x CamX maxXYZ x CamY CenterY CamZ CenterZ maxXYZ amp amp _ max maxY dAbs minY lt percOfAxisValues 1 0 y CamX CenterX CamY maxXYZ y CamZ CenterZ CamX CenterX CamY CenterY CamZ maxXYZ z The expansion on every axis is egual and scene is 2D default maxValue max max maxX maxY maxZ if maxX lt 1 else CamX maxValue x CamY CenterY CamZ CenterZ else if maxY lt 1 CamX CenterX CamY maxValue y CamZ CenterZ CamX CenterX CamY CenterY CamZ maxValue z break Creating INFO TXT printf Writing result into INFO TXT n volume_file if volume_file f
37. 22 22 22 A 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 A ck ck I I Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename globals h Modulversion 1 0 Modulbeschreibung In diesem Modul werden einige Pr prozessor Variablen und zwei Strukturen definiert die in allen Modulen ben tigt werden KCKCKCKCkCkCk 2 2 222 e A 2 2 22 2 2 22 2 22 2 2 A 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 ke ke ke ke ek f ifndef globals_H define globals_H Bitwerte f r die state Variable Ka define CONVERT 1 Entspricht dem Schalter C Konvertieren einer Datei define CONVERT_ONLY 2 Entspricht dem Schalter c Konvertieren einer Datei und Programm beenden er define KILL_POV 4 Entspricht dem Schalter E POV Ray am Ende beenden p define KILL POV ONLY 8 Entspricht dem Schalter e Nur POV Ray beenden und Programm verlassen S define ANTI ALIASING 16 Entspricht dem Schalter A Anti Aliasing zur Bilderzeugung nutzen A define TARGA FILE 32 Entspricht dem Schalter T Bild als Targa Datei speichern Eg define KEEP FILES 64 Entspricht dem Schalter F Dateien aus den Zwischenschritten nicht l schen define KILL POV AND CONV ONLY 10 Entspricht dem Schalter c und e Konvertieren einer Datei und POV Ray beenden K Bitwerte fur
38. CamZTrack Position CamZLabel Caption LightXTrack Position LightXLabel Caption LightYTrack Position LightYLabel Caption LightZTrack Position LightZLabel Caption end Methodenname Parameter Typ Name nfo AA not Info Bitmap tToStr Info Width ntToStr Info Height Info PathPOV Info PathQPOV initialisieren convertRealForTracker In FloatToStr CamXTrack Posi convertRealForTracker In FloatToStr CamYTrack Posi convertRealForTracker In FloatToStr CamZTrack Posi convertRealForTracker FloatToStr LightXTrack convertRealForTracker FloatToStr LightYTrack convertRealForTracker FloatToStr LightZTrack CamXTrackChange TObject Sender fo CamX tion 0 5 fo CamY tion 0 5 fo CamZ tion 0 5 Info LightX Position 0 5 Info LightY Position 0 5 Info LightZ Position 0 5 215 H Quelltexte Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm CamXTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamXTrack Position 0 then begin CamXLabel Caption 0 Info CamX 0 end Ansonsten berechne den neuen Wert else begin CamXLabel Caption FloatToStrF CamXTrack Position 0 5 ffFixed Info CamX
39. Cardinal var showpic TShowPicForm Zu erzeugende Instanz eines Formulars zum Anzeigen eines Bildes begin Ist die Anwendung nicht erfolgreich beendet worde und ist die Ausf hrung eine Bilderzeugung if ExitCode lt gt 0 and JvCreateProcessl Tag 1 then begin Gib eine Fehlermeldung aus und zeige dem Anwender die Konsolenausgabe MessageDlg Bild konnte nicht erzeugt werden weil ein Fehler vor lag 13 Die Ausgabe der Konsole wird eingeblendet mtError mbOk 0 ConsoleFom ShowModal ConsoleFom Release end Ist die Ausfuhrung eine Bilderzeugung und ist diese erfolgreich else if JvCreateProcessl Tag 1 then begin showpic TShowPicForm Create Application Erzeuge Instanz showpic Imagel Picture LoadFromFile PicName Lade das Bild showpic Height showpic Imagel Picture Height Anpassen der Gr be des Formulars 275 H Quelltexte showpic Width showpic Imagel Picture Width an die Gr e des Bildes showpic ShowModal Anzeige des Formulars modal end Ist die Anwendung nicht erfolgreich beendet worde und ist die Ausfuhrung eine Konvertierung else if ExitCode lt gt 0 and JvCreateProcessl Tag 2 then begin Gib eine Fehlermeldung aus und zeige dem Anwender die Konsolenausgabe MessageDlg Datei konnte nicht importiert werden 13 Die Ausgabe der Konsole wird eingeblendet mtError mbOk 0 ConsoleFom ShowModal ConsoleFom Release end
40. Ein TOL Schema ist ein Paar S 2 7 wo X das Alphabet von S eine endliche nicht leere Menge und die Menge an tables von S eine endliche nicht leere Menge ist Jedes Element P von auch table genannt ist eine endliche nicht leere Teilmen ge von Xx2X sodass va Ga a u e P 2 6 Definition 2 13 f r die direkte Ableitung HR75 S nF sei ein TOL Schema x a a sei mit m 0 und a X f rj 1 m und y X Dann sagt man dass x direkt y in S ableitet und deutet es mit x gt y an aber auch nur genau dann wenn AP 3 OAE AB js la De Om J und y OO 2 7 Definition 2 14 f r die endliche Sprache HR75 Fir ein TOL Schema S e P f r ein Wort x in X und f r eine nicht negative ganze Zahl n wird die endliche Sprache L S x durch Induktion ber n definiert IS a 2 8 L a S x v es existiert ein z in Ly S x und ein P in P so das z gt yj 2 9 Definition 2 15 fiir ein PTOL Schema HR75 Ein TOL Schema S P hei t propagierend wenn es keine Produktion in jedem P von der Form a amp gibt eine Produktion dieser Form nennt man l schende Produktion Andernfalls nennt man S nicht propagierend Definition 2 16 f r ein DTOL Schema HR75 Ein TOL Schema S 2 7 ist deterministisch wenn f r alle P in und f r alle a in X exakt ein a in X der Form a gt a existiert Andernfalls nennt sich S nicht determi P nistisch 16 2 Theoretische
41. Exit end Konnte die alte Datei ge ffnet werden if can_open then begin abort false Durchlauf die alte Datei bis zum ersten Ausdruck des L Systems und bernehme alle define Anweisungen und Kommentare in die neue Datei while not eof old_file abort begin ReadLn old file s trim s if Pos s WriteLn new_file else if length s continue else abort end end or s 1 S 0 then or Pos s true false do 1 then Schreibe in die neue Datei die Daten f r das L System 247 H Quelltexte WriteLn new_file RecursEdit Text WriteLn new_file BasisAngleEdit Text WriteLn new_file BasisThickEdit Text WriteLn new_file AxiomEdit Text WriteLn new_file for i 0 to ProductionList Items Count 1 do WriteLn new_file ProductionList Items i CloseFile new_file Schlie e die neue Datei Konnte die alte Datei ge ffnet werden dann schlie e und l sche diese und benenne die neue um if can_open then begin CloseFile old_file DeleteFile filename RenameFile temp_VisualL 1s filename end Benenne die neue Datei nur um in die Zieldatei else RenameFile temp VisualL ls filename Caption filename Aktualisiere die berschrift des Kindfensters SaveBtn Enabled false Deaktiviere den Speicher Button end NUDO NU ee ee VET ae E ae a ey a nennt naar Methodenname SaveAsBtnClick Parameter Typ TObject Na
42. HR75 F RG c F IL Lemma 10 1 HR75 F 0L c F CF Theorem 10 4 HR75 F TOL c F IL Theorem 10 9 HR75 F TOL c F EOL Theorem 10 8 HR75 F IL c F CS Theorem 10 7 HR75 Entscheidungsautomat Die wichtigsten L Systeme fiir die Computergrafik werden zu einem Automaten zusammen gef gt Der Automat erzeugt eine Zeichenkette die ein L System darstellt das die Eigen schaften aufweist die zur Modellierung ben tigt werden Dazu wird in jedem Zustand eine Frage gestellt die mit J Ja oder N Nein beantwortet werden muss Zu jeder Frage gibt es ein Beispiel das die Frage verst ndlicher machen soll 2 2 6 Interpretation des Wortes 1986 stellt Prusinkiewicz Pr86 eine M glichkeit vor wie man das Wort eines L Systems graphisch interpretieren k nnte Dabei zeigt er wie man die Turtle Interpretation f r W rter der L Systeme nutzen k nnte Szilard und Quinton zeigen schon 1979 wie die Turtle Interpretation auf DOL Systemen genutzt werden k nnte aber erst Prusinkiewicz verallge meinerte dies Ja97 Hinter dieser Entwicklung steht die Idee das Verhalten einer Schildkr te bei der Bewegung zu imitieren sie l uft so lange geradeaus ohne die Richtung zu ndern bis sie gest rt wird oder durch ein anderes Bed rfnis dazu veranlasst wird Prusinkiewicz definiert die Turtle Interpretation wie folgt Definition 2 25 f r die Turtle Kommandos im 2D Raum Pr86 Der Zustand einer Schildkr te ist ein Trip
43. ang ang stack scount thick thick stack scount tr tr if closed_form Vector_copy_r32 last stack scount last stack scount last_col last_col for j 1 3 lt 8 j Vector_copy_r32 last_v j stack scount last v j1 Scount tt break scount Vector copy r32 stack scount pos pos Vector copy r32 stack scount fow fow Vector copy r32 stack scount lef lef Vector copy r32 stack scount upp upp col stack scount col dis stack scount dis dis2 stack scount dis2 ang stack scount ang thick stack scount thick tr stack scount tr if closed_form Vector_copy_r32 stack scount last last_col for last stack scount last_col Jj 1 3 lt 8 jr Vector copy r32 stack scount last v jl last v j31 break case if poly on pstack pscount count pstack pscount ver vcount vector malloc vcount 12L if pstack pscount ver NULL User_error Ran out of memory 186 H Quelltexte Vector_copy_max_r32 vcount ver pscounttt EE pscount gt max stack User error Ran out of stack poly_on TRUE vcount s16 1 pcount s16 1 Vector copy r32 pos ver vcount break case f save dis dis if next dis Get value amp i if last recur Vector_plus_fac pos dis fraction fow dis pos if poly_on Vector_copy_r32 pos ver
44. argc i strcpy info filename Andernfalls liegen zwei Dateinamen else strcpy info filename strcpy info conv_filename if info conv_filename 0 filename return 1 strcpy info conv_filename checkFileExtension info filename strcpy info filename dann wird es in info filename gespeichert argv i vor die entsprechend gespeichert werden argv i argv rri print_Comline_Error To many filenames or options after filename checkFileExtension info conv_filename temp temp temp temp SE Prufe die Plausibilit t der Eingabe if checkingState return 1 435 return 1 Dateiname cfg file h KKK RK kk kk E 22 22 22 22 22 22 22 22 22 22 22 22 22 ck ck ck kk kk Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname process Version 1 0 Modulename cfg file h Modulversion 10 Modulbeschreibung Header Datei zum Modul cfg_file c KCKCKCkCkCkCk IK A 2 22 2 2 22 2 2 22 2 22 2 2 202 2 2 22 2 22 2 2 5 5 ifndef cfg_file_H define cfg_file_H extern char checkingCFGFile void endif 132 H Quelltexte Dateiname cfg file c VASE 25 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 2220 Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname process Version 1 0 Modulename cfg_file c M
45. array 0 255 of char Speichert den Pfad von POV Ray begin SearchTreeForFile C pvengine exe temp Suche den kompletten Baum ab PathPOVEdit Text ExtractFileDir temp Extrahiere den keinen Pfad end RR APA ds Bad dan says un DADA dan PRADA dan dis gun dan din an Methodenname RecursEditKeyPress Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var char Name Key Bedeutung Zeiger auf das Zeichen das eingegeben wurde Methodenbeschreibung 218 H Quelltexte Bei jeder Zeicheneingabe fur Editierfelder die nur Zahlen akzeptieren wird diese Methode aufgerufen procedure TCFGForm WidthEditKeyPress Sender TObject var Key Char begin Lasse nur Zahlen und den Rucklauf als Eingabe zu if Key in 0 9 or Key 8 then Key Key else Key 0 end aH HY E HC FF X naked HC CH HC CH teeta ete Sete ete eee eee eee Methodenname SearchQPOVBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Methode sucht nach den Pfad von QuietPOV wenn auf den entsprechenden Button geklickt wurde procedure TCFGForm SearchQPOVBtnClick Sender TObject var temp array 0 255 of char Speichert den Pfad von POV Ray begin SearchTreeForFile C QuietPOV exe temp Suche den kompletten Baum ab PathOPOVEdit Text ExtractFileDir temp Extrahiere den kein
46. f r das Ende wie auch in dem urspr nglichen L System 18 Theoretische Grundlagen von L Systemen und deren Evolution Definition 2 21 f r ein BOL Schema Ke86 Ein BOL Schema S X U 1 P ist ein OL Schema wenn 1 die Zeichen nicht in X enthalten sind 2 eine Produktion der Form gt und existiert 3 und alle W rter die ber die Produktionen erzeugt werden wohlgeformte Klammerausdr cke enthalten falls Klammern enthalten sind Definition 2 22 f r ein BOL System Ke66 Ein BOL System ist ein Tripel G X U 1 P o wo S X U IL i P das BOL Schema ist auch das Schema von G genannt und o das Axiom von G ist ein Wort ber X Beispiel 2 9 f r ein BOL System Folgendes BOL System sei definiert G gt ae jui L1 P a gt a aa a E 2 o a Die ersten drei Ableitungsschritte illustriert die Abbildung 2 7 a gt aa a y 1 Ableitungsschritt a gt a a a a gt a gt aa 2 Ableitungsschritt a gt e a a a gt aa gt a a A 3 Ableitungsschritt a a gt aa Abbildung 2 7 Ableitungsbaum fiir das BOL System Auswirkungen Mit der Einf hrung von Verzweigungen ist es m glich nicht nur eindimensionale fadenf r mige Organismen sondern auch zweidimensionale fadenf rmige Organismen zu modellieren Man stelle sich vor dass die Symbole Zellen darstellen und dabei Str nge bilden Illustriert wird dies in Abbildung 2 7 Die Auswirku
47. hnlich ist die im Programm verwendete Vektorschreibweise f r die Punkte zur Erzeugung von Primitiven So wird beispielsweise f r die Anfangs und Endpunkt eines Zylinders an erster Stelle die x Koordinate angegeben an zweiter die z Koordinate und an dritter Stelle die y Koordinate Dies wird selbst bei POV Beschreibungen f r die 3D Primitiven fortgesetzt obwohl diese normalerweise die Reihenfolge x y z ben tigen 76 4 Entwurf und Implementierung der Fassade Normalerweise m sste im Anschluss nach dem Lparser das Programm LViewer ausgef hrt werden Denn durch das Programm LViewer wird eine Datei namens INFO TXT erstellt in der die Kameraeinstellungen gespeichert werden Diese Datei ben tigt wiederum LV2POVID f r die POV Ray Datei Der LViewer hat aber einige Nachteile So ben tigt er den DOS4GW Treiber und die Erstellung der INFO TXT Datei geschieht nicht automatisch son dern erst durch das Dr cken der Taste F2 Au erdem sind die geschriebenen Daten in der INFO TXT nicht korrekt denn LViewer f gt immer wieder die gleichen Daten ein selbst bei vollkommen unterschiedlichen Szenen Daher wurde die Lparser Version 5 insoweit erwei tert dass bei Erstellung einer POV Ray Datei Lparser selbst die INFO TXT Datei erzeugt und eine sinnvolle Kameraposition berechnet Auch das dritte Programm im Softwarepaket von Lparser funktioniert nicht wie erwartet Aufgabe des Programms LV2POVID ist es die nicht POV Ray gerechte Datei in eine POV
48. lt das Objekt das diese Methode aufruft Methodenbeschreibung Die Methode wird ausgef hrt wenn auf den Button 3D Ansicht geklickt wird procedure TMDIChildMain Direct3DBtnClick Sender TObject begin Erzeuge ein Instanz des Direct3D Fensters wenn noch keine existiert 249 H Quelltexte if D3DActive false then begin D3DForm TDirect3DForm Create Application D3DActive true end end P A FF Yd Cd FD HP Y Td Y M n FU Yd DN Y Y Y FD FY yu DF Y e Methodenname CamXTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TMDIChildMain CamXTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamXTrack Position 0 then begin CamXLabel Caption 0 Info CamX 0 end Ansonsten berechne den neuen Wert else begin CamXLabel Caption FloatToStrF CamXTrack Position 0 5 ffFixed Info CamX CamXTrack Position 0 5 end end Ce I NN Y Y Y Y E EEE EE EE E ee Methodenname CamYTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung
49. r eine Option kein Wert vorliegen dann wird die Fassade mit einer Fehlermeldung beendet Ebenfalls wird das Pro gramm mit einer Fehlermeldung beendet wenn ein nicht erwarteter Wert eingelesen wurde wie zum Beispiel ein aaa statt ein on bei der Option Files Die Fassade terminiert mit einer Fehlermeldung wenn sich POV Ray oder QuietPOV nicht in dem Verzeichnis befin den das in der CFG Datei hinterlegt wurde Die Kommentare in der CFG Datei m ssen sich in einer separaten Zeile befinden ansonsten wird dem Wert der Option der Kommentar zur Weiterverarbeitung hinzugef gt Sollte die maximale L nge f r eine Zeile in der CFG Datei berschritten werden dann wird das Programm mit einer Fehlermeldung beendet Da sich dieser berlauf erst in der n chsten Zeile bemerkbar macht wird in der Fehlermeldung die Folgezeile als Fehlerquelle angegeben Der Standardwert f r die L nge einer Zeile betr gt 150 Zeichen Dies ist in der Datei glo bals h definiert Sollten l ngere Zeilen ben tigt werden muss der Wert ver ndert und die Fas sade neu kompiliert werden LS Datei Fehlen die Parameter f r Rekursionstiefe Basiswinkel Basisst rke und Startaxiom dann wird das Programm mit einer entsprechenden Fehlermeldung beendet Sollte eine Datei eine Zeile enthalten die mehr als 1000 Zeichen enth lt st rzt Lparser ab Die Fassade selbst ter miniert mit der Fehlermeldung dass keine output inc f r LV2POVID vorliegt und bee
50. 0 Sammelsurium von verschiedensten Komponenten Open Source http prdownloads sourceforge net jvcl JCL 2BJVCL210FullInstall zip use_ mirror switch Stand 06 2004 Wichtiges Fix f r die Version 2 10 http prdownloads sourceforge net jvcl JVCL210FIX030313 zip use mirror s witch Stand 06 2004 LSys32 fiir Windows grafische Oberfl che fiir den Lparser Version 4 0 Free ware http chris lichti org Lab LSys32 Isys zip Stand 06 2004 LinSys3d Version 1 2 f r Windows erzeugt 3D Szenen aus L Systemen Freeware http web tiscali it esuli LinSys3d LS3dSetup exe Stand 06 2004 L Systems Application Java Applet erzeugt 2D Grafiken aus L Systemen http www cpsc ucalgary ca Research bmv java LSystems LSys html Stand 06 2004 Lparser Version 4 0 f r MS DOS l uft unter Windows in einer DOS Box erzeugt 3D Szenen aus L Systemen Freeware http home wanadoo nl laurens lapre lparser4 zip Stand 06 2004 119 E Softwarequellen LP5 LS4 LSB LSt LWo Plan Pov Opov RTE Lparser Version 5 1 fiir Windows erzeugt 3D Szenen aus L Systemen Open Source http vortex bd psu edu kopp Lparser zip Stand 06 2004 L System 4 0 1 f r Windows erzeugt 3D Szenen aus L Systemen Freeware http www geocities com tperz l4setup zip Stand 06 2004 LS SketchBook Version 0 1 fiir Windows erzeugt 3D Szenen aus L Systemen Freeware http coco ccu uniovi es malv
51. 0 0 CamY 0 0 CamZ 0 0 CenterX maxX minX 2 CenterY maxY minY 2 CenterZ maxZ minZ 2 maxXYZ 0 0 maxValue 0 0 printf nCalculating the best Cameraposition n if minX gt 1 dAbs minX lt percOfAxisValues 1 0 x Center0 if minY gt 1 dAbs minY lt percOfAxisValues 1 0 y Center0 if maxZ lt 1 maxZ lt percOfAxisValues 1 z Center0 switch Center0 If the scene is a real 3D Scene case O CamX minX x CamY minY y CamZ maxZ z break The scene is 2D and one axis have the expansion near 0 case 1 if dAbs CenterX lt 1 dAbs CenterX lt percOfAxisValues 1 0 x amp amp dAbs CenterY lt 1 dAbs CenterY lt percOfAxisValues 1 0 y amp amp dAbs CenterZ lt 1 dAbs CenterZ lt percOfAxisValues 1 0 z maxValue __max __max maxX maxY maxZ if maxX lt 1 CamX maxValue x CamY CenterY CamZ CenterZ else if maxY lt 1 CamX CenterX CamY maxValue y CamZ CenterZ else CamX CenterX CamY CenterY CamZ maxValue z break if dAbs CenterX lt 1 dAbs CenterX lt percOfAxisValues 1 0 x CamX dAbs CenterY dAbs CenterZ x CamY CenterY CamZ CenterZ else if dAbs CenterY lt 1 dAbs CenterY lt percOfAxisValues 1 0 y CamX CenterX
52. 142 Bel astingssiest serien ed 101 6 1 43 F nktionstest 2 ee elek 101 6 2 Test der graphischen Oberfl che ersssosssssnssssosssnonsssnsnnssnnnnsnnnnnsnnnnnennnnnennonnene 103 6 2 1 Ers 103 6 2 2 Testdutchf hrung i e o estos dydd sp lan 103 6 2 3 KE EE 103 6 2 3 1 SPUR TONSILS EEN 103 6 232 Usability Studie ce b mes ts ral sat da 104 7 ZUSAMMENFASSUNG UND AUSBLICK ZU DIESER ARBEIT 105 7 1 Kart 105 2 AUSDICK EE 106 A ABBILDUNGSVERZEICHNIS sccccscssssscscessssceccscseccsessersessoscessescoecssssersessesseses 107 B TABELLENVERZEICHNIS orissscccccssesscocsssscestsnedecneccsscapsesadsonctasscnadisedscsenssccsssevaasansies 109 C LITERATURVERZEICHNIS susanne 110 D ZUSAMMENFASSUNG DER WICHTIGSTEN LITERATUROUELLEN 118 E SOFFWAREOUELLEN auseinander 119 F _ BEDIENUNGSANLEITUNG FUR VISUAL L ue LL LL onte 121 G CD ROM LNHAU Pia FNAN MORYS YDAW CUDD FFAN CYFAN e ERU FAEN UYN OFN DRE 123 H OUEELFENXDE GA FODA A ddw Ud 124 iv 1 Einleitung zu dieser Diplomarbeit 1 Einleitung zu dieser Diplomarbeit 1 1 Motivation zur Modellierung von Pflanzen mit L Systemen Die Vielfalt von Pflanzen und deren komplexe variantenreiche Strukturen scheinen nur schwer beschreibbar zu sein Wenn man sich zum Beispiel die Anordnung der Samen auch Phyllotaxis genannt einer Sonnenblume betrachtet ist auf den ersten Blick zu erkennen dass diese kreisf rmig angeordnet sind und es dadurch e
53. 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 2 2 2 2072 void startPOV void char buffer MAX_COMLINE int len strlen info pathPOV if len 1 sprintf buffer pvengine exe else if info pathPOV len 1 sprintf buffer spvengine exe info pathPOV 150 H Quelltexte else sprintf buffer s pvengine exe info pathPOV if FindWindow POV_APP 0 puts Starting POV Ray WinExec buffer SW_HIDE KKK 55 25 25 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 20 Funktionsname endPOV Funktionsbeschreibung Es wird gepr ft ob eine vorhandenen Instanz von POV Ray l uft und beendet diese ent sprechend KCKCKCKCkCkCk IR ARR 2 2 22 2 2 E 2 2 M V 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 void endPOV void HWND hPrg if hPrg FindWindow POV_APP 0 NULL puts Closing POV Ray instance SendMessage hPrg WM CLOSE 0 0 BORK RK 25 25 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 A 22 22 22 20 Funktionsname getFilenameWithoutExt Parameter Typ cham Name filename Bedeutung String des Dateinamens Typ char Name modfilename Bedeutung Zeiger auf ein String in dem der neue Dateiname gespeichert wird Funktionsbeschreibung Liefert einen String vom Dateinamen nur ohne die Endung KCKCKCKCkCkCk IR A RR IR A 2 2 22 2 2 2 2 2 202 2 2 22 2 222 2 22 2 2 22 2 22 2 222 2 22 2 2 22 2 2 22 2 222 2
54. 2 60 0 00 POV Ray ohne Anti Aliasing 77 00 0 00 0 00 POV Ray mit Anti Aliasing 84 80 0 00 0 00 Lprocess 87 00 0 20 0 00 Tabelle 6 8 Ergebnis der Belastungen der einzelnen Komponenten Wahrend der Batch Abarbeitung ist kein Programm aus Belastungsgriinden abgestiirzt hat nicht mehr reagiert oder ist mit zunehmenden Durchl ufen langsamer geworden Wie der Ta belle zu entnehmen ist ist der Prozessor der gr te Belastungsfaktor Der Speicher wird le diglich am Anfang kurzfristig st rker beansprucht 6 1 4 3 Funktionstest Kommandozeile Das Programm wird nicht ausgef hrt wenn eine ung ltige Kombination von Optionen vor liegt wie zum Beispiel eE 101 6 Tests und Auswertung der entwickelten Software Denn dies wiirde bedeuten dass POV Ray sofort und nach Beendigung der Verarbeitung be endet werden soll Auch wenn Optionen doppelt erscheinen und eine ung ltige Kombination darstellen wird das Programm nicht ausgef hrt Wird jedoch die Option f r die Bildh he zweimal angegeben dann wird der zweite Wert verwendet Ist beim zweiten Erscheinen der Option kein Wert angegeben dann wird das Programm mit einer Fehlermeldung beendet Das Programm terminiert ebenfalls ordentlich mit einer Fehlermeldung wenn nach der Option f r die Bildh he kein Wert folgt nicht definierte Zeichen verwendet werden oder Zahlen an nicht erlaubter Stelle erscheinen Werden zwei Dateinamen angegeben aber die Option zur Konvertierung nicht ge
55. 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 k k k k S void getFilenameWithoutExt char filename char modfilename char buffer MAX FILENAME LENGTH int i len strlen filename 3 for i 0 i lt len i buffer i filename i buffer i 0 sprintf modfilename s buffer BORK RK RR A A A Ck KC KC KC KC KK KK KC KK 22 22 22 22 22 22 22 A 22 22 22 A 22 22 22 22 22 22 22 kkk kkk kkk kkk kkk kkk k Funktionsname createINI Riickgabewert Typ int Bedeutung Gibt einen Fehlerstatus zurtick 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Erzeugt eine INI Datei f r POV Ray mit entsprechend gesetzten Optionen Jd IR A IR AR IR IR 2 2 2 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 char createINI void 151 H Quelltexte FILE INIFile NULL char imageFilename MAX FILENAME LENGTH if INIFile fopen pov ini wt fprintf stderr ERROR POV INI cannot create for QuietPOV n return 1 fprintf INIFile Width d n info width fprintf INIFile Height d n info height fprintf INIFile Display off n if info state amp TARGA FILE TARGA FILE fprintf INIFile Output File Type T n else fprintf INIFile Output File Type S Mn if info state amp ANTI ALIASING ANTI ALIASING fprintf INIFile Antialias on Mn else fprintf INIFile Antialias off n
56. 99 Tabelle 6 4 Zeit f r das Transformieren von 95 Dateien 100 Tabelle 6 5 Zeit f r das Erzeugen von 95 Grafiken ohne Anti Aliasing ss 100 Tabelle 6 6 Zeit f r das Erzeugen von 95 Grafiken mit Anti Aliasing sss 100 Tabelle 6 7 Zeit f r die Verarbeitung von 95 Dateien mit Lprocess sss 100 Tabelle 6 8 Ergebnis der Belastungen der einzelnen Komponenten 101 Tabelle 6 9 Ergebnis der Usability Studie so e ep etta ee an 104 109 C Literaturverzeichnis C Literaturverzeichnis Ab86 Ba98 Ba99 Ba00 Ban03 Be01 BNKF98 Bo04 BPFGK03 B 03 CJ92 CK86 Lois A Abbott nvestigations into Drosophila Wing Development Result from a Lindenmayer Model The Book of L Hrsg Grzegorz Rozenberg und Ar to Salomaa S 1 11 Springer Verlag 1986 Helmut Balzert Lehrbuch der Software Technik Software Management Software Oualit tssicherung Unternehmensmodellierung Spektrum Akademi scher Verlag 1998 Heide Balzert Lehrbuch der Objektmodellierung Analyse und Entwurf Spektrum Akademischer Verlag 1999 Helmut Balzert Lehrbuch der Software Technik Software Entwicklung Spektrum Akademischer Verlag 2000 Wolfgang Banzhaf Einf hrung in das Genetische Programmieren Vorle sungsskript Universit t Dortmung Fachbereich Informatik 2003 http Is11 www cs uni dortmund de people banzhaf GP GP Vorlesung pdf Stand 06 200
57. Anwender kann weiterarbeiten w hrend er auf das Bild wartet 5 4 3 Einstellungs Dialog TCFGForm Um den Inhalt der CFG Datei ohne das ffnen eines Kindfensters einzeln bearbeiten zu k n nen wird ein Dialog Formular namens TCFGForm angelegt Dieses Dialog Formular ist in Abbildung 5 3 zu sehen Seine Einstellungsm glichkeiten sind fast identisch mit denen des Kindfensters Das Formu lar enth lt zwei Reiter einen f r allgemeine Einstellungen und einen anderen f r die Kamera und das Licht Im Unterschied zum Kindfenster wurden aber zwei Editierfelder hinzugef gt um den Pfad f r POV Ray und QuietPOV anzugeben Alternativ kann das Programm auch nach dem Pfad von POV Ray und QuietPOV suchen Das Dialog Formular wird modal angezeigt das hei t solange das Dialog offen ist kann nicht mit der Applikation weiter gearbeitet werden 95 5__ Die graphische Oberfl che Einstellungen zur CFG Datei Allgemeine Einstellugen Kamera und Licht Einstellungen Iv Anti Aliasing Targa Datei Breite der Grafik 640 Hohe der Grafik 480 Pfad von POV Ray cAprogrammeNpov Suchen a a Suchen Warnung Das Suchen nach den Programmen Pfad von QuietPOV cAprogrammepov Suchen kann etwas Zeit beanspruchen X Abbrechen Abbildung 5 3 Das Dialog Fenster zum Editieren der CFG Datei 5 4 4 Die 3D Ansicht TDirect3DForm Die 3D Ansicht zur Visualisierung der relativen Position von Kamera und Lichtquelle wurde mit Direc
58. CLT ul gd ted iL NWR nennen Shane 70 4 5 Vereinfachungen und die entsprechende Moduliibersicht 72 4 6 PAYG EN 75 4 7 Persistence of Vision Ray ciii YY naa UU DON eege EEN eege 77 4 8 Schnittstelle der Fassade ee iu 2a ee 80 LP MEME Dru LL m M 82 4 10 Implementierung der Fassade crece eee eee ee ee eese eren seen seta setas non nno 86 5 DIE GRAPHISCHE OBERFL CHE ua 06 2 portet eiert tere 91 5 1 Einf hrung zur graphischen Oberfl che eere eere ee eren entree setenta 91 5 2 Die Entwicklungsumgebung f r die graphische Oberfl che 91 5 3 Externe Bibliotheken und Komponenten 4 ceres eee e esee eren ee eren seen set na sno 91 5 4 Entwurf der graphischen Oberfl che eese eere eee eee e eese e eene tense n asco 92 5 4 1 Das Hauptformular TMilMam ener 92 5 4 2 Das Kindfenster TMDIChildMain eene 94 5 4 3 Einstellungs Dialog CPG Oris aa 95 5 4 4 Die 3D Ansicht TDitect3DEorm iet NEE tede Y WOODY ARW ds 96 iii Inhaltsverzeichnis 6 TESTS UND AUSWERTUNG DER ENTWICKELTEN SOFTWARE 98 6 1 Fest d r Fassade een 98 6 1 1 TERMINE DIN a ee Neil 98 6 1 2 GST i spp Uds nd ces ota EE vaste E 98 6 1 3 Ree te EEN 98 6 1 4 PUTS WV CYFOD cr is cadet asa eie e YW GAN as ROT me Seow WE EE 99 OAI Performancetsst esse Reue 99 6
59. DEON eee NCF YF YE var CFGForm TCFGForm Die Instanz von TCFGForm ist ffentlich fur alle anderen Units erreichbar Samia ie ee ieee ee oie ee ee te oe ee ie ot ee oe eo ee ee EE IMPLEMENTATIONSTEIL DER UNIT pH HF FF FF O FI HY Y i DF Y Ee FF ee ee implementation wt Se un nn Bu nn nn u ee Compiler Schalter YCHEN R dfm uses MDIMainSource imagehlp Direct3DSource var CamX real48 Enth lt den Wert f r die x Achse f r die Kamera CamY real48 Enth lt den Wert f r die x Achse f r die Kamera CamZ real48 Enth lt den Wert f r die x Achse f r die Kamera Methodenname convertRealForTracker R ckgabewert Typ integer Bedeutung Gibt eine Ganzzahl f r die Tracker Komponente zur ck Parameter Typ real48 Name value Bedeutung Flie kommazahl aus der CFG Datei Methodenbeschreibung Rechnet eine Flie kommazahl aus der CFG Datei um in eine ganze Zahl f r die Tracker Komponente Dabei ist die Aufl sung 0 5 und geht von 10 bis 10 function TCFGForm convertRealForTracker value real48 integer begin Wenn die Zahl gr er 10 ist dann weise das Maximum zu und beende if value gt 10 then begin result 20 Exit 213 H Quelltexte end Wenn die Zahl kleiner 10 ist dann weise das Minimum zu und beende else if value lt 10 then begin result 20 E
60. Der Modeller selbst verh lt sich wie die Schildkr te im dreidimensionalen Raum und erzeugt ein 3D Modell das sich aus den Eingabedaten herleitet Im Anschluss wird das allgemeine 3D Modell in ein spezielles 3D Modell f r ein bestimmtes Ray Tracing Programm berf hrt Diese Arbeit bernimmt ein Adapter Dadurch ist es m glich ein beliebiges Ray Tracing Programm zu nutzen Ausge tauscht werden muss lediglich der Adapter Sollte aber das allgemeine 3D Modell schon von einem Ray Tracing Programm verstanden werden ist der Schritt ber den Adapter nicht n tig Im letzten Verarbeitungsschritt zum Bild wird dem Ray Tracing Programm das 3D Modell bergeben aus dem das Bild erzeugt werden soll Diesen Vorgang nennt man Rende ring deshalb werden Ray Tracing Programm auch kurz Renderer genannt Gegebenenfalls wird vom Renderer nicht nur ein Bild erzeugt sondern mehrere Bilder des gleichen Objektes nur aus verschiedenen Kameraeinstellungen Im ersten Schritt der Evolution bekommt das Programm zur Fitnessbestimmung die erzeugten Bilder aus der Grammatik Die Fitnessbestimmung h ngt gr tenteils von der Eingabe des Anwendungsteils ab In Abh ngigkeit davon was von der Anwendungsseite zur Fitnessbe stimmung bergeben wird erzeugt die Fitnessbestimmung eine Ausgabe Diese Ausgabe kann Verschiedenes enthalten dies wird bei den Anwendungsm glichkeiten n her erl utert Gleiches gilt auch f r die Spezifizierung der Eingabe Nachdem die Fitnes
61. E KC KC KC KK KK kk KK KC KK KK KK KK KK I k k Funktionsname checkingLSFile R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Pr ft grob die LS Datei ob alle wichtigen Werte angegeben wurden Rekursionstiefe Axi om JERR ARR kk Ck Ck Ck Ck kk Ck Ck 2 2 22 2 22 2 2 M 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2072 char checkingLSFile void FILE LSFile NULL Zeiger auf die LS Datei char line MAX_LS_LINE_LENGTH Speicherung einer Zeile aus der LS Datei finishChecking 0 Enth lt den Status der Pr fung int length i if LSFile fopen info filename rt fprintf stderr ERROR The file s doesn t exists n info filename return 1 Die Schleife pr ft ob f r folgende Parameter entsprechene Werte vorliegene Rekursionstiefe Winkel Anfangsdicke und Axiom while feof LSFile finishChecking lt 4 fgets line MAX_LS_LINE_LENGTH LSFile Uberspringe Kommentarzeilen if line 0 amp amp line 1 line 0 n line 0 145 Ay EV WI H Quelltexte continue Pr fe ob die ersten drei Werte Zahlen und keine Zeichen sind else if finishChecking lt 3 length strlen line for i 0 i lt length i if line i It Ging pi se NEN ID Iineri ee Vn continue el
62. Eingabe zu if Key in 0 9 or Key 8 then Key Key else Key 0 end ee ee Y ss PEES EE nb noe ee EAE MENTEM nn ee ec oe eS RC REO ES Methodenname CheckBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung F hrt die Pr fung der gesamten Produktionen aus wenn auf den Button Pr fen geklickt wird procedure TMDIChildMain CheckBtnClick Sender TObject begin SystemCheck F hre die Pr fung aus end FEB a rs EE A Ai ie SCR ZEIGE CR AU a ZEIGE A AL E Y EINE SR BEINE ER BEINE A BEINE BA BEINE SR EINE EA BEINE ER BEI EE EE DEE Methodenname SaveBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Speichert den Inhalt des Kindfensters in die LS Datei ab procedure TMDIChildMain SaveBtnClick Sender TObject 246 H Quelltexte var filename string Enth lt den Dateinamen der LS Datei s string Zwischenspeicher old file TextFile File Handle auf die LS Datei new file TextFile File Handle auf die LS Datei mit den neuen Inhalt can open boolean Speichert ob old file ge ffnet werden konnte abort boolean Gibt an ob das Schreiben in die Datei abgebrochen werden soll i integer Laufvariable begin Pr fe ob der Inhalt ver ndert wurde if Caption length Caption lt gt then Exit F hre ein Test des L Systems
63. Extrahiert aus einem String von der Position index ab eine Zahl aus dem String sofern eine Zahl vorliegt Das Ergebnis wird in result abgespeichert Zur ck geliefert wird dieAnzahl der verarbeiteten Zeichen KCKCKCkCkCkCk IR A 2 e A E 2 22 2 2 22 2 22 2 2 IR IR 2 2 212 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2072 int extractValueFromString char string int index int result char temp MAX VALUE WIDTH HEIGHT c 0 while isdigit string index temp c string indext if c 0 print_Comline_Error No Value found return 0 else temp c NO result atoi temp return c BORK RR Ck kk kk kk kk kk kk kk KC KC KK KK 22 22 22 22 A 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2220 Funktionsname checkFileExtension Parameter Typ char Name filename Bedeutung String des Dateinamens Typ char Name modfilename Bedeutung Zeiger auf ein String in dem der neue Dateiname gespeichert wird Funktionsbeschreibung Diese Funktion berpr ft ob der angegebene Dateiname die Endung ls enth lt Liegt der Fall nicht vor wird die Endung an den Dateiname rangehangen Jd 5 I void checkFileExtension char filename char modfilename int length strlen filename if filename length 3 l toupper filename length 2 L toupper filename length 1 S sprintf modfilename s ls
64. Funktionsbeschreibung Extrahiert aus einer Zeile die Informationen f r eine Vektor KCKCKCkCkCkCk 2 2 222 2 2 2 2 22 kk Ck Kk Ck kk kk 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 k k k k k k k S void extractVectorFromLine char string double vector char puffer 25 VectorPosition 0 i j 0 startRecording 0 int len strlen string for i 0 i lt len i if string i startRecording 1 else if string i amp amp startRecording 1 puffer j 1 0 vector VectorPosition t atof puffer j 0 else if string i amp amp startRecording 1 puffer j 1 0 vector VectorPosition atof puffer break else if startRecording 1 puffer j string i KKK RK RR kk kk kk kk kk kk KC KC KK KK KK KC KK KK KK KK KK KC kkk k Funktionsname CorrectingPOVFile R ckgabewert Typ char 148 H Quelltexte Bedeutung Gibt einen Fehlerstatus zurtick 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Die von LV2POVID erzeugt POV Datei enth lt fehlerhafte Daten in bezug auf Kamerapositi on und Kameraausrichtung sowie der Lichtguelleposition Daher wird aus der INFO TXT die Daten herausgelesen und eine neue POV Datei erzeugt BE E A A 2 2 22 2 2 2 2 2 22 2 2 k 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 d d 2 22 2 22 2 2 ke 2 2 22 2 2 22 2 22 2 2 22 2 5 char CorrectingPOVFil
65. Grundlagen von L Systemen und deren Evolution Definition 2 17 ftir ein TOL System HR75 Ein TOL System ist ein Tripel G Z 7 0 wo S 2 7 das TOL Schema ist auch das Schema von G genannt und o das Axiom von G ein Wort ber ist G ist propagierend genau dann wenn S propagierend ist und G ist deterministisch genau dann wenn S deterministisch ist Definition 2 18 f r L G HR75 Sei G 2 7 ein TOL System Die Sprache die G generiert oder einfach die Sprache von G bezeichnet mit L G ist definiert als ui v 2 10 Wie schon zu Anfang erw hnt besteht der Unterschied zwischen einem TOL Schema und einem OL Schema darin dass mehrere tables zur Verf gung stehen und benutzt werden k n nen Es wird nun definiert wie dies geschieht Definition 2 19 f r die Ableitungsfunktion eines TOL Schemas HR75 Sei S OF ein TOL Schema Eine Ableitung in S ist ein Tripel D O v p WO O eine Menge von geordneten Paaren nicht negativer ganzer Zahlen ist das Vorkom men in D v ist eine Funktion von O in X v i j ist der Wert von D am Vorkommen i j und p ist eine Funktion von der Teilmenge O in 7 x U P PG j ist der table Produktions Wert von D am Vorkommen i j die folgenden Bedingungen be friedigen Es existiert eine Sequenz von Worten x x x in E auch genannt der trace von D und bezeichnet mit tr D so dass 1 O i Osis fas jx 2 v i j ist das jte Zeich
66. IL EOL dL und die parametrisierten L Systeme Mit den TOL Systemen ist die Modellierung von mehreren Um gebungen m glich Durch IL Systeme lassen sich Signalfl sse modellieren Die EOL Grammatik f hrt ein zweites Alphabet ein das der Terminale Die dL Systeme bieten die M glichkeit der Animation von ganzen Szenarien bzw das kontrollierte Wachstum solcher Szenarien Mit parametrisierten L Systemen ist die Modellierung s mtlicher komplexer Ob jekte m glich Alle diese L Systeme erweiterten das OL System um zus tzliche M chtigkeit Schnittstellen zur Chomskyhierarchie Hierf r wurde auf HR75 zur ckgegriffen Theorem 10 10 Dabei stellt eine gerichtete Kante dar dass die eine Sprachfamilie in der anderen enthalten ist Wenn zwei Sprachfamilien durch einen Pfad in diesem gerichteten Graphen nicht erreichbar sind sind diese inkompatibel aber nicht disjunkt Dabei ergibt sich Folgendes Klassen sind nicht disjunkt Lemma 10 1 HR75 F RG c F CF Theorem1 1 HR75 F 0L c F TOL Lemma 10 2 HR75 F 0L c F IL Lemma 10 2 HR75 F 0L c F EOL Lemma 10 2 HR75 F CF c F EOL Corollary 10 1 HR75 F TOL c F ETOL Lemma 10 2 HR75 24 2 Theoretische Grundlagen von L Systemen und deren Evolution F IL c F EIL Lemma 10 2 HR75 F EOL c F ETOL Lemma 10 2 HR75 F ETOL c F CS Theorem 10 5 HR75 F CS c F RE Theorem 1 1 HR75 F EIL c F RE Theorem 10 6 HR75 F RG c F TOL Lemma 10 1
67. Kopiere den rechten Kontext heraus Existiert ein Inhalt f r den rechten Kontext if length s 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Rechter Kontext fehlt exit end Sind weitere Zeichen au er dem Wildcardzeichen im rechten Kontext enthalten if Pos s gt 0 and length s gt 1 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Der linke Kontext enth lt neben dem Zeichen noch weitere Zeichen exit end Sind Klammern im rechten Kontext enthalten if Pos s 0 and Pos s gt 0 or Pos s gt 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Im Kontext sind keine Klammern erlaubt Exit end Enth lt der rechte Kontext keinen Ausdruck if Pos s gt 0 and length s 1 or length s 0 then rcon else Ansonsten baue einen rechten Kontext zusammen rcon gt ts cond pred trim Copy line i 1 k 1 i Kopiere den Produktionskopf heraus end Existiert ein Bedingungsteil aber kein rechter Kontext else if k gt 1 and 1 gt 0 then begin S trim Copy line 1 1 j 1 1 Kopiere den Bedingungsteil heraus pred trim Copy line i tl l 1 i Kopiere den Produktionskopf heraus rcon ze fi Existiert ein Inhalt ftir den Bedingungsteil if length s 0 then begin Gebe Fehlermeldung zur ck und Be
68. L Systemen unter Genetischen Algorithmen Bei der Anwendung von GA mit L Systemen muss erst bestimmt werden was ein Chromo som ist Entgegen der eigentlichen Definition eines Chromosoms dass es ein Bit String mit einer fixen L nge ist stellt eine Produktion ein Chromosom dar Dieses Chromosom hat keine feste L nge Viele Autoren zum Beispiel Fox Fo00 und Mock Mo96 sprechen trotzdem von GA nur wenige sprechen von Evolution ren Algorithmen zum Beispiel K kai KTV99a und Hornby Ho03 Da die Idee auf GA basiert wird auch hier von GA gespro chen 46 2 Theoretische Grundlagen von L Systemen und deren Evolution Produktionskopf Produktionsk rper N Produktionsbedingung Abbildung 2 27 Eine Produktion als Chromosom Die Abbildung von Evolution auf L Systeme unter der Nutzung von GA hat sich als die g n gigste Variante herausgestellt Dabei werden am h ufigsten parametrisierte PDBOL Systeme verwendet Daher werden die folgenden Mutationsm glichkeiten auch an solchen Produktio nen gezeigt Die Erweiterung der Mutation auf andere L Systeme sollte dann nicht mehr schwer fallen Point Mutation Hierbei wird nur ein einzelnes Symbol oder eine Zahl eines L Systems angefasst Es k nnen auch mehrere einzelne Symbole oder Zahlen ver ndert werden sie stehen bei dieser Mutati onsart nur nicht in einem bestimmten Kontext Bezogen auf die Argumente die in parametrisierten L Systemen bergeben werden heiBt es das Z
69. Methode wird beim erzeugen des Formulars aufgerufen und Initialisiert Variablen Zus tzlich registriert er den IdleHandler procedure TDirect3DForm FormCreate Sender TObject begin lpd3d nil lpd3ddevice nil MyVB nil Application OnIdle MyIdleHandler end GAA dd EE EE EE EE EE ie EE Ffo Ein EF Methodenname FatalError Parameter Typ HResult Name hr Bedeutung Wert des Handle Result der Direct3D Szene Typ string Name FehlerMsg Bedeutung String der Fehlermeldung Methodenbeschreibung Wird aufgerufen um eine Fehlermeldung an den Benutzer auszugeben 225 H Quelltexte procedure TDirect3DForm FatalError hr HResult FehlerMsg string var s string begin Hole die Fehlermeldung if hr lt gt 0 then s D3DXErrorString hr 13 FehlerMsg else s FehlerMsg D3DKillScene Szene abschalten D3DShutdown Direct3D beenden MessageDlg s mtError mbOK 0 Fehlermeldung ausgeben Close Formular beenden end EE EE Y E EE DE Y AD Methodenname D3DInit Methodenbeschreibung Diese Methode initialisiert Direct3D und die damit verbundene Kommunikation mit den COM Objekten procedure TDirect3DForm D3DInit var hr HRESULT Speichert die Ergebnisse der Verarbeitung d3dpp TD3DPRESENTPARAMETERS Struktur zum festlegen von Einstellungen d3ddm TD3DDISPLAYMODE Struktur zur Anzeige begin Erzeuge eine Verbindung zu Direct3D lpd3d Direct3DCreate8 D3D
70. POV Ray Pov eines der ltesten Ray Tracing Programme und es ist auch eines der bekanntesten POV Ray ist ein freier Renderer dessen Quelldateien f r jedermann zug nglich sind Dar ber hinaus gibt es zahlreiche Tools f r POV Ray Eines der bekanntesten ist MORay eine graphische Oberfl che zur Modellierung von 3D Modellen POV Ray basiert auf der Strahlenverfolgung Das ist ein Prozess zur Simulierung der Licht ausbreitung in einer Szene Zur Vereinfachung wird bei der Strahlenverfolgung nicht jeder Lichtstrahl von der Lichtquelle aus bis zum Auge verfolgt sondern genau anders herum wird jeder Strahl eines Pixels auf dem Bildschirm so lange verfolgt bis er eine Lichtquelle erreicht bis die Energie des Strahls zu schwach ist oder bis der Strahl die Szene verl sst Trifft der Strahl auf ein Objekt wird die Beleuchtung an diesem Punkt berechnet und es werden zwei neue Strahlen erzeugt einer der reflektiert wird und einer der gebrochen wird 77 4 Entwurf und Implementierung der Fassade gebrochener Strahl Bildschirm Objekt 1 reflektierter Strahl Augpunkt reflektierter Strahl gebrochener Strahl Abbildung 4 3 Strahlenverfolgung in einer Szene ESK97 Die Entwicklung einer 3D Szene in POV Ray l uft anders ab als bei Ray Tracing Program men wie 3D Studio oder Lightwave So kommt POV Ray zwar mit einer graphischen Ober flache diese ist aber nicht zum graphischen Modellieren der 3D Szene geeignet sondern zum textb
71. POV blob files n pov Message s t c output inc files instead of pov files n pov Message s t d output polyface meshes DXF file n dxf Message s t 3 output 3dfaces DXF file n dxf Message s t R output triangles in RAW file n raw Message s Nt O output Blob Sculptor BLB file n blb Message s t V output VRML world file n wrl Message s t X name use name vol as base element n base Message s t i link base elements together n base Message s t S num set string size to num Kbytes n set Message s t t num set minimum thickness n set Message s t r num overrule recursion depth n set Message s t a num overrule angle n set Message s t u num mutate num times n ls Message s t l show final L string n ls Message s t g add ground plane n ls Message s t L num set amount for command n ls Message s t P num set amount for t command n ls Message s t p num limit polygons to num n limit Message s Nt x num multiply x with num for campos n new Message s t y num multiply y with num for campos n new Message s t z num multiply z with num for campos n new ri Y ea Function headers added by Ken void L_Init void L_Finish void Replace_Once void L_System int N void L_Mutate int N void
72. Print Object float Expr Eval char Expr Str int First int Last bool BExp Eval char Expr Str int First int Last jJ xccl c uU MAH MU Main function modified by Ken void main int argc char argv char temp max file boolean found 188 H Quelltexte Store the pointers to the comline s_argc argc S_argv argv Display header and help file if needed Message s n min_bar Message s v s s n L System Parser Mutator 5 1 __DATE__ Message s n min_bar if argc lt 2 Help O User_error Need arguments n D Set the option string strcpy opts VP OhL S iecBbRd3vX p t x y z u r a gl Init files Init_file_buf 0 Init file buf 1 Init file buf 2 Check for all the comline options Get comline opt t amp found temp set minimum thickness if found sscanf temp Sf amp min thick Get comline opt x amp found temp set x if found x atof temp else x 2 Get_comline_opt y amp found temp set y if found y atof temp else y 2 Get_comline_opt z amp found temp set z if found z atof temp else z 2 Get_comline_opt p amp found temp limit total generated polygons if found sscanf temp ld amp poly_limit Get_comline_opt L amp rand_set temp set random amount if rand_set sscanf temp f amp rand_amount srand
73. Qualit t bei der Bilder zeugung ist Daher wird der Renderer POV Ray gew hlt 74 4 Entwurf und Implementierung der Fassade 4 6 Lparser Die einzelnen Bestandteile von Lparser wurden schon in Kapitel 3 1 vorgestellt An dieser Stelle wird zus tzlich dazu auf die Probleme mit dem Lparser eingegangen Zuvor wird jedoch eine Weiterentwicklung von Lparser n her erl utert Lparser in der Version 4 besitzt einige Nachteile beispielsweise die geringe Unterst tzung von verschiedenen L Systemen oder die Abh ngigkeit vom DOS4GW Treiber Weil Laurens Lapre den Quellcode von Lparser freigegeben hat konnten zahlreiche Entwickler den Lparser erweitern Eine dieser Personen ist Ken Kopp Er hat im Jahre 2000 den Lparser auf die Ver sion 5 1 gestellt Seine Version von Lparser ben tigt keinen DOS4GW Treiber und unter st tzt parametrisierte und kontextsensitive L Systeme Da diese Erweiterungen die wesentli chen Nachteile von Lparser aufheben wird f r den Bilderzeugungsprozess auf diese erweiter te Version zur ckgegriffen Lparser ben tigt als Eingabe eine LS Datei in der das L System definiert ist Dabei interpre tiert das Programm die erste auftretende Zeichenkette als die Rekursionstiefe wobei Kom mentare nicht ausgewertet werden Somit muss die Rekursionstiefe nicht zwangsweise in der ersten Zeile stehen Danach wird der Basiswinkel f r die Turtle Interpretation angegeben so wie der Anfangswert f r die St rke also die Breite eine
74. Ray gerechte Datei um zuwandeln Au erdem liest das Programm die INFO TXT Datei aus und setzt anhand der Daten die Kamera und die Lichtquelle Es zeigt sich aber dass an Stelle der Werte f r die Kameraposition die Werte f r die Kameraausrichtung eingesetzt werden und dass die Kameraausrichtung immer die Werte 0 0 0 zugewiesen bekommt Au erdem wird mehrfach die Lichtquelle direkt im K rper des 3D Modells platziert Interessanterweise liest das Programm LV2POVID die INFO TXT Datei richtig aus und verdreht nicht die Ko ordinaten wie das bei Lparser der Fall ist Das liegt vielleicht auch daran dass die Daten in der INFO TXT schon verdreht sind Eine weitere Schwachstelle von LV2POVID ist dass Dreiecke so beschrieben werden wie bei POV Ray in Version 2 X Die aktuelle POV Ray Version 3 5 gibt zwar Warnungen aus dass die Dreiecke nicht in der empfohlenen Syntax vorliegen erzeugt aber die Dreiecke noch richtig Au erdem gibt LV2POVID Daten an die nicht notwendig sind bzw Daten die zu einem falschen Ergebnis f hren wie zum Beispiel die Direction oder Angle Anweisung f r die Kamera 4 7 Persistence of Vision Ray 1986 beginnt David K Buck auf dem Amiga die Entwicklung eines Ray Tracing Programms namens DKBTrace 1989 wird der Name DKBTrace in POV Ray POV Persistence Of Vi sion ge ndert weil mittlerweile sehr viele Menschen das Programm weiterentwickelten ha ben und Buck nicht als Projektleiter aufgefasst werden will Damit ist
75. Theoretische Grundlagen von L Systemen und deren Evolution 23 1 P Systeme P Systeme basieren auf einem weiteren mathematischen Modell das sich an die Natur an lehnt Eingef hrt wurden die P Systeme von Gheorghe Paun in Pa98 Das biologische Vor bild ist die Membrane statt von P Systemen spricht man deshalb auch von Membrane Com puting Dabei sollen P Systeme biologische Membranen nicht modellieren sondern einige Eigenschaften dieser Membranen nutzen Elementar Umgebung Membran See ee Haut Membran SC a Region m ea Abbildung 2 16 Beispiel einer Membran Das System besteht aus einer Basismembran deren Kanten die Haut darstellen Auf diese Weise wird die Basismembran von ihrer Umgebung getrennt Die Basismembran kann weite re Membranen enthalten Somit erh lt man eine hierarchische Struktur Sind in der Region einer Membran keine weiteren Membranen enthalten wird sie als Elementarmembran be zeichnet Jede Membran hat eine Region in der sich Objekte und Regeln befinden Dabei stellen die Objekte Buchstaben eines Alphabetes dar und die Regeln die Produktionen Die Anwendung der Produktion findet im Basismodel wie in einem OL System parallel und nicht deterministisch statt Objekte k nnen von einer Membran zu einer anderen weitergereicht werden Membranen selbst k nnen ihre Durchl ssigkeit ver ndern sich aufbl hen und teilen F r weitere Informationen empfiehlt es sich die Homepage der P Systeme zu besuchen
76. Util t lef Cl C2 C3 v Vector copy r32 v lef Vector normalize fow Vector normalize lef break case if next if last recur thick one fraction Get value amp i one else thick Get value amp i else if last_recur thick one fraction r32 0 7 one else thick r32 0 7 break case if next if last_recur thick one fraction Get_value amp i one else thick Get value amp i else if last_recur thick one fraction r32 0 7 one else thick r32 0 7 184 H Quelltexte break case if next if last_recur ang one fraction Get_value amp i one else ang Get_value amp i else if last_recur ang one fraction r32 0 9 one else ang r32 0 9 break case if next if last recur ang one fraction Get value amp i one else ang Get value amp i else if last_recur ang one fraction r32 0 9 one else ang r32 0 9 break case VN if next r Get value amp i if last recur dis one fraction r one dis2 one fraction r one else dis r dis2 r else if last_recur dis one fraction r32 0 9 one dis2 one fraction r32 0 9 one else dis r32 0 9 dis2 r32 0 9 break ca
77. Vars Var Len 0 Temp Str Var Len while Temp Str 0 Src Temp Str 1 Rule_Type Rule_Type char Prd char Prv char Nxt char Cnd char Suc double Prb int N_Par This function initializes a rule given all the necessary information about the rule Prev_Ctx NULL Next_Ctx NULL Cond NULL 192 H Quelltexte Initialize t strcpy Pred Pr Initialize t Succ 0 new c strcpy Succ 0 Initialize t Probs 0 Prb N_Param N_Par he predecessor d he first successor there may be more later har SUCC_L Suc he probability of applying this successor Initialize the previous context if strlen Prv Prev Ctx gt 0 new char PRED_L strcpy Prev_Ctx Prv Initialize t if strlen Nxt Next_Ctx ne strcpy Next C Initialize t if strlen Cnd Cond new ch strcpy Cond N Succ 1 he next context gt 0 w char PRED_L tx Nxt he condition gt O ar COND L Cnd Initially there is only one successor Rule Type Rule Type This function for int i 0 delete Succ i if Prev_Ctx if Next Ctx if Cond NUL bool Rule_Type S fe This function most recently read If the are identical First check if strcmp Prd Check the pr check for nu if Prev_Ctx if Prv 0 else if strc else if Prv 0 Check
78. Vector_normalize axis_y static void Inverse_ECS vector pl vector p2 p2 _x axis x x pl _x p2 _yl axis yl x pl _x p2 _z axis_z _x pl _x static void Read_form void s32 i j s16 ver p r32 LR LE 132 Dum32 s16 Duml6 if pov_form pov_form2 p return strcat x_name vol volume_file fopen x_name if volume_file User_error Cannot open file Buffer IO volume_file 0 Used for dxfl output axis_x _y pl _y axis_x _z pl _z axis_y _y pl _y axis_yl_z pl _z axis_z _y pll_yl axis_z _z pll_z Read in and store an external object ol X LT ov form3 blb form rp s x name Duml6 getc volume file Set lowhigh Dum16 11 get storage mode Fget bin r32 volume file amp Dum32 header Fget bin r32 volume file amp Dum32 Fget bin r32 volume file amp LR Fget bin r32 volume file amp LE Fget bin r32 volume file amp LT fread amp Dum16 sizeof s16 1 volume file fread amp Dum16 sizeof s16 1 volume file fread amp Dum16 sizeof s16 1 volume file fread amp Dum16 sizeof s16 1 volume file fread amp Dum16 sizeof ul6 1 volume file form ver 0 form pol 0 k 0 for if feof volume file break Fget bin s16 Fget bin s16 Fget bin s16 Fget bin s16 volume file volume file volume file volume file i 1 i lt
79. Zeichenkette ftir den Kommandointerpreter JvCreateProcessl CommandLine lprocess c Copy t 1 length t 3 PicName OpenDialogl FileName end JvCreateProcessl Tag 2 Signalisiere dass eine Umwandlung stattfinden wird ConsoleFom ListBoxl Clear L sche den Inhalt der Konsolenausgabe JvCreateProcessl Run F hre die Anweisung aus end end RON ACCION a Y iN Y y SEITE NERO E EEE CHE NT Y HEERES TER Methodenname JvCreateProcesslRead Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name S Bedeutung Enth lt die Konsolenausgabe Methodenbeschreibung Methode wird ausgef hrt wenn Zeichenketten von der Standardeingabe an die Komponente bergeben werden procedure TMDIMain JvCreateProcesslRead Sender TObject const S String begin Schreibe die Konsolenausgabe in die Listbox des Formulars f r die Konsolenausgabe ConsoleFom ListBoxl Items Add s end dedd i Sh a A ge a dE FY SEN Methodenname JvCreateProcesslTerminate Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ Cardinal Name ExitCode Bedeutung Enth lt den Exitcode der ausgef hrten Anwendung Methodenbeschreibung F hrt eine bestimmte Anwendung aus die vorher in dem Attribut CommandLine definiert wurde procedure TMDIMain JvCreateProcesslTerminate Sender TObject ExitCode
80. Zeit f r die Findung eines L Systems ben tigt wird das m glichst nahe an die L sung kommt Applikation Effektive Speicherung von Pflanzen Prusinkiewicz zeigt in seinen Ver ffentlichungen PL90 Pr86 Pr93 PJM94 PHM PHHM96a PHHM96b PHHM95 BPFGK03 dass alle erdenklichen Pflanzen mit L Systemen f r die Computergrafik beschrieben werden k nnen Dieser Prozess k nnte auch umdreht werden indem versucht wird von einem Bild ein L System zu generieren das m g lichst nahe an das Originalbild der Pflanze kommt Dadurch k nnte eine Pflanze sehr effektiv gespeichert werden 29 2 Theoretische Grundlagen von L Systemen und deren Evolution Als Eingabe f r die Fitnessbestimmung steht das Foto des Objektes zur Verf gung sowie die generierten Bilder der L Systeme Uber die Ahnlichkeit kann dann die Fitness bestimmt wer den Als Ausgabe erh lt man das L System das dem Foto am n chsten kommt Applikation Pflanzenerkennung Mittlerweile gibt es eine groBe Menge von L Systemen die reale Pflanzen erzeugen Ein Teil dieser L Systeme k6nnte in einer Datenbank abgelegt werden Diese Datenbank wiirde eine Basis von repr sentativen Pflanzen bilden Diese L Systeme k nnten nun aus der Datenbank entnommen werden und mit Hilfe von GA oder GP einer Evolution unterzogen werden um auf einem Foto eine Pflanze zu erkennen Wird beispielsweise das Foto einer Rose aufge nommen und in der Datenbank liegt auch ein repr sentatives Modell
81. aus if SystemCheck false then Falls eine Warnung vorliegt dann Frage den Anwender ob er wirklich speicher m chte if MessageDlg Es liegen Hinweise zum Lindenmayer System vor 13 wollen Sie trotzdem fortfahren mtInformation mbYes mbNo 0 mrNo then Exit Falls es eine neue Datei ist dann wird eine Dialogbox ge ffnet um den Namen fiir das zu speicherne L System einzugeben if Pos Unbenannt Caption gt 0 then begin if SaveDialog Execute Exit filename end false then SaveDialog FileName Ansonsten entnehme den Namen aus der Uberschrift des Kindfensters else filename Copy Caption 1 length Caption 1 ffnen der alten Datei AssignFile old file filename Namen den File Handle zuweisen i Reset old file Sit ffnen der Datei zum lesen und zwischenzeitige Deaktivierung der I O Pr fung if IOResult lt gt 0 then War das ffnen erfolglos can_open false dann setze nicht die Variable can_open else Ansonsten setze die Variable can_open true ffnen der neuen Datei AssignFile new file temp VisualL ls Namen den File Handle zuweisen i Rewrite new file Sit ffnen der Datei zum schreiben und zwischenzeitige Deaktivierung der I O Pr fung if IOResult 0 then War das ffnen erfolglos begin dann gebe eine Meldung aus und Beende die Verarbeitung MessageDlg Datei kann nicht gespeichert werden mtError mbOk 0
82. bezeichnet mit L L G ist definiert durch L G L G Jo A In solch einem Fall bezeichnet L G eine EOL Sprache Definition 2 11 f r ein volles EOL System HR75 Ein EOL System G P A und seine Sprache L G wird voll genannt genau dann wenn A Beispiel 2 7 f r ein EOL System angelehnt an HR75 Die Grammatik eines PEOL System sei wie folgt definiert G Z S A B 4 B F a b P S gt AB A AA B BB A A B B FF a F b F a S A a b Es generiert die W rter der Sprache L la b a b a b n 0j Es werden zwei Ableitungsb ume f r die ersten 3 Ableitungen gezeigt 14 2 Theoretische Grundlagen von L Systemen und deren Evolution S gt AB S N 1 Ableitungsschritt A gt AA A B B gt BB gt AB 2 Ableitungsschritt A gt a A A B B B gt b gt AA BB A gt a B gt b 3 Ableitungsschritt a gt F a a b b b gt F gt aabb gt g ltiges Wort 4 Ableitungsschritt F F F F gt FFFF 5 Ableitungsschritt F F F F gt FFFF F gt F Abbildung 2 5 a Ableitungsbaum f r Beispiel 2 7 Im dritten Ableitungsschritt hat das EOL System das g ltige Wort aabb generiert Es folgt eine alternative Ableitung S gt AB S y 1 Ableitungsschritt A gt AA A B B gt BB gt AB AN 2 Ableitungsschritt A gt AA A A B B B gt b gt AA BB A gt a B gt b 3 Ableitungsschritt A gt a A gt a A A a b b b
83. das Starten einer Bilderzeugung F Dieses Argument gibt an dass alle Dateien aus den Zwischen schritten erhalten bleiben sollen Tabelle 4 2 Kommandozeilenargumente der Fassade 80 4 Entwurf und Implementierung der Fassade Die Aufrufskonventionen der Kommandozeile sind lprocess Optionen zu konvertierende LS Datei LS Datei Die Optionen entsprechen den Kommandozeilenargumenten Diese miissen nicht einzeln an gegeben werden sie k nnen auch kombiniert werden wie zum Beispiel lprocess ACEW640H480 bekerpl bekerpl5 Das Aufrufen der Fassade wiirde bei diesen Argumenten die Anti Aliasing Funktion aktivie ren die Datei bekerpl in die Version 5 konvertieren und in bekerpl5 abspeichern POV Ray nach Beendigung des Prozesses ebenfalls beenden und die Gr e der 3D Grafik auf 640 480 Bildpunkte festlegen Wird die Konvertierungsfunktion aktiviert dann k nnen auch zwei Da teinamen angegeben werden In solch einem Fall speichert der Prozess die Konvertierung im zweiten angegebenen Dateinamen ab Wird nur ein Dateiname angegeben dann wird der alte Inhalt durch den neuen ausgetauscht Neben der Kommandozeile gibt es noch eine Konfigurationsdatei LPROCESS CFG in der einige Werte f r diverse Einstellungen stehen m ssen Ohne eine vollst ndige Konfigurati onsdatei startet die Fassade nicht den Bilderzeugungsprozess In Tabelle 4 3 sind alle Einstel lungen deren Werte und ihre Bedeutung aufgelistet Einstellungen We
84. dd d dd dd dd dd dd dd dd d IIT d dd d dd dd dd d dd dd dd TIT dd d dd dd dd d dd dd dd 4 n n CenterX CenterY CenterZ 2 n CamX CamY CamZ 4 f n CenterX CenterY CenterZ 0000000 0 0000000 n n 3 n minX minY minZ 3 n maxX maxY maxZ 4 n n CenterX CenterY CenterZ 2f n CamX CamY CamZ 4 n CenterX CenterY CenterZ 0000000 0 0000000 nyn Ouelltexte von Visual L Dateiname VisualL dpr program VisualL ToDo uses Forms MDIMainSource in MDIChildSource in AboutSource CFGSource in ShowPicSource in Direct3DSource in TurtleComSource in CondFormSource in ConsoleFormSource in Visuall todo in AboutSource pas CFGSource pas MDIMainSource pas MDIChildSource pas MDIMain MDIChildMain AboutForm CFGForm ShowPicSource pas Direct3DSource pas TurtleComSource pas CondFormSource pas ConsoleFormSource pas ShowPicForm Direct3DForm TurtleComForm CondForm ConsoleFom R res begin Application Initialize Application Title Visual L Version 1 0 Application CreateForm TMDIMain MDIMain Application CreateForm TConsoleFom ConsoleFom 209 H Quelltexte Application Run end Dateiname AboutSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 Klassenname TAboutForm Version ie Kurzbeschreibung
85. die Hochsprache wie zum Beispiel eine Mathematik Bibliothek oder eine reine Bezier Bibliothek Auch Unterprogramme werden unterst tzt Neben der m chtigen Sprache werden auch eine Vielzahl von L Systemen unterst tzt RayTraced Evolution unterst tzt parametrisierte und stochastische L Systeme TOL und BOL Systeme sowie Timed L Systeme f r Animationen Alle L Systeme m ssen jedoch de terministisch und propagierend sein Das Programm selbst ist ein Kommandozeilenprogramm und hat keine weitere graphische Oberfl che 63 3 Programme die L Systeme simulieren interpretieren Der einzige Nachteil ist dass nur eine sp rliche Dokumentation existiert und ansonsten keine weitere Unterstiitzung Abbildung 3 3 3D Modell erzeugt von RayTraced Evolution 3 4 LinSys3D Als N chstes soll das von Andrea Esuli entwickelte Programm LinSys3D L3D vorgestellt werden Die derzeitige Version ist 1 2 sie stammt aus dem Jahre 2001 LinSys3D ist eine Windows Anwendung mit einer graphischen Oberfl che ohne Kommando zeilen Unterstiitzung Die Applikation unterstiitzt eine Reihe von L Systemen so zum Beispiel stochastische para metrisierte und kontextsensitive L Systeme Alle L Systeme miissen deterministisch und pro pagierend sein Ein Unterschied zu vielen anderen Programmen ist der Ablauf also wie die Pflanze synthetisiert wird Im ersten Schritt wird das L Schema angegeben Dazu wird als Erstes in eckigen Klammern das Alphabet aufgeli
86. die Visualisierung von L Systemen ist Das Programm wurde entwickelt um das Wachstum von Geh lzen zu simulieren und diese zu analysieren zum Beispiel den Saftfluss im Baum oder die Fotosynthese Die Software wurde zur Wald kosystemforschung entwickelt GRO Fractint Ein schon lteres aber bekanntes Programm ist Fractint Mit der Software l sst sich fast jedes erdenkliche Fraktal erzeugen Einfache PDBOL Systeme werden auch unterst tzt Die graphi sche Ausgabe ist normalerweise zweidimensional kann aber auf die dritte Ebene erweitert werden Es existiert auch eine Exportfunktion f r Renderer F r den POV Ray existiert nur ein RAW Format welches erst mit einem weiteren Tool namens RAW2POV umgewandelt werden muss Dieses Tool wurde aber von den Entwicklern von POV Ray eingestellt und ist nicht mehr verf gbar Fra Lworld Lworld ist ein Programm zur Animation von L Systemen mit OpenGL Das Programm wurde an der Universit t Z rich von Herrn Hansrudi Noser entwickelt Lwo LS SketchBook LS SketchBook unterst tzt derzeitig parametrisierte stochastische und kontextsensitive L Systeme Im Vergleich zu anderen Programmen unterst tzt es auch nicht propagierende L Systeme Die Ausgabe erfolgt mit OpenGL Au erdem gibt LS SketchBook den kompletten Wachstumsprozess graphisch aus Dieser kann als Animation mitgeschnitten werden LSB Hier soll Herrn Prof Dr Winfried Kurth BTU Cottbus gedankt werden dass er eine Ko
87. dl ext Vector copy d2 in sprintf layer d c fprintf volume file O nINSERT n8 n s n2 nBLOCK n layer fprintf volume file 10 n g n20 n g n30 n g n in x in y in _z fprintf volume file 41 n g n42 n g n43 n g n s s d fprintf volume file 210 n g n220 n g n230 n g n ext x ext yl ext z1 polcount t return d2 7 Vector_copy_r32 up d2 Vector normalize d2 as Vector_product dl d2 d3 Vector normalize d3 setup transform Vector_copy_r32 d3 Cl new x axis Vector_copy_r32 d2 C2 new y axis Vector_copy_r32 dl C3 new Z axis if pov_form insert a reference to l_base da 0 7 s 0 7 rl 57 0 Do angle 0 0 0 0 dl _z sagrt dl _x dl _x dl _y dl _y l r2 57 0 Do angle 0 0 0 0 d1 x d1 yl fprintf volume file object l base fprintf volume file finish t base pigment color col d c 16 fprintf volume file scale lt g g g s d s fprintf volume file rotate lt g g g 0 0 0 0 r1 175 H Quelltexte fprintf volume_file rotate lt g g g gt 0 0 r2 0 0 fprintf volume file translate lt g g g gt n pl _x pl _z p1 yl polcountrr if maxX lt p maxX X if maxY lt pl yl maxY s x P y P if maxZ p z maxZ pl _z if minX gt p x D y P z minX Xx if minY gt pl _y minY L _y if minZ gt
88. ein Endzustand existiert sowie Zust nde die eine arithmetische oder logische Funktion ausf hren Ein Zustand kann auch ein Unterprogramm darstellen Durch die Verbindung von Zust nden mit Kanten wird ein Programm erzeugt Ein GP System auf der Basis von Automaten ist PADO Leider existiert zu PADO keine Web Pr senz daher werden alternativ die Links zu Astro Teller http www 2 cs cmu edu astro astro papers html Stand 06 2004 und Manuela M Veloso http www 2 cs cmu edu mmv Stand 06 2004 angeboten beide sind die Entwickler von PADO CPU Register RO RO 4 R1 RO R2 R2 R2ORRO Abbildung 2 22 Lineare Struktur Bei der linearen Sequenz von Befehlen wird ein Computer nachgebaut So besteht ein Pro gramm aus einer CPU mit einer bestimmten Anzahl von Registern die eine lineare Sequenz von Befehlen abarbeitet In den Befehlen sind nur arithmetische und logische Operationen m glich AIMGP war solch ein GP System Aus AIMGP ist Discipulus entstanden Weitere Informationen sind unter http www aimlearning com Stand 06 2004 zu finden 42 2 Theoretische Grundlagen von L Systemen und deren Evolution cae Abbildung 2 23 B ume als Datenstruktur Baume als Datenstruktur ftir Programme sind die gebr uchlichste L sung Dabei stellen die Blatter Variablen oder Konstanten dar und die restlichen Knoten arithmetische oder logische Operationen Der Vorteil von B umen ist dass auch ein IF THEN ELSE Konstrukt verwende
89. einer RMI Methode kapseln Auf diese Weise m ssten die externen Program me nicht mehr auf einem Computer liegen Nun k nnte die Fassade zu einem Steuerpro gramm f r die parallele Abarbeitung von einkommenden Jobs ausgebaut werden Die exter nen Programme melden sich bei der Fassade an und bekommen Jobs zugeteilt Dabei k nnten sich Programme auch mehrfach bei der Fassade anmelden So k nnen zwei POV Ray Pro gramme auf verschiedenen Rechnern zur Verf gung stehen Die Fassade w rde in diesem Fall den Programmen ohne Auslastung die vorhandenen Jobs zuteilen W rde man die Bilderkennung von Pflanzen mit L Systemen weiterf hren k nnte man sich einen Roboter vorstellen der Gartenaufgaben bernimmt Er k nnte dann beispielsweise an hand der erkannten Pflanze entsprechend d ngen oder sie als Unkraut entfernen 106 A Abbildungsverzeichnis Anhang A Abbildungsverzeichnis Abbildung 1 1 Phyllotaxis der Sonnenblume De03 sse 1 Abbildung 1 2 Stellungen der Knospen TDe l sse 2 Abbildung 2 1 Transitionsdiagramm f r den EA 7 Abbildung 2 2 bergang vom Anfangszustand zum ersten Folgezustand s 8 Abbildung 2 3 Einf hrung der Zellteilung und der entsprechende Folgezustand 9 Abbildung 2 4 Ableitungsbaum zum Beispiel 24 11 Abbildung 2 5 a Ableitungsbaum f r Beispiel 21 15 Abbildung 2 5 b Ableitungsbaum f r Beispiel 21 15 Abbildung 2 6 Ableitungsbaum vom
90. fprintf volume file g ver poly store i 3 yg fprintf volume file g n ver poly_store i 3 _z else standard VOL output Fput_bin_sl6 volume_file 20 Fput_bin_sl6 volume_file vertices Fput_bin_sl6 volume_file polygons Fput bin sl6 volume file color for t 1 t lt vertices t Fput bin r32 volume file ver t x1 Fput bin r32 volume file ver t yl Fput bin r32 volume file ver t z 1 for t 1 t lt polygons tr for i 0 i lt 3 itt Fput bin sl6 volume file poly_store t i J5 Add objet EE static void Inverse vector t vector v Inverse vector transform of a matrix built in C123 Ax Cox 021 ox t _ y 4 C3 ox EE SI v _yl Cl _yl t _x C2 _y tL y C3 _yl t _z v _z cL 2 et Pes gt Bee 2 az EL et FE st Ss static void Set_ECS vector n Build an ECS transform in the axis_xyz vars used for dxfl output vector Wy Wz r32 fac r32 0 015625 Wy _x r32 0 0 wy _yl r32 1 0 Wy _z r32 0 0 Wz _x r32 0 0 Wz _y r32 0 0 Wz _z r32 1 0 Vector copy r32 n axis z Vector normalize axis z if Abs r32 n x lt fac amp amp Abs r32 n v1 lt fac Vector product Wy axis z axis x 173 H Quelltexte else Vector_product Wz Vector_normalize axis_x Vector_product axis_z axis_z axis_x axis_x axis_y
91. i return Expr_Eval Expr_Str First Last 0 WITH EEDD DG DD DG DU Functions used to initialize the L system bool Get_Line char Str FILE In_File This function reads a line correctly from the input file It eliminates any unneeded whitespace and ignores the comments anything beginning with It reads until it finds a valid line if no valid lines are found it returns FALSE char Tmp Str MAX LIN LEN int i j Len fgets Tmp Str MAX LIN LEN In File Len strlen Tmp Str if Len MAX LIN LEN return false while i Len Check for the beginning of a comment if i lt Len 1 if Tmp Str i break amp amp Tmp Str i 1 If it s a valid character add it to the string being read if strchr r n t Tmp Str i NULL Str j Imp Str il j else if Tmp_Str i amp amp j gt 0 if Str 0 amp amp Str j 1 Str j j itt Check for trailing space then terminate the string if j gt 0 amp amp Str j 1 j 199 H Quelltexte Str j NO while j 0 amp amp feof In File return j gt 0 void L Init void This function reads a LS file and sets up the initial axiom and rules It parses the file and does some error checking to make sure the rules are valid Note This function was originally written by
92. i 0 i lt N Const i Replace Str Temp Str Const Names i Const Vals il strcpy Object Str Temp Str Obj Len strlen Object Str Message Axiom s n Object Str Get rules while feof In File First read the next rule 201 Ouelltexte Read Ok Get Line Temp Str In File if Read Ok break Message Rule t amp sAn Temp Str Execute the preprocessor define statements for i 0 i lt N Const i Replace_Str Temp_Str Const_Names i Const_Vals i N_Vars 0 Prob 1 0 Find the successor part the section after the last gt Succ_Ptr strstr Temp_Str gt if Succ_Ptr NULL User_error Error in rule while strstr Succ_Ptr 1 gt NULL Succ_Ptr strstr Succ_Ptr 1 gt Succ_Ptr 2 Succ_Ptr 2 0 Check for stochastic L system if Succ Ptr 0 i 0 while Succ_Ptr i 1 Num_Str i Succ_Ptr i t1 Num_Str i 0 Prob atof Num Str Succ_Ptr i 2 if strlen Succ_Ptr 0 User_error Error in rule Find the condition part the section after the Cond 0 0 Cond Ptr strchr Temp Str if Cond Ptr NULL Cond_Ptr 1 0 if strcmp Cond Ptr 0 Cond Ptr NULL Find any context sensitivity blocks before and after the block section Next 0 0 Next_Ptr strchr Temp_Str gt if Next_Ptr NULL Next_Ptr
93. kinds of weird exceptions r32 temp X y KS x2 xl y y2 yl if x zero if y lt zero temp half_pi else temp half_pi else temp atan y x if x lt zero if y lt zero temp pi temp else temp pi temp 157 Ouelltexte if Abs_r32 temp lt r32 temp zero if temp lt zero temp two_pi else if temp gt two_pi temp two_pi return temp void Move_transform vector v vector t Vector_copy_r32 v t v _x Scalar_product M1 v _yl Scalar_product M2 v _z Scalar_product M3 void Set_move_transform r32 a 0 0001 t t t vector no Transform the vector according to the current movetransform matrix Set a movetransformation matrix based on an angle rotation of decr E H r32 nil n22 cosa r32 cos a sina r32 sin a nli no _x no _x n22 no _y no y n33 no z no _z nxy no x nol yl nxz no x no _z nyz no _y no _z Ml _x n11 one n11 cosa Ml _yl nxy one cosa no MII zl nxz one cosa no M2 x nxy one cosa no M2 y n22 one n22 cosa M2 z nyz one cosa no M3 x nxz one cosa no M3 y nyz one cosa no M3 z n33 one n33 cosa File and conio procs static boolean void Set lowhigh boolean b native_mode b
94. lt gt rbracket and lpolygon lt gt rpolygon then result Die Anzahl der schliessenden und ffnenden eckigen und geschweiften Klammern ist ungleich else if lbracket lt gt rbracket then result Die Anzahl der schliessenden und ffnenden eckigen Klammern ist ungleich else if lpolygon lt gt rpolygon then result Die Anzahl der schliessenden und ffnenden geschweiften Klammern ist ungleich end ean ea M CX HWD EWE Sat YE ER Methodenname StrToProduction Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung 231 H Quelltexte Name str Bedeutung String der zerlegt werden soll Typ var string Name lcontext Bedeutung Enth lt am Schluss den linken Kontext Typ var string Name predessor Bedeutung Enth lt am Schluss den Produktionskopf Typ var string Name rcontext Bedeutung Enth lt am Schluss den rechten Kontext Typ var string Name condition Bedeutung Enth lt am Schluss den Bedingungsteil Typ var string Name successor Bedeutung Enth lt am Schluss den Produktionsk rper Methodenbeschreibung Zerlegt einen gegebenen String in die Einzelteile einer Produktion procedure TMDIChildMain StrToProduction const str string var lcontext string var predessor string var rcontext string var condition string var
95. ndern unsigned char state Bitstellen Kommandozeilenargument C 0 Funktion nicht aktiv 1 Konvertieren einer Datei und Prozess weiter abarbeiten Kommandozeilenargument c 0 Funktion nicht aktiv 1 Nur Datei konvertieren und Programm beenden Kommandozeilenargument E 0 Funktion nicht aktiv 1 POV Ray am Ende der Verarbeitung beeenden Kommandozeilenargument e 0 Funktion nicht aktiv 1 POV Ray sofort beenden ohne Bilderzeugung Kommandozeilenargument A 0 Funktion nicht aktiv 1 Anti Aliasing Funktion von POV Ray aktivieren Kommandozeilenargument T 0 Grafikformat ist Bitmap 1 Grafikformat ist Targa Kommandozeilenargument F 0 Alle Dateien aus den Zwischenschritten werden gel scht 1 Alle Dateien aus den Zwischenschritten bleiben erhalten Reserviert Hat derzeitig keine Bedeutung Abbildung 4 7 Bitbelegung der Variable state Das Modul cfg file c enth lt drei Funktionen deren Aufgabe es ist die Kommandozeilenar gumente zu verarbeiten und zu interpretieren Dabei wird die meiste Arbeit in der Funktion checkingCFGFile durchgef hrt Diese Funktion ist auch die einzige Funktion die nicht der Faustregel folgt wenn eine Funktion mehr als zwei Bildschirmgr en gro ist so lagere Teile dieser Funktion aus Auf eine Ausgliederung wurde in diesem Fall verzichtet weil dies aufgrund der starken Verzahnung des Quelltextes nicht sinnvoll erschien Alle ande ren Funktionen orientieren sic
96. nichterlaubte Schalterkombinationen define ILLEGAL OPTS_cC 3 Schalterkombination c C define ILLEGAL_OPTS_cE 6 Schalterkombination c E define ILLEGAL_OPTS_eC 9 Schalterkombination e C define ILLEGAL OPTS eE 2 Schalterkombination e E Alle Anweisungen werden f r char Arrays benutzt y Daher muss zum eigentlich Wert noch 1 gerechnet werden f r 0 Maximale l nge des Wertes von Width und Heigt von der Kommandozeile define MAX VALUE WIDTH HEIGHT I define MAX FILENAME LENGTH CH Maximale l nge eine Dateinamens Maximale l nge einer Zeile in der CFG Datei EJ define MAX_CFG_LINE_LENGTH 51 Maximale l nge einer Zeile in einer LS Datei x define MAX L LINE LENGTH 001 Maximale Anzahl von Zeichen von der Kommandozeile define MAX COMLINE 28 Maximale l nge einer Zeile in einer POV Datei define MAX POV LINE LENGTH Sch Maximale lange einer Option auf der Linken Seite des in der CFG Datei y define MAX_CFG_LEFTSIDE T 126 H Quelltexte Maximale l nge einer Option auf der rechten Seite des in der CFG Datei J define MAX CFG RIGHTSIDE 141 Maximale Anzahl von Optionen die in einer CFG Datei stehen k nnen Ef define MAX_OPTS_IN_CFG L3 define POV APP Pov35MainWinClass Name der POV Ray Instanze Die Struktur enth lt alle wichtigen Information von der Kommandozeile und aus der CFG Datei die alle Teile von Lprocess ben tigen
97. poly store 1 2 2 poly store 1 3 1 Save object 4 1 1 L system routines static r32 Rnd void 179 H Quelltexte Get a random number return r32 rand rm define Util_t In C1 C2 C3 Out IN Out _x Scalar_product C1 In Out y Scalar product C2 In Out _z Scalar product C3 In static void Set rot r32 a vector n Set up a rotation matrix r32 nll n22 n33 nxy nxz nyz sina cosa cosa cos a sina sin a nll n _x n _x n22 n y n yl n33 n _z n _z nxy n _x n _yl nxz n _x n _z nyz n y n _z Cl _x n11 one nll cosa Cl _y nxy one cosa n _z sina Cl _z nxz one cosa n _y sina C2 x nxy one cosa n _z sina C2 _y n22 one n22 cosa c2 _z nyz one cosa n _x sina C3 x nxz one cosa n y sina C3 y ny one cosa n _x sina C3 _z n33 one n33 cosa static 32 Get value u32 j Read a xx value from a production string at location j and make it into a real s16 i 0 732 r 0 0 char val 40 3 44 3 for pr 4 if Object Str j break val i Object Str j itt 3 val i 0 sscanf val Sf amp r if last_recur r fraction return r stati
98. poly store t 0 _x if maxY gt ver poly store t 0 _yl maxY ver poly_store t 0 _y if maxZ gt ver poly store t 0 _z maxZ ver poly store t 0 _z if minX gt ver poly store t 0 _x minX ver poly store t 0 _x if minY gt ver poly_store t 2 _y minY ver poly_store t 2 vl if minZ gt ver poly store t 011 z1 minZ ver poly store t 0 _z if maxX gt ver poly store t 111 x1 maxX ver poly store t 1 x if maxY gt ver poly store t 1 _yl maxY ver poly store t 111 yl if maxZ gt ver poly store t 111 sii maxZ ver poly store t 1 z if minX gt ver poly store t 111 x1 minX ver poly store t 1 x if minY gt ver poly store t 211 ei minY ver poly store t 211 vl if minZ gt ver poly store t 1 _z minZ ver poly store t 1 z if maxX gt ver poly store t 211 x1 maxX ver poly store t 211 x if maxY gt ver poly store t 211 v1 maxY ver poly_store t 2 _y if maxZ gt ver poly store t 211 z1 maxZ ver poly store t 2 _z if minX gt ver poly store t 211 x1 minX ver poly store t 2 _x if minY gt ver poly_store t 2 _y minY ver poly store t 211 yl if minZ gt ver poly store t 211 z1 minZ ver poly store t 2 _z if maxX gt ver poly store t 311 x1 maxX ver poly store t 3 x if maxY gt ver poly_s
99. t for t vertices t vertices fprintf volume file t t t fprintf volume file t t t n fprintf volume file t t n fprintf volume file Write polygons fprintf volume file t tIndexe fprintf volume file t t tcoor for t 1 t polygons t fprintf volume file t t t if poly store t 2 poly max 2 else max 3 for i 0 i lt max itt fprintf volume_file fprintf volume file 1 n for t polygons t lt polygons fprintf volume file t t t if poly store t 2 poly max 2 else max 3 for i 0 i lt max i o fprintf volume file fprintf volume file 1 n fprintf volume_file t t t n fprintf volume file t t n fprintf volume file t n else if dxf3 for i 1 i lt polygons i if Invalid_polygon i continue if poly_store i 2 poly_ fprintf volume_file g fprintf volume_file g fprintf volume_file g fprintf volume_file g fprintf volume_file g fprintf volume_file g fprintf volume_file g fprintf volume_file g st 0555 0 27 0 5 Sf 0 6 0 2 0 2 WER 055 0 5 0 5y4 WEN Os Oty Os 2 Sf 0 9 0 9 0 9 SI 5 0b 0 5 nate3 n t AD Mt amp f f f n ver t _x ver tl zl CHE tsf sf f n ver t x ver t l zl dFaceSet n dIndex n NHS store t 3 poly store t i 1 p EEE d N
100. the boolean flag App append if true If the number of arguments in the string being inserted is greater than the number of parameters in the rule in which it is being inserted the 204 H Quelltexte string will not be inserted and FALSE int i rand int j rand int N_Paren 0 char Rem_Str SUC if N_Param lt N_Args if App strcat Succ i else for int k 0 if Succ i if Succ i while N_Paren if Succ i if Succ i j strcpy Rem Str Succ il j strcat Succ i strcat Succ i return true void Rule_Type Replace char Strl N_Succ strlen Succ i Co lu Str k k gt 0 Jp ACH Jl em 139 amp Succ i 0 Str Rem_Str return false k lt j k N_Parentt N_Paren N_Parentt N_Paren jl indicating failure will be char Str2 returned yf This function replaces all occurrances of Strl in a rule s successor with Str2 for int i 0 Replace_Str Su i lt N_Succ cc i void Rule Type Swap Dirs This function swaps the directions of drawing commands in a rule s successor SEL i SEr2 4 makes the following exchanges i JFE d Succ i j lt gt amp x d ec lt gt lt gt lt gt H int Len for int i 0 i lt N_Succ Len strlen Succ i for int j 0 j
101. the ne if Next_Ctx if Nxt 0 else if strc else if Nxt 0 is the rule s destructor i N Succ itt 1 NULL delete Prev Ctx NULL delete Next Ctx L delete Cond ame Rule char Prd char Prv char Nxt char Cnd It de allocates the memory allocated earlier is used in stochastic L systems to determine if the rule that was read in is really just another possible successor for a rule that was previously predecessor previous context next context the predecessor Pred 0 return false evious context Both contexts ll pointers to avoid errors NULL 0 return false mp Prv Prev Ctx 0 return false 0 return false xt context NULL 0 return false mp Nxt Next Ctx 0 return false 0 return false 193 and the condition may be NULL and condition of the new rule to this rule they are parts of the same rule so we must H Quelltexte Check the condition if Cond NULL if Cnd 0 N0 return false else if strcmp Cnd Cond 0 return false else if Cnd 0 N0 return false All of the tests pass these two rules are the same return true void Rule Type Add Succ char Suc double Prb This function is used to add a new possible successor to a rule that has already been partially read When the function Same_Rule determines that the rule most recently read is really just a new
102. u i fp_exp4 return TRUE D u f y if u i fp expl u i fp exp2 u i fp exp3 u i fp_exp4 return TRUE trope last_v 9 SC RAND_MAX the basic open geometry file the 8 files when writing multiple povray blob files the store where polygons accumulate before saved to disc the store where vertices accumulate x filename of VOL file vertices polygons vertices and polygon counts Sometimes polygons and or vertices end up containing floating point These routines find these problems havoc on input parsers which expect the geometry to be flawless normalization routines blow up on NAN in vectors They can create Typical Does this vertex contain a floation point exception 165 H Quelltexte if u i fp expl u i fp exp2 u i fp_exp3 u i fp_exp4 return TRUE return FALSE static Invalid polygon s16 p boolean Can a normal be created on this polygon vector s16 r32 i 0 i lt 4 i ver poly_store p i _x ver poly store p l ill yl ver poly_store p i _z Bad_vertex x y z return TRUE for x y z i f 0 i lt 3r i 1 ver poly store p ill l x ver poly store pl ill yl ver poly_store p i _z i X i Y i Z i for S ZL 2 Ex Z z NI x N yl dp se Ey 2 _z XI y Y _x Z _y X _x
103. und deren Evolution Abbildung 2 15 Die 3D Grafik zum Beispiel 2 16 Anzumerken ist dass es auch alternative graphische Interpretationen gibt Diese haben sich gegentiber der Turtle Interpretation jedoch nicht durchsetzten k nnen vergleiche dazu HR75 2 2 7 bersicht ber Anwendungsm glichkeiten von L Systemen Bisher wurden zahlreiche L Systeme sowie ihre Interpretation vorgestellt Auch einige Stich worte zu den Anwendungsm glichkeiten von verschiedenen L Systemen wurden bereits ge nannt Dieses Kapitel stellt einige weitere Anwendungsm glichkeiten vor Dabei werden die Anwendungen in drei Kategorien eingeteilt Computergrafik Pflanzenmodellierung Durch die Arbeiten von Prusinkiewicz ist die Pflanzenmodellierung einer der Hauptan wendungsbereiche f r L Systeme PL90 Modellierung auf zellularer Ebene Prusinkiewicz PL90 nutzte L Systeme auch zur Visualisierung ihrer urspr nglichen Funktion Dazu kombiniert er Map L Systeme die die topologische Struktur beschreiben mit einer graphischen Interpretation die auf NLA86 basiert Hierbei ist das Axiom ein regul res Polynom das die Anfangskarte mit deren Grenzen enth lt Die Zellwand ist eine Linie entsprechend den Kanten des Graphen Wenn eine Wand durch eine Produktion ge 34 Theoretische Grundlagen von L Systemen und deren Evolution teilt wird dann werden alle Folgew nde auf die gleiche L nge ausgerichtet Die Position einer Wand basiert auf der
104. vcount dis save dis break case if poly_on Vector_copy_r32 pos ver vcount break case g save dis dis if next dis Get_value amp i if last_recur dis fraction Vector_plus_fac pos fow dis pos dis save dis break case z save dis2 dis2 if next dis2 Get_value amp i if last_recur dis2 fraction Vector_plus_fac pos fow dis2 pos if poly_on Vector copy r32 pos ver vcount dis2 save dis2 break case if vcount s16 3 for j 1 j lt vcount 2 jt poly store pcount 0 1 poly store pcount 1 j 1 poly store pcount 2 j 2 poly store pcountt 3 j 2 Save_object vcount 1 pcount 1 col poly_on FALSE if pscount gt 0 pscount Vector copy max r32 pstack pscount count vcount pstack pscount count poly on TRUE break case c if next col s16 Get_value amp i else colt t 187 pstack pscount ver pstack pscount ver ver H Quelltexte break Process end2 L Mparser Marn EE UL Y static void Help void char s max_file Get comline progname s Message s options ls filename n n s Message s tnone default output Lviewer VOL file n vol Message s t v output POV object file n pov Message s t b output POV blob file n pov Message s t B output multiple
105. verwendet werden Analog gilt f r a die Schreibweise a lt a gt a Die Produktion eines IL Systems bei Rozenberg hat die Form HR75 d 0 gt gt Q 22 2 Theoretische Grundlagen von L Systemen und deren Evolution Bei einem IL System ist es auch Voraussetzung dass zu jedem Zeitpunkt jedes Symbol in X abgeleitet werden kann Zu diesem Zweck k nnen auch kontextfreie Produktionen in solch einem L System enthalten sein Sollte zu einem Zeitpunkt f r ein Symbol sowohl eine kon textfreie als auch eine kontextsensitive Produktion zutreffen wird der kontextsensitiven Pro duktion der Vorzug gegeben Die Anwendung f r diese L Systeme ist die Nachbildung des Signalflusses von Organismen Dadurch ist es m glich diverses Verhalten so zu beschreiben dass es Schritt f r Schritt ver folgbar ist Dies erm glicht es das Aufbl hen einer Bl te oder das Absterben von Pflanzen teilen schrittweise zu modellieren Dadurch gibt es einen harmonischen bergang und kein pl tzliches Erscheinen mehr Beispiel 2 12 f r ein PIL System PL90 Das Beispiel zeigt an einem trivialen PIL System wie Signale weitergegeben werden k nnen Sei E a b P fb lt a b b gt a a aj und o baaaaaaaa Der Ab leitungsbaum f r die ersten vier Ableitungen zeigt Abbildung 2 10 a gt a b gt a b lt a gt b 1 Ableitungsschritt gt abaaaaaaa 2 Ableitungsschritt gt aabaaaaaa 3 Ableitungsschritt gt aaabaaa
106. vor und stammt haupts chlich vom Autor Laurens Lapre Es ist zwar schon lter 1995 aber sehr verbreitet bei Windows Anwendern Lparser besteht stark vereinfacht aus drei Komponenten aus einem Programm das ein Wort aus einem L System generiert und als 3D Modell abspeichert aus einem Programm zum Be trachten des 3D Modells als Drahtgittermodell und aus einem Programm zum Konvertieren des 3D Modells in eine POV Ray Datei Das Konvertierungsprogramm wurde von Cees van der Mark jr geschrieben Das Programm zum Erzeugen eines 3D Modells nennt sich Lparser und ist ein Kommando zeilenprogramm Dieses bekommt als Eingabe eine Datei LS in der ein L System defi niert ist Dabei unterstiitzt Lparser PDBOL Systeme lediglich die Turtle Kommandos k nnen parametrisiert werden Neben dem L System selbst k nnen auch Optionen ber die Komman dozeilenargumente bergeben werden Au er dem POV Ray Format werden die Formate DXF AutoCAD RAW WRL VRML RDF RenderStar und BLB Blob Sculptor unter st tzt Eine weitere Eigenschaft ist die M glichkeit ein L System mutieren zu lassen wobei als Parameter nur die Anzahl der Mutationsdurchl ufe angegeben werden kann Die Mutation l sst die einzelnen Produktionen mutieren entspricht also dem Vorbild von GA vgl Kapitel 2 3 Das Anzeigeprogramm LViewer bietet die M glichkeit sich das erzeugte 3D Modell anzei gen zu lassen Angezeigt wird ein Drahtgittermodell das rotiert und skaliert werden
107. zuf lligen Teilbaum ersetzt Die zweite M glichkeit ist die Linear Mutation Dabei wird ein Knoten des Baumes ausgew hlt und durch einen neuen zuf lligen Knoten ersetzt wobei der neue Knoten sich in die Pr fix Notation eingliedern lassen muss So kann ein einzelner Operand nicht durch eine einzelne Operation ersetzt werden und umgekehrt o tree mutation linear mutation Abbildung 2 26 Mutation beim Baum Bei der Mutation von linearen Befehlssequenzen wird zu Anfang eine komplette Sequenz herausgesucht Im Anschluss wird per Zufall eine der drei folgenden m glichen Mutation gew hlt 1 Ein Register wird durch ein anderes existierendes Register ersetzt 2 Eine Konstante wird durch eine andere im Wertebereich liegende Konstante ge ndert 3 Die Operation wird durch eine andere erlaubte Operation ersetzt 45 2 Theoretische Grundlagen von L Systemen und deren Evolution Beispiel 2 17 Folgende Seguenz soll mutieren wobei die CPU die Register RO R1 und R2 besitzt und die arithmetischen Operationen MUL und DIV versteht sowie die bit orientierten lo gischen Operationen AND OR und NOT Der Wertebereich fiir die Konstanten liegt im Wertebereich der ganzen nicht negativen Zahlen RO RI Rod M gliche Mutationen Rl RI 4 1 Fall RO R2 4 1 Fall RO R1 8 2 Fall RO RI MUL 4 3 Fall Beim Umgang mit den Populationen gibt es zwei Ans tze Entweder wird bei jedem
108. 0 Ableitungsbaum f r das Beispiel 2 11 2 2 3 9 Kontextsensitive L Systeme Eine weitere Erweiterung der L Systeme ist die Kontextsensitivit t Fiir diese Erweiterung fiir ein L System mit interaction steht das I in dem Begriff IL System Statt I kann auch lt k I gt stehen wobei mit k die maximale Sensitivit t der linken Seite bezeichnet wird und mit 1 die der rechten Seite Alternativ kann f r lt k l gt auch die Summe von k und 1 stehen Wenn zum Beispiel k 1 und I 0 ist dann k nnte man lt 1 0 gt L System schreiben aber auch 1L System Neben den vielen M glichkeiten f r die Bezeichnung solcher L Systeme gibt es auch zwei Formen der Bezeichnungen f r das eigentliche L System im Speziellen f r die Produktionen Diese Unterschiede kommen zustande weil zwei wichtige Forscher Rozenberg und Prusin kiewicz in ihren B chern und Artikeln zwei verschiedene Notationen benutzen Weil sich die vorliegende Arbeit mehr in die Richtung Computergrafik bewegt wird der Notation von Pru sinkiewicz der Vorzug gegeben Der Unterschied liegt in der Beschreibung der Produktionen Die Produktion eines IL Systems bei Prusinkiewicz hat die Form PL90 d lt a gt a gt u Dabei steht a f r den Kontext auf der linken Seite und a f r den Kontext auf der rechten Seite a und a k nnen auch eine L nge gr er eins besitzen oder nicht vorhanden sein Ist a f r eine Produktion nicht vorhanden kann auch die Schreibweise a gt a gt a
109. 0 thick min_thick zero rand amount zero static r32 trope_amount zero static u32 polcount 0 static u32 poly_limit 500000L max_string static s16 num 0 col 2 lev last_col 0 static r32 dis ang dis2 tr 0 2 164 H Quelltexte static vector sky 0 0 0 0 1 0 static vector last 1 0 1 0 1 0 static r32 recursion fraction static vector axis_x axis_y axis_z Stacks and static s_rec stack org save static s16 scount 0 static p_rec pstack static s16 pscount 0 Current active transform matrix for drawing static vector Clp Gay C35 Var for rnd static r32 rm r32 1 0 r32 Ouput files static FILE volume_file NULL static FILE vf 8 Object stores static polygon_array poly_store PR static vector ver max p object Storage of a loaded shape for the X option static char x_name max_file static vector form c max p object static polygon array form s FR static s16 form_ver form_pol Check for weird polygons exception like NAN etc EA IEEE coded floating point exceptions static u32 fp_exp1 0x7f800000L static u32 fp_exp2 0xff800000L static u32 fp exp3 0xffc00000L static u32 fp exp4 0x7fc00000L static boolean Bad_vertex r32 x r32 y r32 z eg union 132 n u32 gt u u f x if u i fp expl u i fp exp2 u i fp exp3
110. 000 http psystems disco unimib it Stand 06 2004 Przemyslaw Prusinkiewicz Mark Hammel Jim Hanan und Radom r M ch The Artificial Life of Plants Artificial life for graphics animation and virtual reality Band 7 von SIGGRAPH 95 S 1 38 ACM Press 1995 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 Przemyslaw Prusinkiewicz Mark Hammel Jim Hanan und Radom r M ch Visual models of plant development Handbook of formal languages Hrsg Grzegorz Rozenberg und Arto Salomaa Springer Verlag 1996 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 Przemyslaw Prusinkiewicz Mark Hammel Jim Hanan und Radomir M ch L Systems From The Theory to Visual Models of Plants Proceedings of the 2 CSIRO Symposium on Computational Challanges in Life Sciences CSIRO Publishing 1996 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 Przemyslaw Prusinkiewicz Jim Hanan und Radom r M ch Extensions to the graphical interpretation of L systems based on turtle geometry University of Calgary Dept of Computer Science http Www cpsc ucalgary ca Research bmv lstudio graph pdf Stand 06 2004 Przemyslaw Prusinkiewicz Mark James und Radom r M ch Synthetic Topi ary Proceedings of SIGGRAPH 94 S 351 358 1994 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 115 C Literaturverzeichnis PL90 PP99 P
111. 1 0 if strcmp Next_Ptr 0 Next_Ptr NULL Prev 0 0 Prev Ptr strchr Temp Str lt if Prev Ptr NULL Pred Ptr Prev Ptr 1 Prev Ptr Temp Str Pred Ptr 1 0 if strcomp Prev Ptr 0 Prev Ptr NULL else Pred_Ptr Temp_Str Prepare each part of the rule for insertion into the rule list if Prev_Ptr NULL Repl_Vars_WCards Prev Prev_Ptr Var_List amp N_Vars Repl_Vars_WCards Pred Pred Ptr Var List amp N Vars if Next Ptr NULL Repl Vars WCards Next Next Ptr Var List amp N Vars if Cond Ptr NULL strcpy Cond Cond Ptr for i 0 i lt N Vars i Repl Var Addr Cond Var List il i 202 H Quelltexte strcpy Succ Succ_Ptr for i 0 i lt N_Vars i Repl Var Addr Succ Var List il i Insert the rule into the rule list first checking to see if the predecessor is already there in which case only the new successor needs to be added found false for i 0 i lt N Rules i if Rules i gt Same_Rule Pred Prev Next Cond Rules i gt Add_Succ Succ Prob found true break if found Rules N_Rules new Rule_Type Pred Prev Next Cond Succ Prob N Vars fclose In File Set start values for F and Z distances dis 100 0 dis2 dis 0 5 void L_Mutate int N This function executes mutations on the rules that have been initialized The mutations are randomly cho
112. 1000 then Ist die Zeile zu lang begin Dann uberspringe die Zeile und schreib eine Nachricht ins Kindfenster Child MessageList Items Add Die Zeile ist zu lang continue end 258 H Quelltexte Enth lt die Zeile ein Kommentar Leerzeile oder eine Pr prozessor Anweisung dann berspringe die Zeile if Pos s 1 or length s 0 or Pos s 1 then continue i Pos s Suche nach ein Kommentarzeichen in einer Zeile mit einem Ausdruck if i gt 1 then Ist ein Kommentar gefunden worden begin S Copy s 1 i 1 dann Schneide den Kommentar ab und S trim s entferne die Leerzeichen end Die case Anweisung pr ft die Anfangswerte des L Systems die am Anfang der Datei stehen case state of 0 try Erster g ltiger Ausdruck kein Kommentar oder Leerzeile Es wird erwartet dass der Ausdruck die Zahl f r die Rekursionstiefe repr sentiert i StrToInt s Der String wird versucht in eine Zahl zu wandeln Ist es gelungen wird der Wert an das Kindfenster weitergegeben und der Zustand erh ht Child RecursEdit Text IntToStr i Inc state continue except on EConvertError do Bei einem Konvertierungsfehler wird eine Nachricht an begin das Kindfenster bergeben Child MessageList Items Add Keine Rekursionstiefe gefunden Child MessageList Items Add Keinen Basiswinkel gefunden Child MessageList Items Add Keine Basisst
113. 3 1 0 info CamX 1 0 info CamY 1 0 info CamZ D3DXVECTOR3 0 0 0 0 0 0 D3DXVECTOR3 0 0 1 0 0 0 Transformation ftir Kamera anwenden SetTransform D3DTS_VIEW ViewMatrix D3DXMatrixPerspectiveFovLH matProj Resultierende Matrix D3DX_PI 4 Sichtwinkel 640 480 Seitenverh ltnis 1 05 Mindeste N he 100 0 Maximal sichtbare Entfernung SetTransform D3DTS PROJECTION matProj end Methodenname D3DKillScene Methodenbeschreibung Wird zum abschalten der Direct3D Szene ausgef hrt procedure TDirect3DForm D3DKillScene begin MyVB nil Speicher freigeben end 228 H Quelltexte Methodenname D3DRender Methodenbeschreibung Innerhalb dieser Methode wird die Szene und alle daraufhin bezogene Verarbeitung beschrieben procedure TDirect3DForm D3DRender var matWorld TD3DXMATRIX rot_matrix TD3DXMATRIX Rotationsmatrix trans_matrix TD3DXMATRIX Translationsmatrix ViewMatrix TD3DXMATRIX Matrix fur die Kamera begin Nur Ausfuhren wenn ein Direct3D Device existiert if assigned lpd3ddevice then with lpd3ddevice do begin LOschaktion Clear 0 Wie viele Rechtecke l schen nil Ganzer Bildschirm D3DCLEAR_TARGET D3DCOLOR XRGB 0 0 0 Hintergrund schwarz 14 L sche Z Buffer 0 Szenenbeschreibung if SUCCEEDED BeginScene then begin SetVertexShader D3D8T_CUSTOMVERTEX SetStreamSource 0 MyVB sizeof TMyVertex Definition
114. 3052 nze 1 07 color SFFFO0000 er Sech tat Oz Os nx 005 nyn 070 nze 120 color SFFF00000 x Schafe w 3722052 IS nx io OF Ay ED nz I O color SFFF00000 x Oe y edl ge Z 05 088 0Os05 nys 020 nze Che cCoLor SFFF00000 x 1 0 y 0 z 1 0 nx 0 0 ny 1 0 nz 0 0 color S FFF00000 Oben x zeck De y 205 zz Ox nx 0 05 ny 10 nzr 020 color SFFF00000 x SO py Op 205 MKS OO nys 1 0 nz Dr rer color SFFFO0000 x e0 y 205 2 O nk 00 nyn 1 0 nz 05 07 color SFFFO00000 x 0 y 04572 UL DE ce 00 nyi Lo0 nz50407 color SFFF00000 LS gel rer ap 04 2 ste Dip mks 0 0 nyn L 07 nzi 0 0 color SFFF00000 x S pow selclOr mer nar 000 I ites 0 07 color SFFF00000 Unten x Oe Nk 321205 z vlt NK 005 ny sL 0r nzz OO color SFFF00000 x 210 Sech He 0 5 08 Os O nys S10 nze 0 08 color SFFF00000 x Sechs y 2a 20 22 20 nxe 0 O nys 1207 nzs 0 0 color SFFFO0000 23 1207 y yc bag ZL Op mee 0 0 ny 7407122 00 color SFFFO0000 x Og ys Ay Og Aer Og me 0 0 nys 1 0 nz 0 0r color SFFFO0000 x Sechs 2381 02 Dr mes l D myr 0 07 nw 0 0 color SFFFO0000 Links x 1 0 y 205 lt 2 05 nx SLO nyse 0 07 nz 00 color SFFF00000 ROY 052 2 21 05 Sch nys 0 5 0 nz 0505 color SFFF00000 x 2 07 y 05 2 ue unk 07 nys 0 0 nzizs 0507 Color SFFF00000 eels Op 2712052225150 SLO mys 0207 daze 005 color SFFFO0000 25371504235 331205 22 Op mx 51405 ny 0 0
115. 4 Martin Bellardi Lindenmayer Systeme Referate zum Seminar Zu fall Rauschen 2001 http bellardi de pdf L Systeme pdf Stand 06 2004 Wolfgang Banzhaf Peter Nordin Robert E Keller und Frank D Francone Genetic Programming An Introduction dpunkt Verlag 1998 Ingo Boersch Evolution Vorlesungsskript zu Wissensverarbeitung Fachhoch schule Brandenburg Fachbereich Informatik und Medien 2004 http ots fh brandenburg de mod ams data wva unterlagen evo pdf Stand 06 2004 Fr d ric Boudon Przemyslaw Prusinkiewicz Pavol Federl Christophe Godin und Radoslaw Kardowski Interactive design of bonsai tree models Proceedings of Eurographics 2003 Hrsg P Brunet und D Fellner Band 22 2003 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 Frank Biittgen Prozeduraler St dtebau Seminararbeit Rheinisch Westfalische Technische Hochschule Aachen 2003 T W Chien und Helmut Jiirgensen Parameterized L Systems for Modelling Potential and Limitations Lindenmayer Systems Hrsg Grzegorz Rozenberg und Arto Salomaa S 213 229 Springer Verlag 1992 Karl Culik und Juhani Karhum ki 4 New Proof for the DOL Sequence Equivalence Problem and Its Implications The Book of L Hrsg Grzegorz Ro zenberg und Arto Salomaa S 63 74 Springer Verlag 1986 110 C Literaturverzeichnis CPS95 Cs02 DB03 De03 DK00 DS98 Du00 Eb02 EGO1 E100 E101
116. 4 Ex pression fiir den Ausdruck der eingesetzt wird Beispiel 2 11 f r ein parametrisiertes POL System PL90 Das folgende parametrisierte POL System soll diese L Systeme illustrieren Dabei ist Z AB C o B 2 4 4 4 und P A x y y lt 3 gt Ax 2 x y Ax y y 3 o B x A y 0 x x lt 1 gt C x x gt 1 o B x 1 gt C o E Beispiel in der Quelle ist fehlerhaft 21 2 Theoretische Grundlagen von L Systemen und deren Evolution Die Symbole x und y bilden Variablen die beim Aufruf der Produktion ihre Werte ii bergeben bekommen und diese auch als Werte fiir die Aktualparameter weitergeben k nnen Es ist eine Voraussetzung von parametrisierten L Systemen dass die Variab len auf der rechten Seite fiir die linke Seite benutzt werden oder fiir die Bedingung Es folgt der Ableitungsbaum fiir die ersten vier Ableitungsschritte Bl2 Dx gt 1 gt B x 1 B 2 A 4 4 A x y y gt 3 gt aa 2 true gt B 1 A 4 4 true gt B 4 A 1 0 1 Ableitungsschritt B x x gt 1 gt B x 1 B 1 B x x gt 1 gt B x 1 B 4 A 1 0 A x y y lt 3 gt A x 2 x y gt BBA B 1 true gt B 0 B 4 true gt B 3 Ad wwe mo MA 2 Ableitungsschritt B x x lt 1 gt cC B 0 B x x gt 1 gt B x 1 BO gt BBA B 0 true gt C B 3 true gt B 2 3 Ableitungsschritt B x x gt 1 gt B x 1 B 2 gt CBA B 2 true gt BO 4 Ableitungsschritt B 1 gt gt CBA Abbildung 2 1
117. 5 4 Entwurf und Implementierung der Fassade Bedeutung Version 4 Version 5 Kommentar Regelzuweisung gt Rotieren um die z Achse entgegen dem Uhrzeigersinn lt Rotieren um die z Achse Uhrzeigersinn gt Symbol f r das Ende der LS Datei keins Tabelle 4 1 Unterschiede zwischen Version 4 und 5 Au erdem k nnen define Anweisungen verwendet werden wie man sie in C kennt Trotz einer immensen Weiterentwicklung von Lparser der Code hat sich mehr als verdoppelt sind weiterhin einige Schw chen vorhanden Lparser pr ft nicht ob plausible Werte f r Re kursionstiefe Basiswinkel St rke und Axiom vorliegen Au erdem k nnen Zeichen in einer Produktion auftauchen f r die es keine Produktion zum Ableiten gibt Es existiert auch keine Pr fung ob die Anzahl der ffnenden und schlie enden eckigen und geschweiften Klam mern die gleiche ist Dies w re jedoch im Hinblick auf die Evolution von Interesse weil L Systeme generiert werden k nnen die nicht der strengen Definition der Grammatik entspre chen So kann eine komplette Produktion entfernt werden ohne weitere Produktionen abzu ndern und es k nnen willk rlich eckige Klammern gesetzt werden Au erdem werden auch nicht L Systeme interpretiert weil diese Pr fungen nicht stattfindet Bezogen auf die Pro duktionsregeln sei noch darauf hingewiesen dass anstelle eines Symbols auch als Wild card stehen kann wenn zum Beispiel bei einer kontextsensitive
118. 5 s 0307 colon SFFF00000 x sp yeh Op 2 1 0 me 1 0 ny 0 0 ne 0 0 color 3 SFFFODDDU J Rechts x 0 y sp Sch Gs ner 1 0 ms D Or nwr 0 07 color SFEFO00000 35 x 0 y 077 2 Dr nx 1 05 mys 0 0 nz 0 0 color a SEFFOOQOOD y x 037 y 202 vz Op ne lOp ny 0 0 nz 0 0 color SEFEO0000 x se ey rhy 2Z r nxi 107 nys 0O O met 0 07 color SFFFODDOO X x Dr y rcl 0g 2 erde I 0p ny 0 07 nzi 0 07 color t SEFEDDDDO 35 WI ee a iS AN o DN NW UU seen Offentliche globale Variablen pc MAC cC Pr crc PH var Direct3DForm TDirect3DForm Die Instanz von TDirect3DForm ist ffentlich f r alle anderen Units erreichbar implementation 224 H Quelltexte Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TDirect3DForm FormClose Sender TObject var Action TCloseAction begin D3DKillScene Abschalten der Szene D3DShutdown Beenden von Direct3D D3DActive false Signalisieren dass es keine Instanz von dem Fenster gibt Action caFree Speicher freigeben end eee ee ee ee eee ee ee et es Methodenname FormCreate Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung
119. 9 59 Min 9 59 40 Min Tabelle 6 3 Zeit f r die Verarbeitung von 101 Dateien vom Lparser in der Release Version Nun werden die 3D Szenen von Lparser mit dem Programm LV2POVID in POV Ray Szenen transformiert Dazu werden 95 Dateien f nfmal von LV2POVID verarbeitet Aus nicht er sichtlichen Gr nden hat LV2POVID sechs Dateien aus dem vorherigen Schritt nicht verarbei tet k nnen 99 6 Tests und Auswertung der entwickelten Software 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 2 23 Min 2 23 Min 2 22 Min 2 23 Min 2 23 Min 2 22 80 Min Tabelle 6 4 Zeit f r das Transformieren von 95 Dateien Der letzte Schritt ist die Erzeugung der 3D Grafiken Dazu wird POV Ray vorher gestartet wobei die Befehle ber QuietPOV gesendet werden Der Test wird mit 95 Dateien zehnmal durchgef hrt f nfmal ohne Anti Aliasing und f nfmal mit Anti Aliasing 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 8 02 Min 7 47 Min 7 59 Min 8 00 Min 8 00 Min 7 57 60 Min Tabelle 6 5 Zeit f r das Erzeugen von 95 Grafiken ohne Anti Aliasing 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 12 33 Min 12 25 Min 12 36 Min 12 14 Min 12 23 Min 12 26 20 Min Tabelle 6 6 Zeit f r das Erzeugen von 95 Grafiken mit Anti Aliasing Nun wird der komplette Verarbeitungszyklus mit Lprocess durchlaufen Dabei werden 95 Dateien f nfmal verarbeitet Alle Dateien waren schon konver
120. Arbeit vorgenommen und ein Ausblick auf die m gliche Erweiterung der Software gege ben 1 Einleitung zu dieser Diplomarbeit Im Anhang befinden sich das Literaturverzeichnis das Abbildungsverzeichnis das Tabellen verzeichnis und ein Verzeichnis ber die Softwarequellen Des Weiteren ist eine bersicht der Baumstruktur der CD ROM enthalten 1 4 Anforderungen an den Leser Im Rahmen dieser Arbeit werden einige Anforderungen an den Leser gestellt denn sie rei t viele Gebiete der Informatik an auf die aus Platzgr nden im Einzelnen nicht eingegangen werden kann Hierzu z hlt ein gewisser Grad an mathematischem Verst ndnis der sp testens mit dem Er reichen des Vordiploms erworben sein sollte Zum Nachschlagen sei auf folgende Quellen verwiesen SGT99 SD01 G699 Der Leser sollte iiber die Grundlagen der Formalen Sprachen verfiigen und die Chomskyhie rarchie sowie die Grundlagen zur Automatentheorie kennen Zum Nachlesen empfiehlt sich folgende Literatur HU00 W 99 Kenntnisse tiber Datenstrukturen sollten auch vorhanden sein und k nnen in Se92 OW02 nachgeschlagen werden Fiir den praktischen Teil der Arbeit werden allgemeine Kenntnisse der Programmierung vor ausgesetzt insbesondere Kenntnisse der Programmiersprachen C und Delphi Folgende Lite ratur kann genutzt werden um das n tige Wissen zu erhalten KR90 PP99 Wi95 DK00 Lo00 Eb02 Nicht nur als Ubungsbuch fiir Delphi sondern auch als Lehrbuch fiir be
121. Basis von L Systemen stellt eine Menge dar aus der einige L Systeme ge w hlt werden die dann die Anfangspopulation darstellen So k nnte es Mengen von L Systemen geben die B ume Pflanzen H user oder Gebirge darstellen 58 2 Theoretische Grundlagen von L Systemen und deren Evolution Der Anwender bestimmt dabei immer noch welches erzeugte Bild ihm am besten gef llt Die Basis f r die Evolution bildet das L System das dahinter steht Aus dem L System werden nun durch die Evolution so viele neue Individuen erzeugt bis die Population vollst ndig ist Erneut kann der Anwender aus der neuen Population seinen subjektiven Favoriten ausw hlen Diese Schleife wird so lange fortgef hrt bis der Anwender kein Interesse mehr an der Fort setzung hat Es liegt nahe dass auch nur eine Grammatik fiir die Evolution zur Verfiigung steht wenn nur ein Bild ausgew hlt wird Damit ware nur die Mutation als Evolution sinn voll Eine Reproduktion ware aus der Sicht des Anwenders wahrscheinlich nicht wiinschens wert da er nicht das gleiche Bild erneut erwartet Durch die Auswahl des Bildes legt der Anwender auch die Eingabe fiir die Fitnessbestim mung fest und damit auch gleichzeitig die Bestimmung des Individuums das einer erneuten Evolution unterzogen werden soll Als Ausgabe erh lt der Anwender die generierten Bilder Applikation Alternatives L System Das Einsatzgebiet von GA und GP sind Probleme die nicht mit herk6mmlichen L sungsme th
122. Beispiel 7 8 18 Abbildung 2 7 Ableitungsbaum f r das BOL System nennen 19 Abbildung 2 8 Zweidimensionaler fadenf rmiger Orgeamtsmus sss 20 Abbildung 2 9 Struktur einer Produktion eines parametrisierten OL Systems 21 Abbildung 2 10 Ableitungsbaum f r das Beispiel 2311 22 Abbildung 2 11 Signalverlauf in einem PIL System esee 23 Abbildung 2 12 Die graphische Interpretation der ersten vier generierten Worte 29 Abbildung 2 13 Die Entwicklung einer Pflanze mit einem L Swvstem esses 30 Abbildung 2 14 Turtle Interpretation im dreidimensionalen Raum sss 31 Abbildung 2 15 Die 3D Grafik zum Beispiel 2316 34 Abbildung 2 16 Beispiel einer Membran us ae Fd edt du 37 Abbildung 2 17 Ein vollst ndiges Eco Grammar System TChRsOoa l sss 38 Abbildung 2 18 PAP eines GA Sch09 Ta a ae Y 39 Abbildung 2 19 Crossover m GA nina ieh eu 40 Abbildung 2 20 Mutation in GA a une ee 41 Abbildung 2 21 Automat als Datenstruktur nennen 41 Abbildung 2227 Lineare SUK TU tesco snc y I en 42 Abbildung 2 23 Baume als Datenstrukturen ae ae 43 Abbildung 2 24 Crossover in GP Lineare Betchlsseguenz 44 Abbildung 2 25 Crossover in GP Baum iue us RR EHI 44 Abbildung 2 26 Mutation beim Baum sen seinen a 45 Abbildung 2 27 Eine Produktion als Chromosom sese 47 Abbildung 2 28 Beispiele f r Point Mutation au i a dre y reet ae ines ut 48 Abbildung 2 29 Inversion einer Produ
123. Brackets Ruckgabewert Typ string Bedeutung Gibt einen String mit einer Warnmeldung zurtick oder eine leere Zeichenkette Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name succ Bedeutung Enth lt den Produktionsk rper einer Produktion Methodenbeschreibung Es wird gepr ft ob die Anzahl der ffnenden und schlie enden eckigen und geschweifen Klammern gleich ist function TMDIChildMain TestingForBrackets const succ string string var lbracket integer Enth lt die Anzahl der eckigen ffnenden Klammern rbracket integer Enth lt die Anzahl der eckigen schlie enden Klammern lpolygon integer Enth lt die Anzahl der geschweiften ffnenden Klammern rpolygon integer Enth lt die Anzahl der geschweiften schlie enden Klammern i integer Laufvariable begin Initialisierung von Variablen lbracket 0 rbracket 0 lpolygon 0 rpolygon 0 result Durchlaufe den Produktionsk rper und erh he den Wert einer Variable wenn eine Klammer entsprechend der Bedeutung der Variable gefunden wurde for i 1 to length succ do if succ i then inc lbracket else if succ i then inc rbracket else if succ i then inc lpolygon else if succ i then inc rpolygon Gibt eine entsprechende Nachricht zurtick wenn die Anzahl der ffnenden und schlie enden eckigen und geschweiften Klammern ungleich ist if lbracket
124. C B Vector utils and inlines y H Quelltexte define Clip low a b a a lt b b a define Clip_high a b a a gt b b a define Clamp a b c a a lt b b a gt c c a define Wrap a b c a a lt b a c a gt c a c a define Lerp a b c Cb FE Or a define Swap a b a 5 b a a b define Vector length A r32 sqrt 32 A x A x X r32 AL y AL yl N r32 A z A _z define Vector equal A B A x DI x1 amp amp A _y BL vii amp amp A _z B _z define Scalar product A B A x B _x A _y BL y A _z B _z define Vector make A a b c Alex Bears A y b A z c define Vector_break A a b c a TSXISN b A _ y X c A z define Vector_lerp a A B A x Lerp a A x B _x A y Lerp a A yl BL yl N A z Lerp a A z B _z define Vector_normalize A r32 Dist r32 1 0 Vector_length A A _x Dist A _y Dist A _z Dist define Vector_copy A B B _x A _x BL y AL yl B z A _z define Vector_product A B C C _x AL y B _z A _z B _y CL y AL z BL x AL x B _z C _z AL x BL y AL y B _x define Vect
125. CamXTrack Position 0 5 end end ee ate Cet Cate eee late ae Cat Ee ae ate Cate ate hate eae Cae eae eo eee Methodenname CamYTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm CamYTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamYTrack Position 0 then begin CamYLabel Caption 0 Info CamY 0 end Ansonsten berechne den neuen Wert else begin CamYLabel Caption FloatToStrF CamYTrack Position 0 5 ffFixed Info CamY CamYTrack Position 0 5 end end Eh se i sh se eg re FY se ios om FY i sp chs E FY FY FN SF FY aimee em eo a eee ee FF FY Fr FL FFY eet Methodenname CamZTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm CamZTrackChange Sender TObject 216 H Quelltexte begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamZTrack Position 0 then begin CamZLabel Caption 0 Info CamZ 0 end Ansonsten berechne den neuen Wert else be
126. CamZ wurde kein g ltiger Wert gefunden Es wird der Standwert 2 0 verwendet mtWarning mbOK 0 end else if not lightx then 266 H Quelltexte begin Info LightX 1 0 MessageDlg F r den Schl ssel LightX wurde kein g ltiger Wert gefunden Es wird der Standwert 1 0 verwendet mtWarning mbOK 0 end else if not lighty then begin Info LightY 1 0 MessageDlg F r den Schl ssel LightY wurde kein g ltiger Wert gefunden Es wird der Standwert 1 0 verwendet mtWarning mbOK 0 end else if not lightz then begin Info LightZ 1 0 MessageDlg F r den Schl ssel LightZ wurde kein g ltiger Wert gefunden Es wird der Standwert 1 0 verwendet mtWarning mbOK 0 end end E Methodenname defaultCFG Methodenbeschreibung Schreibt eine CFG Datei mit Standardwerten procedure TMDIMain defaultCFG var cfg TextFile File Handle f r die CFG Datei begin Erzeugen der CFG Datei AssignFile cfg LPROCESS CFG File Handle den Namen zuweisen if Rewrite cfg Sit ffnen der Datei zum schreiben und I O Pr fung des Compilers tempor r ausschalten if IOResult lt gt 0 then Falls die Datei nicht ge ffnet werden konnte begin dann gib eine Fehlermeldung an den Benutzer aus und Beende die Funktion MessageDlg Das Programm kann nicht gestartet werden wei
127. D8 Handle f r die Direct3D Kommunikation lpd3ddevice IDirect3DDevice8 Handle f r ein Direct3D Device MyVB IDirect3DVertexBuffer8 Attribut f r den Vertex Buffer light D3DLight8 Attribut f rs Licht material D3DMATERIAL8 Attribut f rs Material Private Methoden procedure FatalError hr HResult FehlerMsg string 223 H Quelltexte procedure D3DInit procedure D3DShutdown procedure D3DInitScene procedure D3DKillScene procedure D3DRender procedure MyIdleHandler Sender TObject var Done Boolean public Public Deklarationen end const Definieren wie die FVF auszusehen hat D3D8T_CUSTOMVERTEX D3DFVF_XYZ or D3DFVF NORMAL or D3DFVF_DIFFUSE Alle 36 Vertex Punkte fiir einen Kubus MyVertices TMyVertices W rfel Farbe rot x zech free zk Dee 1 0 nx DT nys Q 0 man 0 color SFFFO0000 Vorn Cx FAL Oy AY 02 812 Oy nxe 0 07 nys 10 0 nzi 1 05 color SFFFO0000 x 205 OR MZ sd OF Nxt 007 ys 04 0 nzs L 07 color SFFFOOOOO x 0 y SOs zel Og c t nys 0 0 zi Sd Der eeler SFFFO0000 x Opry 85120 e tek 05 nx 0502 nyn 0 07 nze L O coLor SFFFO0000 gesch SO y 3212072 ls Og nx Os 05 ny 0 0 nze SO color SFFF00000 x Or y eal Oy x Dr hr 0 0 Hys OO wey 1 0 color SFFFO0000 Hinten x lt lt OF y Og Z Op nx 0 0 ny 040 nz 1 0 color SFFF00000 x 1 05 y Bak 205 Ks 0 07 nys 0
128. Daten verarbeitung 1 R Oldenbourg Verlag 1996 Jos Encarnac o Wolfgang Stra er und Reinhard Klein Graphische Daten verarbeitung 2 R Oldenbourg Verlag 1997 Bettina Fiege Ute Manthey und Gabriele Frank Pers nliche E Mail Korres pondenz auf CD ROM der Diplomarbeit enthalten Ausz ge auf http Www uni jena de data unijena_ faculties minet casio Lindenmayer2 html Stand 06 2004 Charles Fox Genetic Hierarchical Music Structures Ph D Dissertation Clare College Cambridge 2000 http www robots ox ac uk charles mg dissertation doc Stand 06 2004 111 C Literaturverzeichnis G 96 GFMPO1 GHJV96 Gw03 G 99 GR92 HLPO1 Ho03 Hol01 Hon01 HPO1a HPO1b Stefan G rtner Partitions limierte Lindenmayer Systeme Shaker Verlag 1996 Tobias Gross Nils Faltin Roman Miilchen und Michael Plath Computergra fik Interaktiv Grafiti Computer Graphics amp Software Ergonomie Carl von Ossietzky Universit t Oldenburg 2001 http olli informatik uni oldenburg de Grafiti3 grafiti flow1 pagel html Stand 06 2004 Erich Gamma Richard Helm Ralph Johnson und John Vlissides Entwurfs muster Addison Wesley Verlag 1996 Brad Goodwin The Wonderful World of Birds and Feathers CS 563 Advance Topics in Computer Graphics Worcester Polytechnic Institute 2003 http www cs wpi edu emmanuel courses cs563 write_ups bradg feathers fea therpaper_files feathers p
129. Durch lauf des Algorithmus durch Selektion und die Anwendung eines Operators eine komplett neue Population erzeugt oder das neue Individuum wird in die bestehende Population eingegliedert wof r ein anderes Individuum weichen muss Den zweiten Ansatz nennt man auch steady state Er hat den Vorteil dass zu jedem Zeitpunkt die bisher beste L sung verf gbar ist Bei der Erzeugung einer neuen Population kann die bisher beste L sung verloren gehen Diese Ans tze gelten auch f r die GA Wie die GA ist auch die GP sehr rechenaufwendig BNKF98 Ban03 Bo04 Ja97 2 6 Mutation von L Systemen Hier sollen einige Gedanken zu der Frage aufgegriffen werden wie L Systeme mutieren k n nen Dabei werden zwei Ans tze betrachtet der Einsatz von GA und der Einsatz von GP Gerade L Systeme die eine Erweiterung zum OL System darstellen sind sehr interessant f r die Mutation So k nnte bei einem TOL System durch Mutation die Umgebung manipuliert werden Bei stochastischen L Systemen k nnte die Wahrscheinlichkeitsverteilung auf die Regeln variiert werden Bei IL Systemen k nnte der Kontext ver ndert werden In der Praxis werden zur Mutation am h ufigsten parametrisierte PDBOL Systeme verwendet weil sich hiermit komplexere Objekte realisieren lassen Im praktischen Einsatz ist es empfehlenswert ein deterministisches L System oder ein stochastisches zu verwenden damit der Anwender nicht in jeden Ableitungsschritt eingreifen muss 2 6 1 Mutation von
130. E store t 3 poly store t i 1 simple raw format store i 3 3 vertex triangle ver poly store i 0 _x ver poly_store i 0 _yl ver poly_store i 0 _z ver poly_store i l _x ver poly_store i 1 _yl ver poly_store i l _z ver poly_store i 2 _x ver poly_store i 2 _y 172 ver t yl ver t yl t tMaterialBinding n t t tvalue OVERALL n t t n H Quelltexte fprintf volume file Sg n ver poly_store i 2 Iz else 4 vertex polygon 2x triangle fprintf volume_file g ver poly_store i 0 X fprintf volume file g ver poly store i 0 _yl fprintf volume_file g ver poly store i 0 2 fprintf volume file g ver poly_store i 1 ER fprintf volume file g ver poly_store i 1 yn fprintf volume file g ver poly_store i 1 243 fprintf volume file g ver poly_store i 2 _x fprintf volume file g ver poly_store i 2 yd fprintf volume file Sg n ver poly_store i 2 iz fprintf volume_file g ver poly store i 0 xs fprintf volume file g ver poly store i 0 yl fprintf volume_file g ver poly_store i 0 az fprintf volume file g ver poly store i 2 _x fprintf volume file g ver poly_store i 2 _yl fprintf volume file g ver poly_store i 2 NA fprintf volume file g ver poly store i 3 X 3
131. Evolution einer 3D Beschreibung aus Bildern mit Hilfe von Lindenmayer Systemen Diplomarbeit zur Erlangung des akademischen Grades Diplom Informatiker FH im Fachbereich Informatik und Medien der Fachhochschule Brandenburg vorgelegt von Jan Derer 14 Juni 2004 1 Gutachter Prof Dr F M ndemann 2 Gutachter Dipl Inf I Boersch Erkl rung Ich erkl re hiermit dass die vorliegende Arbeit von mir selbst und ohne fremde Hilfe verfasst wurde Alle benutzten Ouellen sind im Literaturverzeichnis angegeben Die Arbeit hat in gleicher oder hnlicher Form noch keiner Priifungsbeh rde vorgelegen Brandenburg 14 Juni 2004 Jan Derer Kurzfassung Abstract Kurzfassung Diese Arbeit besch ftigt sich mit den Lindenmayer Systemen kurz L Systemen deren Evo lution und Anwendungsm glichkeiten Dazu werden die theoretischen Grundlagen zu den L Systemen und ihre wichtigsten Erweite rungen dargestellt Des Weiteren werden einige Klassifikationen von L Systemen pr sentiert Au erdem wird auf die graphische Interpretation des Wortes eines L Systems mit Hilfe der Turtle Interpretation eingegangen F r den Einstieg in die Evolution wird ein kurzer berblick zu den Genetischen Algorithmen und zur Genetischen Programmierung gegeben Im Anschluss werden die Mutationskonzepte besprochen und Anwendungsm glichkeiten pr sentiert Aus praktischer Sicht wird eine Applikation vorgestellt die als Eingabe ein L System be
132. FG Datei Typ char Name value Bedeutung Die Bezeichnung des Wertes nachdem gesucht wird Funktionsbeschreibung Wenn die Wertepaare aus der CFG Datei eingelesen wurden kann mit der Funktion ber den Bezeichner der Wert als String zur ck gegeben werden Datei wird sequenziell die Datenstruktur abgearbeitet KCKCKCkCkCkCk kk Ck 2 2 2 2 2 22 2 2 22 2 222 2 22 d d Kk Ck kk OI 2 22 2 2 O k 22 2 2 22 2 2 2 2 2072 char getValueFromList struct CFGStruct list char value char i for i 0 i MAX OPTS IN CFG i if stricmp list i left value 0 return list i right return NULL BRK KR 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 ck kk kk Funktionsname checkingCFGFile R ckgabewert Typ char Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Diese Funktion liest die CFG Datei ein f llt die Datenstruktur und interpretiert den Inhalt KCKCkCkCkCkCk 2 2 222 2 2 2 2 IR 2 2 2 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2072 char checkingCFGFile void FILE CFGFile NULL Zeiger auf CFG Datei char zeile MAX CFG LINE LENGTH Speicher f r eine Zeile x changingSide Zeigt an auf welcher Seite x man sich gerade befindet Si 0 linke 1 rechte Seite counter 0 Zahler fur die Anzahl der gelesene Optionen S co
133. FL MDF FER Methodenname CloseBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Formular wenn auf Schlie en gelickt wird procedure TConsoleFom CloseBtnClick Sender TObject begin Close Formular schlie en end 222 H Quelltexte end Dateiname Direct3DSource pas Autor Jan Derer Datum 05 D 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 Klassenname TDirect3DForm Version 1 0 Kurzbeschreibung Diese Klasse repr sentiert das Fenster zur Direct3D Anzeige uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs Direct3D8 d3dx8 type Datenstruktur zum Speichern eines Vertex Punktes TMyVertex record X y Z single Position des Vertex nx ny nz single Normalen des Vertex color dword Farbe des Vertex end Deklaration der Vertex Liste fur 36 Vertex Punkte TMyVertices array 0 35 of TMyVertex TDirect3DForm class TForm Auflistung aller Methoden fur die Ereignisverarbeitung procedure FornClose Sender TObject var Action TCloseAction procedure FormCreate Sender TObject procedure FormShow Sender TObject procedure FormKeyDown Sender TObject var Key Word Shift TShiftState Auflistung aller privaten Methoden als Prototypen und privaten Attribute private Private Attribute lpd3d IDIRECT3
134. Go Grafikkarte durchgef hrt Als Betriebssystem wird Microsoft Windows XP mit Service Pack 1 verwendet Da der Computer ein Notebook ist wird das Notebook wahrend der Testl ufe station r an eine Steckdose angeschlossen So mit laufen die Komponenten des Notebooks nicht im Energiesparmodus sondern im Desk topmodus und nutzen ihre volle Performance 6 1 2 Testumfang Die Fassade wird auf drei Aspekte gepriift auf die Performance die Belastung und auf die Funktionalit t Beim Performancetest wird neben der Abarbeitungszeit noch die Frage gekl rt ob die Fassa de performanter ist wenn die Anwendung als Release Version kompiliert wurde AuBerdem wird aufgezeigt wie zeitintensiv welche Teile der Fassade sind Der Belastungstest l uft parallel zum Performancetest Mit ihm soll die Prozessor Speicher und Festplattenbelastung aufgezeigt werden Au erdem wird berpr ft ob die Anwendung unter Belastung zuverl ssig l uft Zum Abschluss wird noch getestet wie sich die Anwendung verh lt bei unerwarteten Werten von der Kommandozeile von der CFG Datei oder von der LS Datei 6 1 3 Testdurchf hrung F r den Performancetest wurde eine Batch Datei angelegt In dieser wird am Anfang und am Ende die aktuelle Systemzeit ausgegeben Dazwischen wird die gerade zu testende Anwen dung mit verschiedenen Dateien aufgerufen F r jede Anwendung wird der Test mehrmals durchgef hrt um das arithmetische Mittel berechnen zu k nnen Der Performan
135. Initialisiere die JvCreateProcess Komponente mit dem String f r den Aufruf der Fassade und setze das Tag dass es eine Bilderzeugung ist MDIMain JvCreateProcessl CommandLine lprocess ExtractFilename Caption MDIMain JvCreateProcessl Tag 1 Baue den Namen fiir die Bilddatei zusammen if Info Bitmap then PicName Copy ExtractFilename Caption 1 length ExtractFilename Caption 2 bmp else PicName Copy ExtractFilename Caption 1 length ExtractFilename Caption 2 tga ConsoleFom ListBoxl Clear L sche die Konsolenausgabe MDIMain JvCreateProcessl Run Starte JvCreateProcess end Gib eine Meldung aus wenn die Einstellungen nicht gespeichert werden konnten else MessageDlg Einstellungen konnten nicht in die CFG Datei gespeichert werden mtError mbOk 0 end ee ee EN BEN ee eee a a ee a ee a Methodenname DelAllMsgBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung wird auf den Button zum L schen aller Nachrichten geklickt dann wird diese Methode aufgerufen procedure TMDIChildMain DelAllMsqBtnClick Sender TObject begin L sche alle Nachrichten wenn welche vorhanden sind if MessageList Items Count gt 0 then MessageList Clear end BETRETEN PETE Y r FN HLR TE TRUE TULTR DES TR TASTE EE E ee Re FA TERT Methodenname Direct3DBtnClick Parameter Typ TObject Name Sender Bedeutung Enth
136. L Init L Mutate 0 Create L system production string L System int recursion Parse production string and create geometry L draw Add groundplane Get comline opt g amp found temp if found Ground plane Close datafile De allocate the memory allocated for the rules L Finish Message Mn MM dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd JM Modified Part of Jan Derer Computation of the best Cameraposition and saving it into the info txt file for LV2POVID createINFOTXT dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd MU dd dd dd dd dd dd dd dd dd dd dd dd dd dd THI 1 71 void L System int N This function executes the L system int i Process_start2 lev 1 Execute N productions in the current L system for i 0 i lt N itt Process_update2 i Replace_Once Message Size of string ld chars n strlen Object_Str 190 H Quelltexte Process_end2 void Replace_Once This function executes one production in Object_Str given the rules long i 0 New_Len 0 int j Rule bool Rule_Found New_Str 0 0 Clear the new object string while i lt Obj_Len Rule_Found false Find the rule with the LONGEST predecessor that applies for j 0 j lt N Rules j if Rules j gt Rule_Applies i if Rule Found Rule
137. LE LOGFile NULL Zeiger auf die LOG Datei zu Speicherung der Meldungen von Lparser char buffer MAX COMLINE Zwischenspeicher 7 line MAX_LS_LINE_LENGTH Zwischenspeicher f r eine Zeile der LOG Datei int linecounter 0 Z hler f r die gelesenen Zeilen 7 strcpy info filename strlen info conv filename gt 0 info conv_filename info filename Pr fe den Inhalt der LS Datei if checkingLSFile lt 0 return 1 Es wird das vorhandensein der Lparser Datei gepruft Ef if LOGFile fopen lparser exe rb fprintf stderr ERROR Lparser cannot be found n return 1 fclose LOGFile Ausfuhren von Lparser mit den entsprechenden Parametern sprintf buffer Lparser vc x 2f y 2f z 2f s gt lparser log info x info y info z info filename system buffer Lese die LOG Datei ob ein Fehler aufgetreten ist und melde dies if LOGFile fopen lparser log rt fprintf stderr ERROR Lparser log doesn t exists n return 1 while feof LOGFile linecounter t fgets line MAX LS LINE LENGTH LOGFile if line 0 E amp amp line 1 r amp amp line 2 r fprintf stderr ERROR There is a error in rule d n linecounter 11 return 1 fclose LOGFile return 0 KR RK Ck kk kk 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 ck ck ck kk kk Funktionsname Lv2povid R ckgabewert Ty
138. Larens Lapre modified by Ken Kopp FILE In File char name max file Temp Str MAX LIN LEN boolean found Read Ok int i Len N Vars double Prob char Pred Ptr Sucoc Ptr Cond Ptr char Prev Ptr Next Ptr char Pred PRED L Succ SUCC L Cond COND L char Prev PRED L Next PRED L char CName Str CVal Str char Num Str MAX NUM LEN char Var List MAX VARS VAR L Seed the random number generator srand time NULL Initialize memory Stack s rec malloc sizeof s rec max stack pstack p rec malloc sizeof p rec max stack if stack NULL pstack NULL User error Not enough memory to startup Get file name Get comline filename name if strstr name ls NULL strcat name ls In File fopen name rt if In File User_error Cannot find file s name Message L system file s n name Preprocessor statements such as define and ignore strcpy Ign Chars FfZz Get Line Temp Str In File while Temp Str 0 if strstr Temp Str define NULL First find the name of the constant CName_Str strchr Temp_Str CName_Str t Next find the value of the constant If it is preceded by a put parentheses around it so it won t fool the expression evaluator CVal_Str strchr CName_Str CVal_Str 1 0 if CVal_Str 0 Len strlen CVal_Str for i
139. Len i gt 0 i 200 H Quelltexte CVal_Str i CVal_Str i 1 CVal_Str 0 CVal_Str Lent 1 CVal Str Len 2 yn Ag Insert the constant into the lists of constants strcpy Const Names N Const CName Str strcpy Const Vals N Const CVal Str N_Const Message Constant else if strstr Temp_Str ignore NULL oe S s n CName_Str CVal_Str Find the list of characters that are to be ignored CVal_Str strchr Temp_Str CVal_Strt strcpy Ign_Chars CVal Str Message Ignored s n Ign Chars Get_Line Temp_Str In_ File Recursion level Sscanf Temp Str Sf amp recursion Get_comline_opt r amp found Temp_Str Overrule if found Sscanf Temp Str f amp recursion Message Recursion depth g n recursion lev s16 recursion fraction recursion r32 lev if fraction gt zero Check for fraction levrr growing TRUE else growing FALSE Basic angle Get_Line Temp_Str In_ File sscanf Temp_Str f amp ang Get_comline_opt a amp found Temp_Str Overrule if found sscanf Temp_Str f amp ang Message Basic angle Sonn ang ang ang 180 0 3 141592654 Thickness Get_Line Temp_Str In_ File Sscanf Temp Str Sf amp thick Message Thickness s ggo thick thick 100 0 Initial Axiom Get Line Temp Str In File for
140. Lichtposition ver ndern lassen Damit die Auswirkungen bes ser verst ndlich sind kann ein 3D Kubus zugeschaltet werden indem auf 3D Ansicht ge klickt wird Der 3D Kubus ist nur exemplarisch und soll keine Vorschau der sp teren Grafik darstellen Er ist lediglich eine Vorschau ber die Auswirkungen der Schieberegler und der Umpositionierung der Licht und Kameraposition Wenn das Fenster mit dem 3D Kubus ge ffnet wird k nnen an den Schiebereglern andere Werte eingestellt werden der 3D Kubus aktualisiert sich von selbst mit den neuen Werten Anzumerken ist dass die Lichtposition relativ zur Kameraposition ist d h wenn die Kamera verschoben wird verschiebt sich auch automatisch das Licht All diese Einstellungen k nnen auch ber das Men Einstellungen und CFG Datei vor genommen werden Zus tzlich zu den schon bekannten Einstellungen kann der Pfad von POV Ray und QuietPOV eingestellt bzw gesucht werden Diese Einstellungen werden in einer Textdatei namens LPROCESS CFG festgehalten Sollte die Datei gel scht sein oder einen ung ltigen Wert enthalten dann meldet sich Visual L und erzeugt eine neue CFG Datei oder benutzt Standardwerte Wenn Sie auf den Button Bild erzeugen klicken wird im Hintergrund eine andere Applika tion namens Lprocess gestartet diese wiederum startet weitere Programme um das Bild zu erzeugen Lprocess selbst und die Programme Lparser und LV2POVID befind
141. M LEN 3 char Num Str MAX NUM LEN First create a new string of the form Addr strcpy Addr Str strcat Addr Str itoa Addr Num Str 10 strcat Addr Str Replace all occurrances of the variable with its address Replace Str Search Str Var Addr Str void Repl_Vars_WCards char Dest char Src char Var List MAX VARS VAR L int N Vars JE eee eee Function Replace Variables with Wildcards cen This function replaces all variables in Src with 4 and stores the resulting string in Dest Note Src is unchanged It also stores the variable names in Var List beginning with the value of N Vars This value is incremented each time a variable is found and placed in Var List This function is used to initialize a rule s predecessor so that is is easy to see if matches the object string char Temp Str int Var Len Dest 0 0 while strlen Src gt 0 Temp_Str strchr Src if Temp_Str NULL No more variables found strcat Dest Src Srce strlen Src else strncat Dest Src strlen Src strlen Temp_Str 1 Find variables separated by commas until a is found do Temp_Str Var_Len strcspn Temp_Str itf Var Len 0 4 strcat Dest Either a or a strncat Dest amp Temp Str Var Len 1 Copy this variable name to Var List and increment N Vars strncpy Var List N Vars Temp Str Var Len Var List N
142. Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TMDIChildMain CamYTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamYTrack Position 0 then begin CamYLabel Caption 0 Info CamY 0 end Ansonsten berechne den neuen Wert else begin CamYLabel Caption FloatToStrF CamYTrack Position 0 5 ffFixed Info CamY CamYTrack Position 0 5 end end 1 1 H Quelltexte Methodenname CamZTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TMDIChildMain CamZTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if CamZTrack Position 0 then begin CamZLabel Caption 0 Info CamZ 0 end Ansonsten berechne den neuen Wert else begin CamZLabel Caption FloatToStrF CamZTrack Position 0 5 ffFixed 1 1 Info CamZ CamZTrack Position 0 5 end end innen u ETUI U U TE Methodenname LightXTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Kompone
143. Polygon das bei der graphischen Interpretation eine geschlossen Flache darstellt Damit lassen sich zum Beispiel Bl tter darstellen Mit dem Ausrufezeichen kann der Astdurchmesser vermindert werden und mit dem Zeichen kann die Farbe gesteuert werden Es gibt aber keinen standardisierten Satz an Kommandos Daher k nnen weitere Kommandos die nicht zum besprochenen Vorrat der Kommandos z hlen in Applikationen verwendet wer den Im folgenden Beispiel werden einige dieser propriorit ren Kommandos benutzt Die Ap plikation die diese 3D Grafik erstellt hat hei t L System 4 und ist auf der CD ROM mit ent halten Zur Interpretation dieser zus tzlichen Kommandos sei auf die Hilfe Datei verwiesen Beispiel 2 16 f r einen mit L System 4 LS4 erzeugten Baum Es sei folgendes parametrisiertes PDBOL System gegeben welches eine 3D Grafik er zeugt die in Abbildung 2 14 zu sehen ist G 48 C D F L T c f 8 1 2 amp 8 _ gt U LI P T gt CCA A CBD gt 94 CBD gt 132 BD B gt amp CDCD A D gt gG0 LgG0 Lg50 Lg50 Lg 50 Lg 50 L C gt 95 5 tF F gt 125 F 8 L gt f 200 c 8 30 f 200 120 200 120 f 200 LSR LP 25 ol gt j o c 12 T Des Weiteren soll 5 20 sein und der Astdurchmesser 50 F r die Abbildung 2 14 wurden 15 Ableitungsschritte durchgef hrt Das Wort enth lt 1 337 641 Zeichen und 17 494 3D Primitive 33 2 Theoretische Grundlagen von L Systemen
144. Position zweier passender Marker Fraktale Eine weitere Anwendung finden L Systeme in der Beschreibung und graphischen Inter pretation von Fraktalen So erzeugt ein L System mit dem Axiom o F F F F und der Produktion P F gt F F F FFF F F F eine quadratische Koch Insel Dabei wird ein Winkel von 6 90 angenommen PL90 Die Arterien eines Menschen sind e benfalls fraktalartig aufgebaut In Za01 werden Arterien mit L Systemen modelliert Gebirge und Gegenst nde ELSYS ist ein Programm das f r Sun Workstations entwickelt wurde Es enth lt einen L Compiler ein Grafikmodul und ein User Interface Der L Compiler bersetzt eine Sprache in eine Grafiksequenz f r das Grafikmodul Dabei besteht die Sprache aus einer Mischung aus Hochsprache L Systemen und Erweiterungen f r L Systeme So k nnen Gebirge auf der Basis von Fraktalen erzeugt werden die mit L Systemen beschrieben wurden GR92 Kreaturen und Gegenst nde Hornby nutzt L Systeme in Verbindung mit den Genetischen Algorithmen Dabei wird ei ne Initialpopulation erzeugt die aus Produktionen von L Systemen besteht Dieser Popula tion wird mit Hilfe von Genetischen Algorithmen und deren Operatoren ver ndert So werden neben Kreaturen Gegenst nde wie Tische oder Bauanleitungen auf der 2D Ebene f r Roboter entwickelt HLPO1 HPO1a HPO1b HPO1c HPO2 St dtebau Das Programm City Engine wird zur kompletten Entwicklung von St dten genutzt wobei L Systeme zur Besc
145. RS P Af RIS A CES NC EE BEN ME ER EEE EIER SN Methodenname DelBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Die Methode wird aufgerufen wenn der Button zum l schen einer einzelnen Produktion geklickt wird procedure TMDIChildMain DelBtnClick Sender TObject begin Ist eine Produktion ausgew hlt worden if ProductionList ItemIndex 1 then begin 243 H Quelltexte dann l sche diese ProductionList Items Delete ProductionList ItemIndex Da das L System ver ndert wurde wird der Button zum speichern freigegeben und das L System als modifiziert gekennzeichnet SaveBtn Enabled true if Caption length Caption lt gt then Caption Caption end end ee en ee ee ee ee ee ee P Methodenname AddBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Die Methode wird aufgerufen wenn eine Produktion hinzugef gt werden soll und auf den Button Hinzuf gen geklickt wird procedure TMDIChildMain AddBtnClick Sender TObject var production String Produktion aus der Eingabemaske new_production String Formatierte Produktion f r die Produktionsliste msg String Nachricht fur Fehlermeldungen die ausgegeben werden i integer Laufvariable begin Pr fe ob in allen Editierfelder etwas eing
146. SECTION n2 nENTITIES n else if dxf2 strcpy S output dxf Message Dxf file TEEN S y volume_file fopen S wt if volume_file User_error Cannot open file s S Buffer IO volume_file 0 fprintf volume_file 999 nL System Parser Mutator n fprintf volume_file 999 n3d Faces List n fprintf volume_file O nSECTION n2 nENTITIES n else if dxf3 strcpy S output raw Message Raw file ON EE volume_file fopen S wt if volume_file User_error Cannot open file s S Buffer IO volume_file 0 167 H Quelltexte else if vrml strcpy S Message VRML file volume file if volume file User error Cannot Buffer IO volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fopen S output wrl s n wt S open file 0 ss S VRML V1 0 ascii n nSeparator n tShapeHints n t tvertexOrdering UNKNOWN_ORDERING n t tshapeType UNKNOWN_SHAPE_TYPE n t tfaceType CONVEX n t tcreaseAngle 0 5 n UNE ND tDirectionalLight n t tdirection 0 3 0 6 0 9 n vrml header fprintf volume file t n else default output in Lviewer VOL format strcpy S output vol Message D
147. Str 1 int Rule Type Do Replace long i This function executes a rule replacement at position i in Object Str char Succ Str SUCC L char Rem Str SUCC L char Num Str MAX NUM LEN float Arg List MAX VARS char Suc Ptr char Tmp Ptr int N Paren double Rnd double rand 100 100 int j 0 First randomly choose the successor we will use while Probs j Rnd j Next store any necessary numbers in the argument list Find N Args amp Object Str i Prev Len Arg List N Param Next create a successor string with the addresses replaced with numbers Repl Addr Args Succ j Succ Str Arg List Next evaluate any expressions within the successor string Suc Ptr Suco Str Tmp Ptr Succ Str while strlen Suc Ptr 0 Suc Ptr strchr TImp Ptr if Suc Ptr NULL break while Suc Ptr Tmp Ptr Suc Ptr N Paren 0 while Suc Ptr amp amp Suc Ptr N Paren if Suc Ptr N_Parent if Suc Ptr N Paren Suc Ptr tt Lee 213 sprintf Num Str g 0 Expr Eval Tmp Ptr 0 Suc Ptr Tmp Ptr 1 strcpy Rem Str Suc Ptr Tmp Ptr 0 strcat Succ Str Num Str strcat Succ Str Rem Str Tmp Ptr strlen Num Str Suc Ptr Tmp Ptr Suc Ptr tt Tmp Ptr Suc Ptr Finally add the replacement string to the end of the new string strcat New_Str Succ_Str Re
148. System Die Definition schlie t nicht aus dass SOL Systeme einem DOL System entsprechen k nnen Definition 2 23 f r ein SOL System PL90 Ein SOL System ist ein geordneter Quadrupel G QUE 0 7 Das Alphabet X das Axiom o und die Menge der Produktionen P sind definiert wie in einem OL System Die Funktion 7 P 0 1 bezeichnet als Wahrscheinlichkeitsverteilung bildet die Menge der Produktionen auf die Menge der Produktionswahrscheinlichkeiten ab Man kann davon ausgehen dass f r alle Symbole a X die Summe der Wahrscheinlichkei ten aller Produktionen mit der gleichen linken Seite gleich eins ist Beispiel 2 10 f r stochastische Produktionen Es werden Beispiele f r Produktionen mit Angabe von deren Wahrscheinlichkeit ge geben 0 25 0 25 0 5 a aba aa a bbba 1 b abc 0 85 0 15 c ccba c gt E 20 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 3 8 Parametrisierte L Systeme Parametrisierte OL Systeme bieten die M glichkeit bestimmte Regeln nur dann auszuf hren wenn eine bestimmte arithmetische Bedingung erf llt ist Dabei muss gesichert sein dass zu jedem Zeitpunkt eine Ableitung f r jedes Symbol in X existiert Damit ist ein echtes para metrisiertes L System nie deterministisch Wenn es nur eine Produktion f r jedes Symbol in amp gibt dann muss zwangsweise der Bedingungsteil immer wahr sein Damit w re es einem DOL System gleichzusetzen Die Definition schlie t
149. Systeme werden hierbei auch die Turtle Interpretation darge stellt mit denen es m glich ist ganze B ume und andere komplexe Objekte zu visualisieren Nach einer kurzen Einf hrung in die Genetischen Algorithmen und in die Genetische Pro grammierung werden die Mutationsm glichkeiten von L Systemen vertieft betrachtet Es zeigt sich dass gerade die Genetischen Algorithmen Evolution re Algorithmen f r L Systeme von vielen Autoren bevorzugt verwendet werden und dass die Anzahl der Mutati onsm glichkeit sehr hoch ist Im Zusammenhang mit den Anwendungsm glichkeiten wird auch vertieft auf die Evolutions schleife und auf deren Anwendungsm glichkeiten eingegangen Aus theoretischer Sicht zeigt der Teil der Bilderzeugung einen hohen Freiheitsgrad deshalb l sst er sich in viele Teilberei che aufteilen So kann man beispielsweise nicht nur die Grammatik mutieren lassen sondern auch die Interpretationsvorschrift der Grammatik Da im Rahmen einer Diplomarbeit nicht alle Module implementiert werden k nnen wird auf bestehende Softwarepakete zur ckgegriffen Dabei ist die Wahl auf das Softwarepaket Lpar ser Kombination mit POV Ray gefallen Beim Entwurf der Fassade zeigt sich dass das Softwarepaket Lparser viele Schw chen und Fehler beinhaltet Deshalb wird auf eine externe Weiterentwicklung von Lparsers zur ckge griffen mit der sogar kontextsensitive und parametrisierte L Systeme verarbeiten werden k nnen Trotzdem muss das Programm LView
150. Systemen so dass einige Buchstaben doppelte Bedeutungen aufweisen Beispielsweise hat Rozenberg das S fiir symmetrische L Systeme verwendet Das S steht aber auch ftir stochasti sche L Systeme 2 2 3 11 Kombination von L Systemen An einigen Beispielen wurde bereits gezeigt dass sich die L System Erweiterungen TOL EOL und Beschr nkungen DOL POL miteinander kombinieren lassen Dabei sind fast alle erdenklichen Kombinationen m glich zum Beispiel ETOL System PD2L System oder PSTEIL System Nur sehr wenige L Systeme lassen sich nicht mit anderen kombinieren weil es deren Defini tion nicht zul sst Ein Beispiel sind die Timed L Systeme In ihrer Definition werden diese genauer als Timed DOL Systeme definiert Die Buchstaben der einzelnen L Systeme m ssen nicht in einer bestimmten Ordnung stehen So kann ein L System PTOL System oder auch TPOL System hei en Es ist aber blich dass die Symbole O 1 2 bis I vor demL stehen Sollten Tabellen genutzt werden dann k me als N chstes ein T links vom Kontext Wenn Extentions verwendet werden dann folgt nun ein E links vom T oder links vom Kontext Links au en steht ein P wenn es propagierend ist gefolgt von einem D wenn es deterministisch ist Alle anderen Symbole liegen in der Regel zwischen den Bereichen die von den Zeichen P und D sowie E T und Kontext gebildet wer den Abschlie end werden die besprochenen L Systeme noch einmal in einer bersichtstabelle zusammengefasst
151. TB p Li Li Li Li Li Auflistung aller Methoden f r die TObject TObjec TObject TObject TObjec proced proced procedure procedure procedure procedure procedure procedure procedure procedure procedure procedure procedure procedure ure ure Label Label mage Button TSaveDialog TButton TTrackBar TTrackBar TTrackBar TLabel TLabel TLabel k TrackBar k TrackBar k TrackBar T Label ls Label l TLabel TGroupBox TSplitter anel TSplitter anel TButton anel E ListBox anel TSplitter anel Button utton Button anel Panel abel abel abel abel abel Label Label xtEdit TEdit tEdit TEdit t TEdit dit TEdit Es TEdit utton Panel List TListBox tn TButton n TButton Panel Panel Panel Panel TSplitter Button TButton TButton Button Label Button FormClose Sender ButtonlClick Sender DelBtnClick Sender AddBtnClick Sender EditBtnClick Sender RecursEditChange Sender RecursEditKeyPress Sender TObject TObjec CheckBtnClick Sender SaveBtnClick Sender SaveAsBtnClick Sender RunBtnClick Sender DelAllMsgBtnClick Sender Direct3DBtnClick Sender CamXTrackChange Sender Ereignisverarbeitung var Action t t TObject TObject var Key Char t TObject TObject TObject
152. TLabel Label3 TLabel Label4 TLabel Label5 TLabel Label6 TLabel Label7 TLabel Label8 TLabel Label9 TLabel Labell0 TLabel Labelll TLabel BitBtnl TBitBtn Auflistung aller Methoden fur die Ereignisverarbeitung procedure BitBtnlClick Sender TObject procedure FormClose Sender TObject va private Private Deklarationen public Public Deklarationen end var CondForm Die Instanz von Units erreichbar TCondForm r Action TCloseAction TCondForm ist ffentlich f r alle anderen H Quelltexte SR dfm Methodenname BitBtnlClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Formular wenn auf Schlie en gelickt wird procedure TCondForm BitBtnlClick Sender TObject begin Close SchlieBe das Fenster end 263225250 S252 S252 539 552529 S32 EEN E SSS SSS SRS SSS SS SS SSS STDS SS SS SSS TEE Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TCondForm FormClose Sender TObject var Action TCloseAction begin CondActive false Signalisiert dass keine Instanz mehr gibt Action caFree Speicher freigeben end
153. V Sonstiges Enth lt Imogene 123 H Quelltexte H Quelltexte Ouelltexte von Lprocess Dateiname Lprocess c BORK RR kk kk kk kk kk kk kk kk kk kk KK 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A ck ck ck I I Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version l3 Modulename Lprocess c Modulversion L350 Modulbeschreibung In dieser Datei ist die main Funktion enthalten f r das Programm Lprocess KCKCKCk Ck CkCk IR 2 e A 2 2 22 2 2 2 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 222 2 22 2 2 ke ke ke ek S KOR RR 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 kkk kkk k INCLUDE DATEIEN FRR AK IR Ck RR E e 22 2 2 2 2 2 22 2 2 202 2 2 22 2 22 2 2 5 k k finclude lt stdio h gt finclude globals h finclude com line h finclude cfg file h finclude lparser h include pov h finclude misc h KKK 2 5 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A IA I I PROTOTYPEN KCKCKCkCkCkCk IR A 2 2 2 2 2 IR 2 22 2 2 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 extern void ex tern extern extern ex tern extern ex tern extern ex tern extern extern ex tern Q har har har har har har oid oid har har har aaas lt saoaoaoaa print_Welcome void checkingComline int argc char argv chec
154. _SDK_VERSION Falls Erzeugung fehlschl ge gib eine Fehlermeldung aus if lpd3d nil then FatalError 0 Fehler beim Erstellen von Direct3D Datenstrukturen mit null berschreiben verhindert Seiteneffekte ZeroMemory d3dpp sizeof d3dpp ZeroMemory light sizeof light ZeroMemory material sizeof material Definiere Einstellungen f r Direct3D with d3dpp do begin SwapEffect D3DSWAPEFFECT_DISCARD L schen alter Frames hDeviceWindow Handle Handle vom Formular tibergeben BackBufferCount 1 Ein Backpuffer EnableAutoDepthStencil TRUE Z Buffer Aktivierung AutoDepthStencilFormat D3DFMT_D16 Windowed TRUE Im Fenstermodus anzeigen hr lpd3d GetAdapterDisplayMode D3DADAPTER DEFAULT d3ddm Falls Erzeugung fehlschl ge gib eine Fehlermeldung aus if failed hr then FatalError hr Fehler beim Ermitteln des Dislaymodes BackBufferFormat d3ddm Format end Erzeuge Direct3D Device hr lpd3d CreateDevice D3DADAPTER_DEFAULT D3DDEVTYPE_HAL Handle Handle vom Formular bergeben D3DCREATE_SOFTWARE_VERTEXPROCESSING Vertexverarbeitung 226 H Quelltexte von der Software Hardwarebeschleunigung deaktiviert d3dpp lpd3ddevice Falls Erzeugung fehlschl ge gib eine Fehlermeldung aus if FAILED hr then FatalError hr Fehler beim Erzeugen des 3D Device end Methodenname D3DShutdown Methodenbeschreibung Wird zum been
155. _Str we must move through Object_Str until we reach the end of that number Remember the digits 0 9 or characters F Tei and might be part of a number if isdigit Obj Ptr strchr t e Obj Ptr NULL Tst_Pos Dir Tst_Ptr Dir while isdigit Obj Ptr strchr e Obj_Ptr NULL Obj Pos Dir 194 H Quelltexte Obj_Ptr Dir Block_Len if Tst_Pos lt 0 I Block_Len 1 Her eg gt Let Len L3 return true else return false return false void Find_N_Args char Search_Str Function Search_Str A 1 2 char Num_Str MAX_NUM_LEN float Arg_List Find N Arguments This function finds N_Args numbers in Search_Str numbers must be enclosed in parentheses then the arguments returned will be 1 and 2 isdigit Search_Str j Search_Str int N_Args and stores them in Arg List and separated by commas For example S WE strchr t e Search Str j ji Act mee J while i lt N Args Search Str strchr Search Str while Search Str Search Stitt j 0 while NULL j strncpy Num Str Num Str j NO Arg_List i Search Str j void Repl Addr Args char Search Str Function Arg List x For example will be A 1 2 char Rpl Ptr Search Str char Tmp Ptr Search Str char Num Str MAX NUM LEN char Result Str Replace A
156. _production String String var substr String Zwischenspeicher pred String Enth lt den Produktionskopf con String Enth lt den Bedingungsteil indexl index2 integer Zwischenspeicher begin result Initialisierung indexl Pos lt production Sucht die Position des linken Kontext substr Copy production 1 indexl 2 Kopiert den linken Kontext heraus Ist im linken Kontext ein Wildcard und dahiner befinden sich Zeichen dann gib eine Fehlermeldung aus if Pos substr gt 0 and length substr gt 1 then begin result Der linke Kontext enth lt neben dem Zeichen noch weitere Zeichen Exit end Ist im linken Kontext eine runde Klammer dann gib eine Fehlermeldung aus if Pos substr 0 and Pos substr gt 0 or Pos substr gt 0 then begin result Im Kontext sind keine Klammern erlaubt Exit end Wenn kein Wildcardsymbol enthalten ist dann formatiere den String if Pos substr 0 then new production substr lt index2 Pos gt production Sucht die Position des rechten Kontext pred Copy production indexl 2 index2 3 indexl Kopiert den Produktionskopf heraus Pr ft ob eine Klammer von der Parameterliste fehlt und gibt eine Fehlermeldung aus if Pos pred gt 0 xor Pos pred gt 0 then begin result Es fehlt eine Klammer Exit end indexl Pos productio
157. a sketchbook Issketchbook download LS 20Ske tchBook 2001b zip Stand 06 2004 L studio Version 3 1 fiir Windows erzeugt 3D Szenen aus L Systemen Kommerzielle Software http www cpsc ucalgary ca Research bmv lstudio lstudio demo zip Stand 06 2004 Lworld Version 7 0 fiir Windows erzeugt Animationen aus L Systemen Freeware http www ifi unizh ch noser Lworld LworldWinPCv7 zip Stand 06 2004 PlanD f r Windows Entwicklungssystem f r L Systeme Freeware http www imn htwk leipzig de sdietzel planD zip Stand 06 2004 POV Ray Version 3 5 fiir Windows Ray Tracer Freeware http Www povray org redirect www povray org ftp pub povray Official Wind ows povwin35 exe Stand 06 2004 OuietPOV Version 1 1 f ir Windows GUI Extension fiir POV Ray Freeware http www throwable com dreampeach download QuietPOV QuietPOV install exe Stand 06 2004 RayTraced Evolution Version 1 0b3 fiir Windows erzeugt 3D Szenen aus L Systemen Freeware http www rz tu ilmenau de juhu GX RTEvol win rte zip Stand 06 2004 120 F Bedienungsanleitung f r Visual L F Bedienungsanleitung f r Visual L Voraussetzung f r das Benutzen der Software ist eine Grafikkarte die DirectX 8 unterst tzt sowie eine installierte Version von POV Ray 3 5 und OuietPOV F r den ersten schnellen Einstieg in die Software ffnen Sie eine bestehende LS Datei indem Sie in der Symbolleiste auf ffnen klicken oder ber das Men Date
158. aa 4 Ableitungsschritt b Y Y Y Y v n o e c v lt i lt 1_ c 41 0 410 v L c DR L v c L v D o v 4 e Di v lt lt lt L v D ao q v gt aaaabaaaa Abbildung 2 11 Signalverlauf in einem PIL System 2 2 3 10 Weitere L Systeme Die bisher besprochenen L Systeme stellen nur ein Bruchteil der L Systeme dar die noch existieren Einige der noch nicht besprochenen L Systeme sollen hier lediglich angerissen werden um die M chtigkeit und die Vielfalt der L Systeme zu zeigen Map L System Map L Systeme wurden entwickelt um die Modellierung von zellularen Ebenen zu erm gli chen Indem man L Systeme mit planaren Graphen und Zyklen kombiniert k nnen komplexe topologische Strukturen von Zellen modelliert werden Mit Hilfe des Graphen erh lt man eine Karte in der die Kanten Zellw nde darstellen und Regionen die Zellen Dabei gilt dass keine Inseln innerhalb einer Region existieren d rfen Kanten selbst k nnen auch Zyklen bilden PL90 23 2 Theoretische Grundlagen von L Systemen und deren Evolution Timed L System Aus der Sicht der Computergrafik interessiert man sich nicht nur ftir Bilder sondern auch fir Animationen Sie wer
159. aba a A Satz 2 1 tiber den Zusammenhang der L Systeme Der gerichtete Graph soll folgenden Sachverhalt zeigen F PDOL c F DOL F DOL lt F OL F PDOL c F POL und F POL c F 0L F OL Z F DOL F POL F PDOL Zwei Sprachfamilien die nicht iiber einen Pfad erreichbar sind sind zueinander in kompatibel aber nicht disjunkt Beweis HR75 Auswirkungen Ein POL System ist ein lebendes System das hei t kein Zeichen kann durch die Anwendung einer Produktion aus dem Wort gel scht werden F r einen fadenf rmigen Organismus hei t es dass Zellen sich nur teilen k nnen oder bestehen bleiben Keine Zelle kann in einem le benden System absterben Der Organismus entwickelt sich immer weiter 13 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 3 4 L Systeme mit Terminalzeichen Ein E vor einem EOL System steht f r Extension Die Extension in solch einem OL Systeme ist die Einf hrung von Terminalzeichen Durch die EOL Systeme erh lt man eine Schnittstelle zu den Sprachen der Chomskyhierarchie Im Ge gensatz zu den Sprachen der Chomskyhierarchie k nnen Terminalzeichen weiter abgeleitet werden Des Weiteren ist ein Wort in einer Sprache nur enthalten wenn in einem Ableitungs schritt alle Zeichen des Wortes Terminalzeichen sind Definition 2 10 f r ein EOL System HR75 Ein EOL System ist ein Ouadrupel der Form G X P o A wo G o P o ein OL System ist und A c X Die Sprache von G
160. ach einem Axiom gesucht end end end An dieser Stelle wird nach einem g ltigen Startaxiom gesucht if state 3 then begin 259 H Quelltexte state 4 Erh he den Zustand um danach Produktionen zu verarbeiten Enth lt die Zeichenkette Symbole die auf eine Produktion hinweisen if Pos lt 8 gt 0 or Pos gt Si gt 0 or Pos 2 0 or Pos s gt 0 then Child MessageList Items Add Kein Axiom gefunden else begin Child AxiomEdit Text s Wenn nicht dann bernehme den Ausdruck als Startaxiom continue end end An dieser Stelle werden die Ausdr cke nach einer g ltigen Produktion gepr ft if state 4 then begin Inc errorLine t checkLSLine s Pr fe die Zeichenkette ob es eine g ltige Produktion ist wird keine Fehlermeldung zur ckgegeben dann bernehme den String als Produktion if t then Child ProductionList Items Add s Enth lt der String eine Fehlermeldung dann gib diese aus else begin Child MessageList Items Add Fehler in Regel IntToStr errorLine Child MessageList Items Add t end end end Ende der Verarbeitungsschleife CloseFile f Schlie e die Datei setOptionsForChild Child Setze die Einstellungen fiir das Kindfenster aus der Info Struktur end Te a ES EA CH CYH GGH CHWYS GE eR EE HE HL GHA HR E NN GG NE a Ee ne Methodenname testingCondition Ruckgabewert Typ string Bedeutung G
161. achgeschaut ob ein Wert vorliegt 7 if info height 0 temp getValueFromList opts Height if temp NULL fprintf stderr ERROR There exists no value for Height in LPROCESS CFG n n return 1 else if info height atoi temp lt 1 fprintf stderr ERROR Illegal Value for Height in LPROCESS CFG n n return 1 136 H Quelltexte Wurde ber die Kommandozeile keine Breite gesetzt dann wird in der CFG Datei nachgeschaut ob ein Wert vorliegt if info width 0 temp getValueFromList opts Width if temp NULL fprintf stderr ERROR There exists no value for Width in LPROCESS CFG n n return 1 else if info width atoi temp lt 1 fprintf stderr ERROR Illegal Value for Width in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable x mit dem Wert aus der CFG Datei temp getValueFromList opts CamX if temp NULL fprintf stderr ERROR There exists no value for CamX in LPROCESS CFG n n return 1 else if info x atof temp 0 0 fprintf stderr ERROR Illegal Value for CamX in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable y mit dem Wert aus der CFG Datei temp getValueFromList opts CamY if temp NULL fprintf stderr ERROR There exists no value for CamY in LPROCESS CFG n n return 1 else if info y at
162. agen von L Systemen und deren Evolution Ausgangsproduktion Inversion Abbildung 2 29 Inversion einer Produktion Deletion Bei der Deletion wird ein zusammenh ngender Teil der Produktion aus mehreren Symbolen entfernt Eckige Klammern k nnen mitgel scht werden wenn es paarweise geschieht um sicherzustellen dass das generierte Wort g ltig ist Beim Anwenden von Deletion auf einen Argumententeil eines Symbols ist darauf zu achten dass der Argumententeil g ltig bleibt Ausgangsproduktion Deletion Abbildung 2 30 Deletion bei einer Produktion Duplication Ein zusammenh ngender Teil der Produktion wird dupliziert und an einer zuf lligen Stelle der Produktion eingef gt Auch hier ist nur das paarweise Duplizieren von eckigen Klammern zul ssig um die G ltigkeit des Wortes zu garantieren Das Duplizieren eines Argumententeils und das Einf gen in einem Argumententeil ist nicht ratsam weil dadurch die komplette Pro duktion ver ndert werden m sste 49 2 Theoretische Grundlagen von L Systemen und deren Evolution Ausgangsproduktion Duplication Abbildung 2 31 Beispiel f r Duplication an einer Produktion Translocation Hierbei wird ein zusammenh ngender Teil der Produktion herausgel st und an einer zuf lli gen Stelle in der Produktion eingef gt Auch hier ist nur das paarweise Verschieben von ecki gen Klammern erlaubt um die G ltigkeit des Wortes zu garantieren Eine Translocation von ei
163. ahlen ver ndert werden k nnen oder eine Variable durch eine andere ersetzt werden kann Es sei daran erinnert dass die Variablen in einer Produktion benutzt werden m ssen die als Formalparameter angegeben wurden ansonsten w re die Produktion ung ltig Neben dem Ersetzen k nnen auch Argumententeile gel scht werden Dabei muss der Operator mit gel scht werden In den Argumenten k nnen auch neue Zahlen oder vorhandenen Variablen mit einem Operator neu hinzugef gt werden Das Ver ndern der Anzahl der Argumente ist eine problematische Aufgabe Denn dadurch m ssen alle anderen Produktionen die auf diese Produktion zugreifen entsprechend auch ver ndert werden Auch ein g ltiger Ausdruck f r die Formalparameter muss der ver nderten Produktion bergeben werden Das Einf gen L schen und Ersetzen kann man auch auf einzelne Symbole der Produktion beziehen Dabei ist zu beachten dass beim L schen auch der Argumententeil mitgel scht wird Beim Ersetzen eines Symbols durch ein anderes muss gesichert werden dass die Argu mente auch zur Produktion des Symbols passen Sollte ein Symbol in eine Produktion einge f gt werden dann muss auch ein entsprechender Argumententeil generiert werden Das Erset zen eines Symbols auf der linken Seite einer Produktion w rde in einem deterministischen System bedeuten dass zwei Symbole vertauscht werden und dass die jeweilige rechte Seite gepr ft werden muss wenn die Anzahl der Argumente beider Symbole ung
164. andos die in der Zeichenkette v enthalten sind wird das Bild von der Schildkr te gezeichnet Dies nennt man Turtle Interpretation von v im zweidimensionalen Raum Beispiel 2 14 f r die quadratische Koch Insel Pr86 Es sei folgendes PDOL System definiert G Del Fae P FOF F F FF F F F F F F F Des Weiteren sei 6 90 Es folgt die Turtle Interpretation fir die ersten drei gene rierten Worte Sie bildet die quadratische Koch Insel Abbildung 2 12 Die graphische Interpretation der ersten vier generierten Worte Um nicht nur eine starre Folge von aneinander gereihten Linien zu erhalten werden zur Turt le Interpretation zwei weitere Symbole hinzugefiigt Diese Symbole helfen Verzweigungs strukturen miteinzubeziehen In Anlehnung an Lindenmayer werden dazu die Symbole und hinzugenommen 29 2 Theoretische Grundlagen von L Systemen und deren Evolution Lege den aktuellen Zustand der Schildkr te auf den Stack Es k nnen auch optional weitere Attribute wie die Farbe oder Parameter wie d mit abgelegt werden Hole einen Zustand vom Stack und setze die Schildkr te an die Position die der Zu stand beschreib
165. ann Dazu f hrt Lindenmayer die Vektorpfeile ber der bergangs und Aus gabefunktion ein So gilt f r eine linksseitige Ubergangsfunktion und 6 f r eine rechtssei tige bergangsfunktion Analog gilt es auch f r die Ausgabefunktion A Lindenmayer f hrt auch die Verzweigung in sein Entwicklungssystem ein Um den Anfang einer Verzweigung zu beschreiben wird das Symbol verwendet Das Ende einer Verzweigung wird entspre chend mit beschrieben Li68b 2 2 3 bersicht der L Systeme Nachdem das urspr ngliche mathematische Modell vorgestellt ist werden jetzt die gel ufigen L Systeme erl utert Die L Systeme sind als Grammatik definiert und nicht wie urspr nglich als Automat Es werden die wichtigsten L Systeme besprochen und Beispiele f r deren Grammatik und Anwendung gegeben Einige spezielle L Systeme die nicht unbedingt inte ressant f r die Computergrafik sind werden nur angerissen 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 3 1 Basis L System Das OL System ist die Basis aller Kontextfreien L Systeme Dabei steht die Null nicht O der Buchstabe wie in vielen Quellen falsch angegeben vor dem L f r ein kontextfreies L System bzw f r ein L System ohne Interaktion Es folgen die wichtigsten Definitionen f r OL Systeme die auch f r alle anderen kontextfreien L Systeme gelten es sei denn es wird explizit darauf hingewiesen dass andere Definitionen f r ein anderes L System ge
166. asierten Beschreiben der 3D Szene Somit ist die graphische Oberflache ein Text Editor der auch zum Schreiben von Programmen genutzt werden kann weil der POV Ray Editor Syntax Highlighting ftir verschiedene Programmiersprachen enth lt Die Beschreibungssprache von POV Ray ist an C C angelehnt und ebenfalls case sensitiv Als Kommentarzeichen kann fiir einen Zeilenkommentar oder und als Kommentar tiber mehrere Zeilen genutzt werden sie sind also identisch mit den Kommentarm glichkeiten in CH Ebenfalls identisch mit C C ist die Bedeutung der include Anweisung Somit k nnen Be schreibungsteile ausgegliedert werden oder als allgemeine Modelle f r andere 3D Szenen genutzt werden Die declare Anweisung wird zum Beispiel benutzt um Konstanten zu defi nieren Die Anweisung kann aber auch benutzt werden um ein neues 3D Objekt zu definie ren Elemente einer 3D Szene werden stattdessen mit ihrem Namen aufgerufen und in ge schweiften Klammern n her spezifiziert Die Reihenfolge der 3D Elemente include Anweisungen und declare Anweisung spielt an sich keine Rolle Wenn aber auf den Inhalt einer Include Datei zugegriffen wird dann muss diese auch vorher deklariert sein Gleiches gilt f r Konstanten oder neue 3D Objekte die mit der declare Anweisung definiert wurden auch diese m ssen vor der Nutzung bekannt sein Um eine bessere und nicht fehleranf llige Struktur der Beschreibung zu erlangen sollten am Anfang alle include Anweisun
167. asisst rke zehn Zeichen Wird auf den Button Pr fen geklickt werden die Produktionen des L Systems auf m gliche Schw chen gepr ft Dazu z hlt beispielsweise eine ungleiche Anzahl von ffnenden und schlie enden sowie eckigen und geschweiften Klammern Au erdem wird gepr ft ob die angegebenen Parameter im Produktionskopf verwendet werden oder Parame ter die nicht im Produktionskopf enthalten sind Ebenfalls gepr ft wird ob f r ein Symbol keine oder mehrere Produktionen existieren Die Pr fung geht aber nicht so weit Bedin gungsausdr cke im Hinblick auf ihre G ltigkeit zu pr fen oder so weit zu kontrollieren ob zu jedem Zeitpunkt eine Produktion angewendet werden kann Deshalb wird auch eine Warnung ausgegeben wenn f r ein Symbol zwei Produktionen angegeben werden die einen unter schiedlichen Bedingungsteil aufweisen 6 2 3 2 Usability Studie Zu Beginn der Studie werden zwei Studenten der Informatik mit der Thematik konfrontiert Aufgrund ihres Vorwissen konnte ihnen der Theorieteil in weniger als zwei Minuten vermit telt werden Nach zehn Minuten waren die Studenten mit dem kompletten Programm vertraut Zus tzlich dazu werden noch f nf weitere Personen f r die Usability Studie herangezogen die ber unterschiedliche Erfahrung und ein unterschiedliches Vorwissen verf gen Das Er gebnis ist in Tabelle 6 9 zusammengefasst Alter Beruf 3D Computer Theorie Bild 3D Produktions Wissen Wissen erzeugen Einstellungen
168. assen sich dabei auch ohne die Verwendung einer objektorientierten Sprache realisieren 4 2 Einf hrung zum Entwurf Mit diesem Kapitel beginnt der Praxisteil der Diplomarbeit Hier liegt der Schwerpunkt auf dem Konzept dem Entwurf und der Implementierung der Software Die Entwicklung der Software unterteilt sich in zwei separate Bereiche Der erste Teil ist der bereits aus dem Theorieteil bekannte Prozess der Verarbeitung der Grammatik bis zur Bilder zeugung Dieser theoretische Ablauf ist in Abbildung 2 39 dargestellt Er wird im Verlauf des Kapitels diskutiert und als Fassade implementiert Auch auf die Programme die von der Fas sade aus bedient werden wird noch n her eingegangen Au erdem wird die Auswahl der Programme begr ndet und erl utert welche Probleme mit den jeweiligen Programmen ein hergehen Ziel ist es das entwickelte Programm in einen Evolutionsprozess einzubetten oder auch in andere Abl ufe zu integrieren die eine Visualisierung von L Systemen ben tigen Dabei soll die Fassade eine beherrschbare Anzahl von Optionen beherbergen ohne dass die bersichtlichkeit verloren geht Nachdem im ersten Teil der Softwareentwicklung eine Verarbeitungsschicht erstellt wurde findet im zweiten Teil die Entwicklung einer Oberfl chen Schicht statt Das Ziel der Oberfl chen Schicht ist das praktische Arbeiten mit dem Prozess aus dem ersten Teil nicht die Ein bettung in einen automatischen Prozess sein Die entwickelte graphische Obe
169. atafile SSNAN S volume file fopen S wb if volume file User error Cannot open file s S Buffer IO volume file 0 Fput bin u8 volume file u8 VersionID VOL header Fput bin r32 volume file r32 45 0 Fput bin r32 volume file r32 45 0 Fput bin r32 volume file r32 90 0 Fput bin r32 volume file r32 45 0 Fput bin r32 volume file r32 0 0 Fput bin sl6 volume file 0 Fput bin sl6 volume file 0 Fput bin sl6 volume file 100 Fput bin sl6 volume file 3000 Fput bin ul6 volume file ul6 0 stream format static void Close_datafile void Close the different open output files s16 i if pov_form3 Message Objects ld n polcount for i 0 i lt 8 itt fclose vf i return if dxfl dxf2 fprintf volume file O nENDSEC nO nEOF n if vrml fprintf volume file n Message Objects ld n polcount fclose volume file static void Save object s16 vertices s32 if 6 pov form2 return S16 polygons pov form3 S16 color Save an disc object from store to t i max case no real ef blb form in these is saved geometry 168 H Quelltexte polcount polygons if pov_form for t 1 t lt polygons t if Invalid_polygon t continue if poly_store t 2 poly_store t 3 3 vertex triangle fprintf volume file object triangle
170. bearbeitung 21 Kaufmann Keine Grundlagen 10 Min 2Min 2 Min 7 Min 23 Tischler Keine Grundlagen 5Min 4Min 2 Min 5 Min 22 Azubi Profi Profi 5Min 1Min 1 Min 3 Min 23 Student keine Fortgeschritten 5Min 1 Min 2 Min 2 Min 24 Abiturientin Keine Grundlagen 6 Min 1Min 2 Min 5 Min Tabelle 6 9 Ergebnis der Usability Studie Es kann gesagt werden dass die Einarbeitungszeit bis zu zehn Minuten betragen kann wenn das theoretische Vorwissen vorliegt Dabei hat sich gezeigt dass die Auswirkungen der Schieberegler durch den 3D Kubus sehr gut vermittelt werden k nnen 104 7 Zusammenfassung und Ausblick zu dieser Arbeit 7 Zusammenfassung und Ausblick zu dieser Arbeit 7 1 Zusammenfassung Das zentrale Thema dieser Diplomarbeit sind die L Systeme Demzufolge werden sie im the oretischen Teil ausfiihrlich behandelt Dabei werden die wichtigsten L Systeme und deren Erweiterungen ftir die Computergrafik vertieft betrachtet Des Weiteren werden die bespro chenen L Systeme grob klassifiziert Die wichtigsten L Systeme werden zur Klassifikation auf einen Zeitstrahl gesetzt Zus tzlich wird f r die Computergrafik ein Entscheidungsauto mat zu L Systemen entwickelt Eine weitere Klassifikation erfolgt ber die Einteilung der L Systeme in zwei Klassen sowie ber die Eingliederung in die Chomskyhierarchie Auf diese Weise entsteht ein berblick ber die Vielfalt und M chtigkeit dieser Grammatik Neben den theoretischen Aspekten der L
171. box zum ffnen einer Datei Ist Ausf hrung erfolgreich gewesen g ltige Auswahl einer Datei if OpenDialogl Execute then begin Soll der Inhalt in eine neue Datei gespeichert werden if MessageDlg Soll eine neu Datei angelegt werden in der die Daten in Version 5 vorliegen 13 Andernfalls werden die Daten in der alten Datei uberschrieben mtInformation mbYes mbNo 0 mrYes then begin Rufe eine InputeBox auf damit der Anwender den Dateinamen eingeben kann s InputBox Dateiname eingeben Bitte geben Sie ein Dateinamen an in der die neuen Daten gespeichert werden soll Wenn kein Dateiname angegeben wurde dann Beende die Methode if s then Exit i length s Hole die L nge der Zeichenkette Priifte die Dateinamenerweiterung if not s i 2 and s i 1 l and s i s then SM SD shy PicName GetCurrentDir s Definiere den vollst ndigen Pfad FileOpenl Dialog FileName s Zuweisung des neuen Dateinamens t ExtractFileName OpenDialogl FileName Hole Dateinamen der zu konvertierenden Datei Definiere die Zeichenkette ftir den Kommandointerpreter JvCreateProcessl CommandLine lprocess c Copy t 1 length t 3 s end else begin FileOpenl Dialog FileName OpenDialogl FileName t ExtractFileName OpenDialogl FileName Hole Dateinamen der zu konvertierenden Datei 274 H Quelltexte Definiere die
172. c programme pov ray for windows v3 5 bin n fprintf CFGFile Path for QuietPOV n fprintf CFGFile QPOV c programme pov ray for windows v3 5 guiext quietpov n fprintf CFGFile Keep all files Files on off n fprintf CFGFile Files off n fprintf CFGFile Value to multiplicate with X to get the best cameraposition n fprintf CFGFile CamX 2 n fprintf CFGFile Value to multiplicate with Y to get the best cameraposition n fprintf CFGFile CamY 2 n fprintf CFGFile Value to multiplicate with Z to get the best cameraposition n fprintf CFGFile CamZ 2 n fprintf CFGFile Value to multiplicate with X to get the position for the lightsource n fprintf CFGFile LightX 1 n fprintf CFGFile Value to multiplicate with Y to get the position for the lightsource n fprintf CFGFile LightY 1 n fprintf CFGFile Value to multiplicate with Z to get the position for the lightsource n fprintf CFGFile LightZ 1 n fclose CFGFile 133 H Quelltexte BRK RK Ck kk kk kk kk kk kk kk kk KK KC KK KK KK KK KK KK KK KK KK ck k IK Funktionsname getValueFromList R ckgabewert Typ char Bedeutung Gibt den String eines bestimmten Wertes aus der Liste zurtick Liegt kein Wert mit der Bezeichnung vor wird NULL zur ck gegeben Parameter Typ struct CFGStruct Name Tist Bedeutung Zeiger auf ein Array mit den Wertepaaren aus der C
173. c void L_draw void 180 Quelltexte Process a production string and generate form vector pos end v fow upp lef u32 i max strlen Object Str r32 r a thick_l ang_l dis_l dis2_l trope_l s16 vcount pcount Jy char temp max_file next boolean found poly_on FALSE u32 star_num Echo production string Get_comline_opt 1 amp found temp if found Message Production iz for i 0 Object Str i 0 i Message c Object Str i Message n D Get user form if needed if user_form Read form Setup vectors pos _x 0 0 pos _y 0 0 pos _z 0 0 fow _x 0 0 fow _y 0 0 fow _z 1 0 lef _x 0 05 lef y 1 0 lef _z 0 0 upp x 1 0 upp _y 0 0 upp _z 0 0 Vector_normalize trope Do it Open datafile Start values org col col org dis dis org dis2 dis2 org ang ang org thick thick org tr tr Feedback Process_start2 strlen Object_Str r NO for i 0 Object_Str i Process_update2 i if polcount gt poly_limit break next Object_Str i 1 switch Object Str i default break case Q last recur last recur if last recur thick 1 thick ang l ang dis 1l dis dis2 l dis2 trope 1l trope amount dis fraction dis2 fraction thick fraction ang fraction i od overf
174. cetest wird mit der gleichen Batch Datei und dem gleichen Inhalt auf die Release und Debug Version des Lparsers angewendet um den Leistungsunterschied zu zeigen Zum Aufzeichnen der Belastung des Systems w hrend des Performancetests wird der Win dows XP eigenen Leistungs Monitor verwendet Dabei werden die Prozessorzeit die durch schnittliche Warteschlangenl nge des physikalischen Datentr gers sowie die angeforderten Seiten des Arbeitsspeichers pro Sekunde beobachtet 98 6 Tests und Auswertung der entwickelten Software Es sei darauf hingewiesen dass bei einem Software Monitor ein Teil der Performance an das Monitor Programm verloren geht und dass die Ergebnisse daher nicht der reinen Abarbei tungszeit entsprechen Zus tzlich wird das Ergebnis des Performancetests und des Belas tungstests von Prozessen und Programmen im Hintergrund beeinflusst Diese weiteren Pro zesse und Programme sind wiederum abh ngig vom jeweiligen individuell installierten Sys tem Viele Fehler geschehen bei der Eingabe Deshalb wird f ir den Funktionstest der Fassade die Schnittstellen getestet Dabei werden auch die Grenzwerte der Argumentenverarbeitung von der Kommandozeile ausgetestet Au erdem werden die Grenzwerte fiir das Auslesen und Verarbeiten der CFG und LS Datei auf ihre Tauglichkeit hin gepr ft indem sie mit ung lti gem Inhalt gef llt werden Die Fassade selbst wird ber die Eingabeaufforderung aufgerufen und nicht ber ein externes Progra
175. ckBar TrackBar Labell TL Label2 TL Label3 TL Label4 TL Label5 TL Label6 TL OKBtn TBi CancelBtn CamXLabel CamYLabel CamZLabel LightXLabe LightYLabe LightZLabe Label7 TL Label8 TL Direct3DBt Splitter Auflist procedure procedure procedure procedure abel abel abel abel abel abel tBtn TBitBtn TLabel TLabel TLabel l TLabel l TLabel l TLabel abel abel n TButton TSplitter ung aller Methoden fir die Ereignisverarbeitung FormClose Sender TObject var Action TCloseAction CancelBtnClick Sender TObject OKBtnClick Sender TObject FormShow Sender TObject 212 H Quelltexte procedure CamXTrackChange Sender TObject procedure CamYTrackChange Sender TObject procedure CamZTrackChange Sender TObject procedure LightXTrackChange Sender TObject procedure LightYTrackChange Sender TObject procedure LightZTrackChange Sender TObject procedure SearchPOVBtnClick Sender TObject procedure WidthEditKeyPress Sender TObject var Key Char procedure SearchQPOVBtnClick Sender TObject procedure Direct3DBtnClick Sender TObject Auflistung aller privaten Methoden als Prototypen private function convertRealForTracker value real48 integer public Public Deklarationen end GU UE UU UU RE ee ee ee DM epee Eee Ee CIE c pgs Offentliche globale Variablen PENEN E EE ae ae FY NEFYN FF FON ee EEEE ee FF
176. d EEN Methodenname BitBtnlClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Formular wenn auf Schlie en gelickt wird procedure TAboutForm BitBtnlClick Sender TObject begin Close Schlie e das Formular end end Dateiname CFGSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1x0 Klassenname TCFGForm Version 1 9 Kurzbeschreibung Diese Klasse repr sentiert das CFG Formular unit CFGSource 211 H Quelltexte uses Windows Dialogs Variants Buttons Messages StdCtrls SysUtils ComCtrls Classes ExtCtrls Graphics Controls Forms TCFGForm class TForm Auflistung aller eingebundenen Komponenten der Klasse Panel2 TPanel PageControll OptionsSheet LightCamSheet GroupBox3 Labell2 Labell3 Labell4 Labell5 AACheck T T T T TargaCheck WidthEdit HeightEdit PathPOVEdit PathQPOVEdit SearchPOVBtn SearchQPOVBtn TPageControl TTabSheet TTabSheet TGroupBox Label Label Label Label TCheckBox TCheckBox TEdit TEdit TEdit TEdit TButton TButton Panell Panel3 GroupBoxl CamXTrack CamYTrack CamZTrack GroupBox2 LightYTrack LightZTrack TPanel TPanel TGroupBox TTrackBar TTrackBar TTrackBar TGroupBox LightXTrack TTrackBar Tra
177. d dd P g g M TH TH d P P dd M M III III I II T of EE IE Constants added by Ken HH define PRED_L 30 Max length of a rule s predecessor and previous and next contexts define SUCC_L 500 Max length of a rule s successor string define COND_L 30 Max length of a rule s condition define VAR_L 0 Max length of a variable in a parametric rule define MAX_RULES 000 Max number of rules in the file define MAX OBJ LEN 2 1024 1024 Max length of object production string define MAX LIN LEN 000 Max length of a line in the file define MAX VARS 10 Max number of variables in a parametric rule define MAX EXP LEN 00 Max length of an expression in a parametric rule define MAX NUM LEN 0 Max length of a real number 153 H Quelltexte fdefine MAX_CONST fdefine MAX_SUCC fdefine REC DEPTH class Rule Type protected char Pred PRED LI char Succ MAX SUCCI double Probs MAX SUCC char Prev Ctx char Cond int N Param int N Succ int Block Len public bool int Get Pred char Str int Get Pred2 char Str Insert char Str Replace char Strl Swap_Dirs Swap_Sizes Rand Expr bool void void void void Rule Type char Prd Rule Type void Add Succ char Suc Same Rule char Prd bool Rule Applies long i bool Condition Met long i int Do Replace long i int Prd Len int N Rules char Object Str MAX OBJ LEN char New Str MAX OBJ LEN
178. d deren Evolution Produktion ine sone pum Den mel s Le mu we M r r WM I Abbildung 2 38 Ein L System als Baum dargestellt c x x y 4 In einem L System Baum k nnen nur die Blatter und die Knoten Stack und Seguenz eine Mu tation erleben An Mutationsm glichkeiten bietet GP f ir L Systeme sieben M glichkeiten an Mult Mult Mult SE b N m Mult Add Add Mut BAC Original Tree Point DIE Hoist Mult Mult Mult Mult e SE a a Mut 2 Mult Add Mult Add Div Add x Bc DW c B mut cC x Auda c K ec E x Shrinking Expansion Duplication Tree Mut Abbildung 2 39 Mutationsm glichkeiten unter GP Ja03 Diese M glichkeiten werden hier kurz erl utert Point Mutation Es wird ein einzelnes Blatt mutiert 4 Permutation Zwei Teilb ume werden vertauscht 55 2 Theoretische Grundlagen von L Systemen und deren Evolution Hoist Dem n chst h heren Knoten werden die Teilb ume abgeschnitten und nur eine Anzahl der Bl tter der Teilb ume seinen Bl ttern iibergeben Shrinking Ein Teilbaum wird durch ein Blatt ersetzt Expansion Ein Blatt wird durch einen neu generierten Teilbaum ersetzt Duplication Ein bestehender Teilbaum wird dupliziert und an Stelle eines Blattes hinzugefiigt Tree Mutation Die urspriinglichen Bl tter bleiben erhalten nur zwischen den Bl ttern und den urspriing lichen Knoten wird ein neues St ck Teilbaum hinzugef gt Dabei kann der urspr nglich
179. daher gibt es f r die Struktur eine globale Variable namens info ay struct InfoStruct char filename MAX FILENAME LENGTH Name einer LS Datei conv filename MAX FILENAME LENGTH Name einer weiteren LS Datei falls eine konvertierte Datei in einer anderen gespeichert werden soll Ry pathPOV MAX CFG RIGHTSIDE Pfad f r POV RAY pathOPOV MAX_ CFG RIGHTSIDE Pfad f r QuietPOV unsigned char state Bitweise Speicherung von Optionen f r Lprocess EJ int height H he des Bildes EJ width Breite des Bildes double xy Faktor mit dem die X Koordinate der Kamera multipliziert wird ky y Faktor mit dem die Y Koordinate xy der Kamera multipliziert wird Z Faktor mit dem die Z Koordinate m der Kamera multipliziert wird light x Faktor f r die realtive Position der Lichtquelle zur Kamera K light we Faktor f r die realtive Position der Lichtguelle zur Kamera ae light 24 Faktor f r die realtive Position der Lichtquelle zur Kamera ap info Diese Struktur wird zum auslesen und interpretieren der CFG Datei ben tigt struct CFGStruct Speicherung der linken Seite einer Option char left MAX_CFG_LEFTSIDE Speicherung der rechten Seite einer Option char right MAX_CFG_RIGHTSIDE fendif Dateiname com line h KKK 25 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 20
180. darauf gepr ft ob sie gesetzt wurden oder nicht Dazu wird auf eine Hilfsfunktion namens Get comline opt zur ckgegriffen Diese Funktion ben tigt vor ihrem Aufruf die Zuweisung eines Option String in dem alle Symbole enthalten sind die als Argumente von der Kommandozeile bergeben werden k nnen Beim Aufruf von Get_comline_opt muss das Symbol angegeben werden nach dem gesucht wird sowie eine bool sche Variable die angibt ob die Option vorhanden ist Zus tzlich dazu wird ein char Array angegeben in dem der Wert des Kommandozeilenargumentes enthalten ist falls f r dieses Kommandozeilenargument ein Wert vorliegt Am Ende der main Funktion wird die Funktion createINFOTXT aufgerufen die dann die INFO TXT Datei erzeugt und die Kameraposition berechnet Zur Berechnung der Kameraposition wurden zwei Hilfsfunktionen entwickelt Die eine hei t dAbs und bildet die Betragsfunktion f r double Werte ab Die zweite Funktion hei t percOfAxisValues Diese Funktion berechnet einen bestimmten Prozentwert von der gr ten Ausdehnung einer bestimmten Achse die beim Aufruf angegeben wird Zusammenfassung Modifiziert wurden die Funktionen main Define_form undSave_object Die globalen double Variablen maxX minX maxY minY maxz minZ x y z wurden hinzugef gt au erdem folgende Funktionen double dAbs double number double percOfAxisValues double perc char type void createINFOTXT void
181. das Programm eine Beschreibungsdatei f r POV Ray erzeugen und diese als INC Datei spei chern AuBerdem werden Lparser tiber die Kommandozeile die Faktoren tibergeben mit de nen die Kameraposition multipliziert wird Die Kameraposition wird dabei anhand der Aus dehnung der 3D Szene berechnet Ist die 3D Szene eine echte 3D Szene das hei t die Aus dehnungen des Modells bezieht sich auf alle drei Achsen dann werden die Kamerakoordina ten berechnet indem eine Ausdehnung der jeweiligen Achse mit dem tibergebenen Komman dozeilenwert multipliziert wird Ziel ist es die Kamera relativ zur Modellausdehnung zu posi tionieren In Abbildung 4 6 a wird dies verdeutlicht Sollte keine echte 3D Szene vorliegen also eine Achsenausdehnung sowohl in negativer als auch positiver Richtung nahezu null sein dann wird der Kamera von den Koordinaten die eine Ausdehnung besitzen deren Mit telwert zugewiesen Fiir die Koordinate die eine Ausdehnung nahezu null besitzt wird ein neuer Wert berechnet Dazu wird der Mittelwert der anderen beiden Koordinaten addiert und mit dem zur Achse geh rigen Wert von der Kommandozeile multipliziert Ziel ist es die Ka mera auf die Mitte des 2D Modells auszurichten und mit der Koordinatenachse die nahezu null war die Entfernung der Kamera zu regulieren In Abbildung 4 6 b wird eine x Achse gezeigt die keine Ausdehnung aufweist 84 4 Entwurf und Implementierung der Fassade Kameraposition x Kamerapositio
182. das Programm mit einer Fehlermeldung Zus tzlich wird mit der Funktion checkFileExtension gepr ft ob der angegebene Dateiname die Endung LS enth lt Ist dies nicht der Fall wird die Endung hinzugef gt Am Ende der Funktion checkingComline wird eine Funktion namens checkingState aufgerufen Diese Funktion pr ft ob die Angaben der Kommandozeile ausreichend und g ltig sind Die beiden Dateien lparser c und Iparser h bilden das Modul zur Interaktion mit dem Lparser Softwarepaket Unter anderem ist in ihnen auch eine Konvertierungsroutine enthalten die LS Dateien f r die Version 4 in die Version 5 konvertiert Diese Routine hei t convertLP4toLP5 Sie ben tigt den Namen der zu konvertierenden LS Datei sowie den Dateinamen in dem der konvertierte Inhalt gespeichert wird Die Konvertierungsroutine ersetzt lediglich Symbole und f hrt keine Pr fung des Inhaltes durch Sollten die Ziel und Quelldatei den gleichen Namen haben dann wird der konvertierte Inhalt in die Datei temp ls gespeichert und im Anschluss daran in den Namen der Zieldatei umbenannt Die Funktion Lparser ruft das Programm Lparser auf und leitet die Ausgabe in die Datei LPARSER LOG um Bevor die Fassade Lparser aufruft wird die Funktion Lparser aufgerufen Diese wiederum ruft checkingLSFile auf die einen Plausibi lit tstest der Werte vornimmt weil Lparser selbst dazu nicht in der Lage ist Hierf r wird die LS Datei ge ffnet und nach der ersten Z
183. ddresses with Arguments This function replaces all occurances of It stores the result in Result Str if Search Str is A 0 1 atof Num Str float Arg List in Search Str with the value of Note Search Str is unchanged and Arg List is 1 2 then Result Str x Result Str 0 0 int i while strlen Rpl Ptr gt 0 Rpl Ptr strchr Tmp Ptr if Rpl Ptr NULL strcat Result Str Tmp Ptr break else if Rpl_Ptr 1 strncat Result_Str Tmp_Ptr strlen Tmp_Ptr strlen Rpl_Ptr Rpl_Ptr i 0 while isdigit Rpl Ptr i itt strncpy Num Str Rpl_Ptr i Num Str i 0 sprintf Num_Str g 0 Arg_List atoi Num_Str strcat Result_Str RploPtr i Tmp_Ptr Rpl_Ptr else Rpl_Ptr t bool Rule_Type Rule_Applies long i Num_Str 195 H Quelltexte it ae Se a Se SS Sa Eunewion Does Rule Apply gt Se See aS This function checks to see if a rule applies at position i in Search Str Block Len is calculated it s the length of characters in Object_Str that must be replaced if this rule is applied int N_Brack Tmp long j Block_Len 0 Prev_Len 0 First check if the predecessor matches if Obj_Matches i Pred 1 amp Block_Len return false Check for previous context if Prev_Ctx NULL Find the previous context Don t forget to ignore branches and ignored characters J is l while j gt 0 amp amp
184. define VersionID 11 Vector indices define _x 0 define _y 1 define _z 2 Some often used consts define zero 232 0 0 define one 32 1 0 define half_pi 32 1 570798 define pi r32 3 141592 define two_pi r32 6 283185 define LF char 10 define CR char 13 define min_bar SSS SSS SSS DI ae ae ae ee oe ee ae Se ea N Bounding space for floats define float_min r32 1e30 define float_max r32 1e30 Array and vector types Nx A large string typedef char string file max file Vector arrays typedef r32 vector 3 typedef vector vectors_4 4 typedef vector vectors_max vectors_p_poly typedef r32 float array max p object 1 Polygon arrays typedef s16 polygon_type 4 typedef polygon_type polygon array max_p_ object 1 Intrinsics Si define Abs_s16 A s16 abs A define Abs_s32 A s32 abs A define Abs_r32 A r32 fabs A define Abs r64 A r64 fabs A define MIN A B A lt B A define MAX A B A gt B A define Vector_copy_max_r32 n A B memcpy void B void A n 12L define Vector_copy_r32 A B memcpy void B void A 12L define Mem_copy A B C memcpy void B void Si A C define Mem_clear A B C memset void A
185. dellieren lassen und diese als Komponenten in das L System aufnehmen Diese Kom ponenten k nnten interaktiv modelliert werden und dann in eine oder mehrere Produktionen transformiert werden Der Nutzer k nnte dann angeben ob die Komponente mitwachsen soll oder schreibgesch tzt ihre Struktur beibehalten soll Somit k nnte ein Nutzer beim Erzeu gen einer Pflanze ein Blatt erzeugen und als Komponente abspeichern Da in der Pflanze des Nutzers keine anderen Blatttypen vorkommen soll nur dieser eine Blatttyp verwendet werden und berall an der Pflanze verteilt werden Das Blatt soll sich aber nicht weiter ver ndern aus der Sicht des Wortes welches dahinter steht Um jedoch nicht immer das gleiche Blatt zu haben kann er dann ber Parameter die er dem Blatt bergibt leichte Ver nderungen her vorbringen Eine andere Erweiterung f r die graphische Oberfl che ist das Managen von Projekten so dass es zu jedem Projekt auch eine eigene CFG Datei f r die Fassade gibt Alternativ k nnte man die Schnittstelle von Lprocess erweitern und die CFG Datei ber die Kommandozeile angeben Weitreichendere Auswirkungen k nnten durch Java und RMI Methoden erreicht werden So k nnte man ein Java Interface zur Fassade bauen um ein Web Interface zu kreieren oder so gar einen Web Service zur Erzeugung von Bildern aus L Systemen anzubieten Man k nnte auch die Fassade in Java implementieren und die externen Programme in ein separates Java Programm mit
186. dem geschlossen werden mtError mbYes mbNo 0 mrNo then CanClose false Exit end Speicher die Daten aus der Info Struktur in die CFG Datei if Info Bitmap true then WriteLn cfg Image bmp else WriteLn cfg Image Targa if Info AA true then WriteLn cfg AA on else 273 H Quelltexte WriteLn cfg AA off if Info Files true then WriteLn cfg Files on else WriteLn cfg Files off WriteLn cfg Width IntToStr Info Width WriteLn cfg Height IntToStr Info Height WriteLn cfg POV tInfo PathPOV WriteLn cfg QPOV Info PathQPOV WriteLn cfg CamX FloatToStr Info CamX WriteLn cfg CamY FloatToStr Info CamY WriteLn cfg CamZ FloatToStr Info CamZ WriteLn cfg LightX FloatToStr Info LightX WriteLn cfg LightY FloatToStr Info LightY WriteLn cfg LightZ FloatToStr Info LightZ CloseFile cfg Schlie e die CFG Datei end FEN EN NEE ap a SE ue Y a EE EE EE Na SN Ng I Na pa ge Ss es Methodenname ImportLSExecute Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Konvertiert den Inhalt einer LS Datei um und zeigt den Inhalt in einem neuen Kindfenster an procedure TMDIMain ImportLSExecute Sender TObject var s t string Tempor re Zwischenspeicherung von Strings i integer Zwischenspeicher begin ffne eine Standard Dialog
187. den mit diesen getakteten L Systeme erm glicht Dazu werden jedem Symbol Zahlen zugewiesen Dabei bedeutet die Zahl auf der linken Seite das Sterbealter und die auf der rechten Seite das Initialalter Beim Ablauf einer Animation wird eine globale Zeit variable hochgez hlt Erreicht eine Produktion ihr Sterbealter wird diese Produktion ange wendet und f ngt mit dem initialen Alter an zu leben Ein Problem bei diesem Modell ist dass es kontextfrei ist Somit kann man zwar das Wachstum animieren aber nicht mit der Umge bung interagieren PL90 dL System Das Problem der Timed L Systeme kann durch ein Hybrid Modell beseitigt werden Dabei erzeugt das L System die topologischen Informationen der eigentliche Animationsprozess wird durch Differentialgleichungen gesteuert De03 Unary L System Das Besondere an diesen L Systemen ist dass sie un r sind In ihrem Alphabet X ist lediglich ein Symbol enthalten Diese L Systeme finden eher Anwendung im theoretischen Bereich Sie sind nicht so m chtig wie die anderen L Systeme bieten aber die M glichkeit einer komplet ten Charakterisierung der Grammatik HR75 Weitere L Systeme die eher theoretischen Charakter haben sind zum Beispiel AOL Systeme KR92 oder Partitions limitierte L Systeme G 96 Andere spezielle L Systeme sind Value L Systeme oder forgetful L Systeme CJ92 KPM92 Das eigentliche Problem ist die Bezeichnung von L Systemen Es gibt eine gro e Anzahl von L
188. den von Direct3D aufgerufen procedure TDirect3DForm D3DShutdown begin if assigned lpd3ddevice then lpd3ddevice nil Verbindung l sen if assigned lpd3d then lpd3d nil Verbindung l sen end RR Methodenname D3DInitScene Methodenbeschreibung Aufgabe dieser Methode ist das initialisieren der 3D Szene und deren Objekte procedure TDirect3DForm D3DInitScene var hr HRESULT Speichert die Ergebnisse der Verarbeitung vbVertices pByte ViewMatrix TD3DXMATRIX Anzeigematrix matProj TD3DXMATRIX Matrixprojektion begin Initialisiere nur wenn ein Direct3D Device erzeugt wurde if assigned lpd3ddevice then with lpd3ddevice do begin Setze die Eigenschaften des Materials material Diffuse r 1 0 material Diffuse g 1 0 material Diffuse b 1 0 material Diffuse a 1 0 material Ambient r 1 057 material Ambient g 1 0 material Ambient b 1 04 material Ambient a 1 0 material Specular r 1 0 material Specular g 1 0 material Specular b 1 0 material Specular a TO material Emissive r 0 0 material Emissive g 0 0 material Emissive b 0 0 material Emissive a 0 0 material Power 5 0 SetMaterial material Setze das Material Lichtquelle definieren light _Type D3DLIGHT_POINT Lichtquellentyp light Diffuse r 1 0 Farbe der Lichtes light Diffuse g 1 0 light Diffuse b 1 0 221 Ouelltexte light Range
189. den zwei Individuen ver ndert und in die neue Population ein gef gt Dabei wird ein Teil des Bit Strings zwischen den beiden Individuen vertauscht Beide Bit Strings m ssen aber die gleiche L nge aufweisen DBO BOO DU LESS ENS mma LS LN 953933333 Abbildung 2 19 Crossover in GA Der Crossover Operator kann so modifiziert werden dass mehr als zwei Individuen benutzt werden dass mehrere Teile des Bit Strings der Individuen vertauscht werden oder dass beides gleichzeitig stattfindet Der letzte Operator ist die Mutation Bei der Mutation werden an zuf lligen Stellen des Bit Strings die Bits gekippt Die Anzahl der zu kippenden Bits muss vorher festgelegt werden Das mutierte Individuum wird dann in die neue Population eingef gt 40 2 Theoretische Grundlagen von L Systemen und deren Evolution Jill GM Abbildung 2 20 Mutation in GA Der Genetische Algorithmus bricht idealerweise bei einer L sung ab Es sollte dem Anwender trotzdem jederzeit die M glichkeit zur Verf gung stehen den GA abzubrechen und auf die zu diesem Zeitpunkt beste L sung zur ckzugreifen denn die Laufzeit des GA kann sehr lang sein Bo04 Ja97 Mi99 Sch03 Ban03 2 5 Genetische Programmierung In diesem Kapitel wird nur so weit ein berblick ber die Genetische Programmierung gege ben wie es f r das Verst ndnis der Mutation von L Systemen notwendig ist Eine ausf hrli chere Er rterung dieses Themas findet sic
190. der Matrizen D3DXMatrixRotationY rot_matrix 0 0 D3DXMatrixTranslation trans_matrix 0 0 0 0 0 0 D3DXMatrixMultiply matWorld rot_matrix trans_matrix Anwendung der Matrix SetTransform D3DTS WORLD matWorld DrawPrimitive D3DPT TRIANGLELIST 0 12 Zeiche Kubus Definiere die Matrix ftir die Kameraausrichtung D3DXMat rixLookAtLH ViewMatrix D3DXVECTOR3 1 0 info CamX 1 0 info CamY 1 0 info CamZ D3DXVECTOR3 0 0 0 0 0 0 D3DXVECTOR3 0 0 1 0 0 0 Wende die Matrix fur die Kameraausrichtung an SetTransform D3DTS_VIEW ViewMatrix Definiere die Position des Lichtes light Position D3DXVECTOR3 1 0 info CamX info LightX 1 0 info CamY info LightY 1 0 info CamZ info LightZ Aktivieren des Lichtes SetLight 0 light LightEnable 0 TRUE EndScene end Present nil nil 0 nil Zeige Resultate auf dem Bildschirm end end H Quelltexte Methodenname MyIdleHandler Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var boolean Name Done Bedeutung Gibt an ob die Verarbeitung fertig ist Methodenbeschreibung Dieser Handle wird aufgerufen wenn keine anderen Daten verarbeitet werden m ssen procedure TDirect3DForm MyIdleHandler Sender TObject var Done Boolean begin D3DRender Szene rendern Done false Weiterhin ausf hren end ee eee ee e
191. der Schildkr te auf der Basis der Kommandos gezeichnet wurde die in der Zeichenkette v enthalten sind nennt man Turtle Interpretation von v im dreidimensionalen Raum Im Rahmen der Erl uterung der L Systeme wurden bereits parametrisierte L Systeme vorge stellt Diese Parametrisierung kann auch auf die Kommandos der Schildkr te ausgeweitet werden Da es nur zwei Arten von Kommandos gibt bewegen und rotieren soll exemplarisch f r jeweils eines dieser beiden Kommandos die parametrisierte Form angegeben werden F r die anderen ist es dann analog umzusetzen 32 2 Theoretische Grundlagen von L Systemen und deren Evolution F Die Schildkr te bewegt sich um die Schrittweite d welche einen Parameter w tiberge ben bekommt vorw rts und zeichnet eine Gerade ber die Strecke die sie zur cklegt Dabei ver ndert sich der Zustand der Schildkr te wie folgt A BIEDEN y Md6 eerie el rotiert die Schildkr te um die Schrittweite die einen Parameter w bergeben be kommt auf der y Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M gt x y z M R w w kann dabei ein Wert aus dem Bereich der reellen Zahlen sein entsprechend dem Wert in einem parametrisierten L System Neben diesen Standardkommandos gibt es noch einige zus tzliche Kommandos die zur rea listischen Modellierung von Pflanzen hinzugefiigt werden PL90 PHM So gelten die Punkte in den geschweiften Klammern als Punkte fiir ein
192. des Wachs tums Das Wachstum eines zu generierenden Wortes nimmt bei L Systemen die komplexe Objekte beschreiben sollen in der Regel mindestens exponentiell zu An Beispiel 2 1 wird deutlich dass die Berechnungskomplexit t f r ein triviales Beispiel schon bei O n 2 liegt Bei der Modellierung von Pflanzen kann die Berechnungskomple xit t noch um vieles h her sein Daher muss die Anzahl der Ableitungsschritte bei der synthe tischen Modellierung von Pflanzen gut durchdacht sein damit der Computer in einer endli chen Zeit terminiert Das Problem der Komplexit t von L Systemen ist nicht immer so ein fach zu l sen Alternativ sei auf folgende Quelle Ke86 verwiesen in der das Thema ausf hr licher behandelt wird Sie enth lt auch weitere Quellen zum Thema Komplexit t und L Systeme 2 Theoretische Grundlagen von L Systemen und deren Evolution L Systeme in eine bestimmte Sprachhierarchie einzugliedern erweist sich als sehr schwer Es existieren einige Dissertationen G 96 die einzelne L System in die Chomskyhierarchie ein zuordnen versuchen Diese Einordnung kann jedoch nur fiir wenige L Systeme EOL Systeme problemlos erfolgen bei anderen SOL Systeme ist dies nur sehr schwer m glich Hopcroft und Ullman HU00 ordnen die L Systeme den indizierten Sprachen zu 2 2 2 Das urspr ngliche L System Nach vielen Jahren der Forschung tiber B ckerhefe siehe Referenzliste der Publikationen von Lindenmayer in RS86 stellte A
193. ductionHeads Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name pred Bedeutung Enth lt den Produktionskopf Typ var string Name headList Bedeutung Zeiger auf eine String Liste mit allen vorhandenen Produktionsk pfen Typ var string Name headdoublelist Bedeutung Zeiger auf eine String Liste in der alle Symbole enthalten sind die mehr als eine Produktion aufweisen k nnen Methodenbeschreibung Pr ft ob f r ein Symbol mehr als eine Produktion existert procedure TMDIChildMain TestingProductionHeads const pred string var headlist string var headdoublelist string var i integer Zwischenspeicher f r Ergebnisse 8r string Zwischenspeicher fur Ergebnisse begin i Pos pred Suche nachdem Anfang einer Parameterliste im Produktionskopf if i gt 0 then Wurde eine gefunden dann kopiere das Symbol heraus s Copy pred 1 i 1 else Wurde keine gefunden dann ubernehme den Produktionskopf 236 H Quelltexte S pred i Pos st headlist Suche nach einem Eintrag des Symbols in der Liste headList Wurde ein Eintrag gefunden dann speichere das Symbol in die headdoublelist Liste ansonsten trage die Variable in die headList Liste ein if i gt 0 then headdoublelist headdoublelist s else headlist headlistt s end a eee et Methodenname TestingFor
194. e Knoten selbst auch mutiert werden Wie die GA lassen sich auch die Mutationsarten in die bekannten Mutations Gruppen einord nen Die Point Mutation z hlt zu den Genmutationen und alle anderen zu den Chromoso menmutationen Da bei der GP ein L System das Genom und Chromosom darstellt ist das L System ein haploides Chromosom Deshalb sind Genommutation ausgeschlossen Ja03 Ja97 Ja95 Ban03 BNKF98 Ou02 2 6 3 Mutation der Interpretation Eine weitere interessante M glichkeit der Mutation ist das Ver ndern der graphischen Inter pretation Bei der Turtle Interpretation ist es m glich die Bedeutung von zwei Symbolen zu vertauschen So k nnte ein F die Bedeutung eines bekommen und umgekehrt Alternativ k nnten ganz andere Symbole die Bedeutung der bestehenden graphischen Interpretation bernehmen Diese Mutationsm glichkeit setzt aber voraus dass das Programm f r die graphische Inter pretation so flexibel ist dass es notfalls von selbst noch fehlende eckige Klammern hinzuf gt Au erdem m sste die Evolution wenn sie auf der genetischen Programmierung basiert auch die neuen Symbole f r den Stack ber cksichtigen und den Baum entsprechend ausrichten 2 7 Applikationsvision Im Folgenden sollen einige Anwendungsm glichkeiten zu L Systemen und deren Evolution vorgestellt werden Es wird eine grobe Struktur pr sentiert sowie die M glichkeiten oder I deen die mit dieser Struktur verbunden sind Praktischer Bestandte
195. e Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Kindfenster wenn auf den Button Schlie en geklickt wird procedure TMDIChildMain CloseBtnClick Sender TObject begin Close end Methodenname Parameter FormCloseQuery 254 H Quelltexte Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var Boolean Name CanClose Bedeutung Gibt an ob das Formular geschlossen werden soll Methodenbeschreibung Methode wird vor dem Schlie en des Formulars aufgerufen procedure TMDIChildMain FormCloseQuery Sender TObject var CanClose Boolean var i integer Zwischenspeicher begin CanClose true Wurde der Inhalt des L Systems modifiziert dann wird gefragt ob die nderungen gespeichert werden sollen if Pos Caption gt 0 then begin i MessageDlg Das Lindenmayer System wurde ge ndert aber noch nicht gepspeichert 13 M chten Sie es jetzt Speichern mtInformation mbYes mbNo mbCancel 0 if i mrYes then SaveBtn Click else if i mrCancel then CanClose false end end a a E ne Hm TN ent ld abe E tn sd FY Zen Sand Eu Sa and TAINEN IOTER ad Fa EE Methodenname FormCreate Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird beim erzeugen des Formulars aufgerufen und Initialisiert Variablen
196. e void FILE pov_file NULL FILE info_file NULL char zeile MAX POV LINE LENGTH short RC double CamVector 3 CenterVector 3 if pov file fopen Lpar2pov pov wt fprintf stderr ERROR Cannot open Lpar2pov pov n return 1 if info file fopen INFO TXT rt fprintf stderr ERROR Cannot open info txt n return 1 for i 0 i lt 11 itt fgets zeile MAX_POV_LINE_LENGTH info_file extractVectorFromLine zeile CamVector fgets zeile MAX_POV_LINE_LENGTH info_file extractVectorFromLine zeile CenterVector fprintf pov_file include colors inc n fprintf pov file f include textures inc n fprintf pov file f include shapes inc n n fprintf pov file camera n fprintf pov file location 4f 4f 4f gt n CamVector 0 CamVector 2 CamVector 1 fprintf pov file look at lt 4f 4f 4f gt n CenterVector 0 CenterVector 2 CenterVector 1 fprintf pov file n n fprintf pov file declare col 0 colour red 1 0 green 1 0 blue 1 0 n fprintf pov file declare col 1 colour red 0 8 green 0 498039 blue 0 196078 n fprintf pov file declare col 2 colour red 1 0 n fprintf pov file declare col 3 colour red 1 0 green 1 0 n fprintf pov file declare col 4 colour green 1 0 n fprintf pov file declare col 5 colour blue 1 0 green 1 0 n fprintf pov file
197. e_mode val 816 tb lt lt 8 val s16 ta else val s16 ta lt lt 8 val s16 tb 159 H Quelltexte void Fget_bin_s32 FILE f s32 val s32 ta tb tc td ta s32 getc f tb s32 getc f tc s32 getc f td s32 getc f if native_mode val td lt lt 8 val tc val val lt lt 8 val tb val val lt lt 8 val ta else val ta lt lt 8 val tb val val lt lt 8 val tc val val lt lt 8 val td void Fget_bin_ul6 FILE f ul6 val S32 ta tb ta tb s32 getc f s32 getc f if native mode val ul6 tb lt lt 8 val ul6 ta else val ul6 ta lt lt 8 val ul6 tb void Fget_bin_s8 FILE f s8 val s8 getc f void Fget bin u8 FILE f u8 val u8 getc f void val val Fget_bin_u32 FILE f u32 val s32 tay tb tc td ta s32 getc f tb s32 getc f tc s32 getc f td s32 getc f if native_mode val td lt lt 8 val tc val val lt lt 8 val tb Get a s32 value Get a ul6 value Get a u32 value 160 check for order check for order check for order H Quelltexte val val lt lt 8 val ta else val ta lt lt 8 val tb val val lt lt 8 val tc val
198. ee eee Methodenname FormShow Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird ausgef hrt wenn das Fenster sichtbar wird procedure TDirect3DForm FormShow Sender TObject begin D3DInit Initialisieren von D3D D3DInitScene Initialisieren der Szene D3DRender Szene darstellen end FY a TR Re TR HR Y RR DES RN SIR Y MR FT ARAL AE E Y Y FE EET AR Methodenname FormKeyDown Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var word Name Key Bedeutung Enth lt den Code f r das Zeichen Typ TShiftState Name Shift Bedeutung Gibt an ob die Shift Taste gedr ckt wurde Methodenbeschreibung Wird f r das Formular aufgerufen wenn eine Taste gedr ckt wurde procedure TDirect3DForm FormKeyDown Sender TObject var Key Word Shift TShiftState begin if Key VK ESCAPE then close Wurde ESCAPE gedr ckt dann SchlieBe das Fenster end end 230 H Quelltexte Dateiname MDIChildSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 Klassenname TMDIChildMain Version 1 0 Kurzbeschreibung Diese Klasse repr sentiert das MDI Kindfenster uses windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs ComCtrls StdCtrls Buttons ExtCtrls TMDIChildMain class TForm Auf
199. eed ings Joint European Conference on Artificial Intelligence in Medicine and Medical Decision Making S 433 443 Springer Verlag 1999 http www2 informatik uni erlangen de download Papers Stand 06 2004 Gabriella K kai Zoltan T th und Robert Vanyi Parametric L System De scription of the Retina with Combined Evolutionary Operators Proceedings GECCO Genetic and Evolutionary Computation Conference Band 2 S 1588 1596 1990 http www2 informatik uni erlangen de download Papers Stand 06 2004 Winfried Kurth Die Simulation der Baumarchitektur mit Wachstumsgramma tiken Wissenschaftlicher Verlag Berlin 1999 Manfred Kudlek Languages Defined By Indian Parallel Systems The Book of L Hrsg Grzegorz Rozenberg und Arto Salomaa S 233 243 Springer Verlag 1986 Richard C Leinecker und Tom Archer Die Windows 98 Programmier Bibel ITP Verlag GmbH 1998 Aristid Lindenmayer Mathematical Models for Cellular Interactions in Develeopment I Filaments with One sided Inputs J Theoret Biol Heft 18 1968 S 280 299 1968 Aristid Lindenmayer Mathematical Models for Cellular Interactions in Develeopment II Simple and Branching Filaments with Two sided Inputs J Theoret Biol Heft 18 1968 S 300 315 1968 Dirk Louis Delphi 5 New Reference Markt Technik Verlag 2000 Klaus J rn Lange und Michael Schudy The Complexity of the Emptiness Problem for EOL Systems Lindenmayer Systems Hrsg Grzegor
200. ehen dazu muss nur die Rotationsmatrix mit einer entsprechenden Matrix verkn pft werden Die Abbildung 2 13 verdeutlicht dies Z f xy Abbildung 2 14 Turtle Interpretation im dreidimensionalen Raum Definition 2 27 f r die Turtle Kommandos im 3D Raum De03 Der Zustand einer Schildkr te ist ein Quadrupel x y z M wobei die Koordinaten x y Z die Position der Schildkr te repr sentieren M ist die Rotationsmatrix die die Ausrichtung der Schildkr te im dreidimensionalen Raum beschreibt also wohin die A Schildkr te blickt Des Weiteren soll d die Schrittweite eines Schrittes sein und 6 die Schrittweite die bei einer Ver nderung der Rotationsmatrix M benutzt wird Au er dem seien folgende Rotationsmatrizen definiert die angewandt werden wenn auf ei ner entsprechenden Achse rotiert wird 1 0 0 R 5 0 cos sin 0 sind cos cos 0 sin R 5 0 1 0 sind 0 cosd cos sind 0 R 6 sind cos 0 0 0 1 31 2 Theoretische Grundlagen von L Systemen und deren Evolution Es seien folgende Kommandos fiir die Schildkr te definiert F Die Schildkr te bewegt sich um die Schrittweite d vorw rts und zeichnet eine Gerade iiber die Strecke die sie zuriicklegt Dabei ver ndert sich der Zustand der Schildkr te wie folgt ess anon ud OCH D 1 2 3 f Die Schildkr te bewegt sich um die Schrittweite d vorw rts und zeichnet keine Gerade Dabei ver ndert sich der Zustand der Schildkr te wie
201. eichert den Wert einer Option i j integer Laufvariablen begin Durchlaufe die CFG Datei bis zum Ende while not eof cfg do begin ReadLn cfg s Speicher eine Zeile in die Variable s trim s Schneide Leerzeichen am Anfang und am Ende ab j Pos s Suche ob die Zeile ein Kommentar enth lt i re Pos s Suche ob die Zeile eine Option enth lt Ist die Zeile eine Leerzeile oder eine Kommentarzeile dann berspringe diese if j 1 or length s 0 or j gt 0 and i gt j then continue key trim Copy s 1 i 1 Zuweisung des Bezeichners der Option if j lt gt 0 then value trim Copy s itl j 1 i Zuweisung des Wertes und abschneiden eines Kommentars else 263 H Quelltexte value trim Copy s itl length s Zuweisung des Wertes Ist es der Bezeichner Image if CompareText key Image 0 then begin bmp true Option gefunden Wenn der Wert bmp ist dann setze die Variable in der Info Struktur if CompareText value bmp 0 then nfo Bitmap True Wenn der Wert targa ist dann setze nicht die Variable else if CompareText value targa 0 then nfo Bitmap False Falls nichts zutrifft dann liegt kein g ltiger Wert vor else bmp false end Ist es der Bezeichner Height else if CompareText key Height 0 then begin try nfo Height StrToInt value Wandel den String in eine Zahl um height
202. eile gesucht die nicht nur aus einem Kommentar o der einer Leerzeile besteht Dabei wird gepr ft ob die ersten drei Werte g ltige Zahlen dar stellen und ob der vierte Werte ein Axiom und keine Regel ist Zus tzlich wird mit der Funk tion checkingRulesForBrackets gepr ft ob der linke oder rechte Kontext sowie der Bedingungsteil runde Klammern aufweisen Nachdem die LS Datei gepr ft und Lparser ausgef hrt wurden wird die LPARSER LOG Datei ausgewertet um festzustellen ob eine Regel als ung ltig erkl rt wurde Danach endet die Aufgabe der Funktion Lparser 89 4 Entwurf und Implementierung der Fassade Eine weitere Funktion dieses Moduls ist Lv2povid Aufgabe dieser Funktion ist es mit dem Programm LV2POVID zu kommunizieren Bevor dies geschieht wird jedoch getestet ob alle wichtigen Dateien vorhanden sind in diesem Fall sind das die Dateien OUTPUT INC INFO TXT und LV2POVID CFG Beim Aufruf von LV2POVID wird die Ausgabe in die Datei LV2POVID LOG umgeleitet Diese Datei wird nicht weiter ausgewertet Eine weitere Routine in dem Modul ist CorrectingPOVFile Diese Funktion erstellt eine neue POV Ray Datei mit den korrekten Daten fiir die Kameraposition ftir die Kameraausrichtung und fiir die Lichtguellenposition Der Inhalt der neuen POV Datei ist identisch mit dem Inhalt von LV2POVID korrigiert wurden lediglich die Daten Um die Vektordaten aus der INFO TXT auszulesen gibt es noch die Funktion ext ract VectorFromLine
203. ein Beispiel zum besseren Verst ndnis von OL Systemen Dabei steht das Symbol f r eine alternative Auswahl und ist nicht Bestandteil des Alphabetes 10 2 Theoretische Grundlagen von L Systemen und deren Evolution Beispiel 2 4 f r ein OL System F r ein OL System sei folgende Grammatik definiert G L a b c d S amp h P S ab aa bc b bda d c d aba L a A F r die ersten drei Ableitungsschritte ergibt sich folgender Ableitungsbaum S gt ab S m 1 Ableitungsschritt a gt bc a b b gt gt bda gt ab A IJn 2 Ableitungsschritt b b d a gt bcbda N 3 Ableitungsschritt d b da a ba a gt dbdaabaa b gt d c gt c b gt bda d gt aba a gt a Abbildung 2 4 Ableitungsbaum zum Beispiel 2 4 Dementsprechend ist das Wort welches aus diesem OL System generiert wird debdaabaa dbdaabaa Anwendungsbereiche Diese einfache Familie der L Systeme eignet sich f r jegliche Art von fadenf rmigen Orga nismen Li68a Li68b Das h ngt damit zusammen dass Lindenmayer dieses mathematische Modell f r solche Organismen entwickelt hat So kann jedes Zeichen aus dem Alphabet der Grammatik eine Zelle in einem bestimmten Zustand abbilden oder jedes Zeichen eine andere Art von Zelle darstellen Mit jedem Ableitungsschritt erkennt man wie sich der Organismus weiterentwickelt Dabei kann sich eine Zelle teilen die Zelle bleibt erhalten oder eine Zelle stirbt ab Das Absterben kann mi
204. eine Text Datei ben tigt in der ein L System nach den syntak tischen Regeln vom Lparser enthalten ist Des Weiteren wird aus dem Softwarepaket noch das Programm LV2POVID ben tigt um das 3D Modell von Lparser in dass von POV Ray zu berf hren Im n chsten Kapitel wird n her auf Lparser eingegangen An dieser Stelle soll zun chst erkl rt werden warum Lparser ausgew hlt wurde Um einen Prozess zu erstellen der automatisch ablaufen soll ist es notwendig dass eine Schnittstelle existiert wenn ein externes Programm eingebettet werden soll Weiterhin ist es von Vorteil wenn das Programm keine graphische Oberfl che enth lt denn es soll keine In teraktion mit einem Nutzer existieren Daher bietet es sich an ein Programm zu verwenden das ber die Kommandozeile gestartet werden kann 73 4 Entwurf und Implementierung der Fassade Anhand der Erl uterungen in Kapitel 3 lassen sich zwei Programme erkennen die iiber die Konsole bedient werden k nnen eines davon ist Lparser und das andere RayTraced Evoluti on RayTraced Evolution besitzt gegentiber Lparser einige Vorteile So unterstiitzt es wesent lich mehr L Systeme und kann durch das Treiber Konzept theoretisch jeden beliebigen Ren derer zur Bilderzeugung verwenden Au erdem besitzt es eine m chtige hochsprachen hnli che Sprache mit der sehr komplexe Modelle erzeugt werden k nnen RayTraced Evolution hat einen gravierenden Nachteil der das tiefer gehende Arbeiten mit dem Progra
205. einer Rose dann wird vom Programm zun chst dieses Modell genommen Nach zahlreichen Evolutionsschritten entsteht so eine Rose die dem Foto sehr nahe kommt Das Programm entschlie t dass auf dem Foto eine Rose ist und teilt das dem Anwender mit Dieser grobe Uberblick soll noch ein etwas spezifiziert werden Als Eingabe erh lt der Evolu tionsprozess das Foto einer Pflanze sowie die Datenbank mit den repr sentativen Pflanzen Eine Auswahl repr sentativer Modelle zu den wichtigsten B umen ist in De03 zu finden Das Programm entnimmt nun ein Modell aus der Datenbank und bestimmt die Ahnlichkeit des Modells mit dem Foto Diese Ahnlichkeit des Modells zum Foto ist die Fitnessbestim mung Nun durchlauft das Modell eine bestimmte vorher festgelegte Anzahl von Evolutions schritten Nach jedem Evolutionsschritt wird die Fitness des neuen Modells bestimmt Sollte eine bestimmte Ahnlichkeitsschwelle tiberschritten werden so erhalt die Pflanze auf dem Fo to die Bezeichnung des Modells Bevor festgelegt wird dass die Pflanze eine Alternative zum Modell ist muss eine Ahnlichkeitspriifung zwischen dem Modell und dem generierten Bild vorgenommen werden Damit soll sichergestellt werden dass durch die Evolutionsschritte aus einem urspriinglichen Modell wie zum Beispiel aus einer Rose nicht ein vollkommen ande res Objekt entsteht beispielsweise ein Haus Konnte diese Schwelle mit dem ersten Modell nicht tiberschritten werden dann wird ein anderes Mod
206. eisungen So werden die Bitmasken fiir die einzelnen Werte von state definiert ebenso deren nicht erlaubte Kombinationen AuBerdem werden diverse Maximum werte definiert wie zum Beispiel die maximale Lange einer Zeile in einer LS Datei oder in der CFG Datei Eine wichtige def ine Anweisung verbirgt sich hinter POV_APP Der String enth lt den Namen von POV Ray der die Adresse fiir Windows Nachrichten darstellt Win dows Programme erhalten tiber Nachrichten Informationen vom Betriebssystem beispiels weise daf r dass eine Taste f r das Programm gedr ckt wurde So enth lt jedes Windows Programm eine Nachrichtenschleife in der die jeweilige Nachricht ausgewertet wird Tiefer 87 4 Entwurf und Implementierung der Fassade gehende Informationen zur Windows Programmierung sind in Ri97 DS98 To99 LA98 zu finden Um eine POV Ray Instanz zu finden oder zu beenden ben tigen die API Funktionen von Windows den Applikationsnamen von POV Ray Dieser ist aber nicht iden tisch mit der Executable Datei oder mit der Beschreibung der Datei Um solch einen Applika tionsnamen zu erhalten kann man mit Tools die Nachrichtenverarbeitung von Windows beo bachten Eines dieser Tools hei t WinSight Es stammt von Borland und ist in einigen Bor land Produkten beispielsweise in Delphi enthalten Der aktuelle Applikationsname von POV Ray in der Version 3 5 lautet Pov35MainWinClass Wenn eine neue Version erscheint kann sich dieser Name
207. el Height wurde kein g ltiger Wert gefunden Es wird der Standwert 480 verwendet mtWarning mbOK 0 end else if not files then begin Info Files false MessageDlg Fur den Schl ssel Files wurde kein g ltiger Wert gefunden Es wird der Standwert false verwendet mtWarning mbOK 0 end else if not pov then begin Info PathPOV POV c programme pov ray for windows v3 5 bin MessageDlg F r den Schl ssel POV wurde kein g ltiger Wert gefunden Es wird ein Standwert verwendet mtWarning mbOK 0 end else if not gpov then begin Info PathQPOV QPOV c programme pov ray for windows v3 5 guiext quietpov MessageDlg Fur den Schl ssel QPOV wurde kein g ltiger Wert gefunden Es wird ein Standwert verwendet mtWarning mbOK 0 end else if not aa then begin Info Bitmap false MessageDlg F r den Schl ssel AA wurde kein g ltiger Wert gefunden Es wird der Standwert off verwendet mtWarning mbOK 0 end else if not camx then begin Info CamX 2 0 MessageDlg F r den Schl ssel CamX wurde kein g ltiger Wert gefunden Es wird der Standwert 2 0 verwendet mtWarning mbOK 0 end else if not camy then begin Info CamY 2 0 MessageDlg F r den Schl ssel Camy wurde kein g ltiger Wert gefunden Es wird der Standwert 2 0 verwendet mtWarning mbOK 0 end else if not camz then begin Info CamZ 2 0 MessageDlg F r den Schl ssel
208. el x y a wobei die Koordinaten x y die Position der Schildkr te repr sentieren und der Winkel a auch Ausrichtung der Schildkr te genannt die Richtung angibt in die die Schildkr te blickt Des Weiteren soll d die Schrittweite eines Schrittes sein und die Schrittweite die bei einer Ver n derung des Winkels a benutzt wird Es seien folgende Kommandos f r die Schildkr te definiert F Die Schildkr te bewegt sich um die Schrittweite d vorw rts und zeichnet eine Gerade ber die Strecke die sie zur cklegt Dabei ver ndert sich der Zustand der Schildkr te wie folgt x ya gt x dcosa y rdsina a f Die Schildkr te bewegt sich um die Schrittweite d vorw rts und zeichnet keine Gerade Dabei ver ndert sich der Zustand der Schildkr te wie folgt x y a gt xrdcosa yrdsina a Die Richtung der Schildkr te wird um die Schrittweite weiter nach links aus gerichtet Der Zustand der Schildkr te ver ndert sich wie folgt x y a gt x y a 8 28 2 Theoretische Grundlagen von L Systemen und deren Evolution Die Richtung der Schildkr te wird um die Schrittweite 6 weiter nach rechts ausgerichtet Der Zustand der Schildkr te ver ndert sich wie folgt x y a gt x y 6 Alle anderen Symbole werden ignoriert Definition 2 26 f r die Turtle Interpretation im 2D Raum Pr86 Sei v eine Zeichenkette x y der Startzustand der Schildkr te sowie d und feste Parameter Basierend auf die Komm
209. el9 TLabel Labelll TLabel Label5 TLabel Label7 TLabel GroupBox2 TGroupBox CloseBtn TBitBtn Labell3 TLabel Labell4 TLabel Labell5 TLabel Labell6 TLabel Labell7 TLabel Labell8 TLabel Labell9 TLabel GroupBox3 TGroupBox Label20 TLabel Label21 TLabel Label22 TLabel Label23 TLabel Label24 TLabel Label25 TLabel Label26 TLabel Label27 TLabel Label28 TLabel Label29 TLabel Label30 TLabel Label31 TLabel Label32 TLabel 278 H Quelltexte Label33 TLabel GroupBox4 TGroupBox Label34 TLabel Label35 TLabel Label36 TLabel Label37 TLabel GroupBox5 TGroupBox Label38 TLabel Label39 TLabel Label40 TLabel Label41 TLabel Label42 TLabel Label43 TLabel Label44 TLabel Label45 TLabel Label46 TLabel Label2 TLabel Label4 TLabel Label6 TLabel Auflistung aller Methoden fur die Ereignisverarbeitung procedure FornClose Sender TObject var Action TCloseAction procedure CloseBtnClick Sender TObject private Private Deklarationen public Public Deklarationen end EE Offentliche globale Variablen ee ns ee var TurtleComForm TTurtleComForm Die Instanz von TTurtleComForm ist ffentlich fiir alle anderen Units erreichbar Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese M
210. ell aus der Datenbank entnommen Das geschieht so lange bis alle Modelle gepriift sind Wenn kein Modell der Pflanze auf dem Foto entspricht dann k nnte die Applikation versu chen ein neues Modell aufzustellen um die neue Pflanze in die Datenbank aufzunehmen Eine Einstiegshilfe k nnte das erste neue Modell sein was bei den vorherigen Durchl ufen die beste Fitness aufweisen konnte Natiirlich kann auch ein komplett neues Modell per Zufall generiert und der Evolution unterworfen werden Wurde ein entsprechendes Modell f r die neue Pflanze gefunden k nnte das Wort das die Pflanze erzeugt einem intelligenten Analyseunterprogramm gereicht werden Dieses k nnte versuchen aus der Struktur die das Wort repr sentiert eine Zuordnung zu einer groben Pflanzengattung machen beispielsweise Blume oder Baum Dazu kann das Analyseunterpro gramm auf Merkmale der verschiedenen Pflanzengattungen zuriickgreifen bei einem Baum beispielsweise auf die Merkmale sehr hoher Stamm und eine gro e Anzahl von Verzweigun gen Repr sentiert werden k nnte das Analyseunterprogramm zum Beispiel durch ein Neuro nales Netz 60 3 Programme die L Systeme simulieren interpretieren 3 Programme die L Systeme simulieren interpretieren In diesem Kapitel wird ein Uberblick iiber die vorhandenen Applikationen zu L Systemen gegeben und ihre unterschiedliche Eigenschaften zu verdeutlichen 3 1 Lparser Das Softwarepaket Lparser LP4 liegt in der Version 4
211. else if lcon 0 then predessor Copy str prob 1 else predessor Copy str lcont3 prob 3 lcon Wenn ein rechter Kontext vorhaden ist dann kopiere diesen heraus if rcon gt 0 then if cond 0 then rcontext Copy str rcon 3 prob 3 rcon else rcontext Copy str rcon 3 cond 3 rcon else rcontext Ansonsten belege den Teil mit einem Wildcard 238 H Quelltexte Wenn ein Bedingungsteil vorhaden ist dann kopiere diesen heraus if cond gt 0 then condition Copy str cond 3 prob 3 cond else condition Ansonsten belege den Teil mit einem Wildcard end X A Pa PE A A A A A ER ae pr Ba a ea a ee MS Y FFY EY Methodenname saveToCFG Ruckgabewert Typ boolean Bedeutung Gibt zurtick ob die Verarbeitung erfolgreich war Methodenbeschreibung Speichert die aktuelle Einstellung in der Info Strukur in die CFG Datei function TMDIChildMain saveToCFG boolean var cfg TextFile Zeiger auf die CFG Datei begin result true Initialisierung des Ruckgabewertes Dateiverarbeitung AssignFile cfg LPROCESS CFG Dateinamen den File Handle zu zuweisen i Rewrite cfg Sit Offnet Datei zum schreiben und schaltet zwischenzeitig die I O Priifung aus if IOResult lt gt 0 then Wurde die Datei erfolglos ge ffnet begin dann Beende die Verarbeitung result false Exit end Schreibe den Inhalt de
212. emen und deren Evolution Am Anfang wird eine zuf llige Anfangspopulation erzeugt das hei t eine nicht leere Menge von Chromosomen und gepr ft ob diese schon das Problem l st Sollte dies nicht der Fall sein dann wird die Fitness eines jeden Individuums der Population bestimmt Dabei wird je dem Individuum ein Ma zugeschrieben das die N he zur L sung beschreibt Per Zufall wird eine Operation ausgew hlt Entsprechend der Operation werden zwei Indivi duen oder nur ein Individuum ben tigt Um nun diese Individuen aus der Population heraus zusuchen wird eine Selektion durchgef hrt Bei dieser Selektion sind mehrere Varianten m glich Tournament Eine bestimmte Anzahl von willkiirlich gew hlten Individuen wird zu einer Gruppe zusammengestellt Auf der Basis der Fitness der Individuen in der Gruppe werden entsprechend der Operation ein oder zwei Individuen selektiert Roulette Die Auswahlwahrscheinlichkeit steigt proportional zur Fitness Overselection Die Auswahlwahrscheinlichkeit wird so manipuliert dass das st rkste Drittel der Po pulation eine Gewichtung von 80 9o und der Rest eine Gewichtung von 20 be kommt Nun wird der Operator auf die Individuen angewandt Bei den GA existieren drei verschiede ne Operatoren die sich an die Natur anlehnen Der erste GA Operator ist die Reproduktion Bei der Reproduktion wird das Individuum nicht ver ndert und in die neue Population eingefiigt Beim Operator Crossover wer
213. en Pfad end S522 525532 S3S2 S959 ce ecce 555252523 52S S59 S25 SSS SS Im Methodenname Direct 3DBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Die Methode wird ausgef hrt wenn auf den Button 3D Ansicht geklickt wird procedure TCFGForm Direct3DBtnClick Sender TObject begin Erzeuge ein Instanz des Direct3D Fensters wenn noch keine existiert if D3DActive false then begin D3DForm TDirect3DForm Create Application D3DActive true end end end Dateiname CondFormSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 219 H Quelltexte Klassenname TCondForm Version Zap Kurzbeschreibung Diese Klasse repr sentiert das Fenster den Bedingungsteil benutzt wird das zum Anzeigen der Ausdr cke f r Controls Forms interface a EE EAEE EEE HE Nahe HT HL eh ed SEES at a Yr Liste alle ffentlich eingebundenen Units uses windows Messages SysUtils Variants Classes Graphics Dialogs StdCtrls Buttons EE BEE CCC CEN CEPR AEN BECA CES RP EEF NE COANE CE Deklaration eigener Datentypen type Yb BEE Ye EI ed MP STIs CYF DEDDF ed EI ei FU Klassenbeschreibung ftir TCondForm TCondForm class TForm Auflistung aller eingebundenen Komponenten der Klasse GroupBo TGroupBox Labell TLabel Label2
214. en in x 3 die Domine von p ist li j o Y 4 f r O lt i lt f existiert ein P in 7 sodass f r 1 j lt Xi x H pli j P v i j gt o WO v i j gt a und 0 0 Xi In solch einem Fall wird gesagt dass D eine Ableitung ber x von x und f die H he von der Ableitung D ist Die wichtigsten Eigenschaften sollen nun direkter formulieren werden O bildet Zahlenpaare wobei die erste Zahl die Ableitung kennzeichnet und die zweite Zahl die Stelle des Wortes zum Beispiel im Wort aba ist an der zweiten Stelle b W hrend O nur abstrakte Zahlenpaare darstellt kann O in v eingesetzt werden um das Zeichen einer Stelle im Wort zu einer be stimmten Ableitung zu bestimmen beim Beispiel aba w re v 0 2 b In p wird auch ein Zahlenpaar von O eingesetzt um die Ableitung f r ein bestimmtes Symbol zu erhalten 17 2 Theoretische Grundlagen von L Systemen und deren Evolution Beispiel 2 8 ftir ein TOL System HR75 Dieses Beispiel zeigt ein TOL Schema une die ersten zwei EE Sei S a b P P wobei P la gt a b gt b P la a b gt e Sei D O v p wobei O 0 1 0 2 0 LAs is Alibi L v 0 a v 0 2 b 1 v l j a f r 1 lt j lt 2 vl j b f r 3 lt j lt 4 v 2 j a f r 1 lt j lt 6 v 2 j b f r 7 lt j lt 12 p 0 1 P gt a p 0 2 Ph gt b p j P a gt a fir 1 lt j 2 p Lj P a o b f r 3 lt j lt 4 D ist ei
215. en rechten Kontext gibt dann durchlaufe diesen und Pr fe ob ein Symbol enthalten ist f r das noch keine Produktion gefunden wurde und speichere es in der Liste missHeadList ab if length rcon gt 0 then for i 1 to length rcon do A mor flee ea ini er SF MI EG TE Wps Ts Ty BR Fy Oti Fy y ACH ie y Hy y Yy Yg a nan e opp c T Sus EE ET pyn Or on or Pos succ i headList gt 0 or Pos succ i missHeadList gt 0 then missHeadList missHeadList succ i Durchlaufe den Produktionsk rper und suche Symbolen for i 1 to length succ do if succ i then Wurde der Anfang einer Parameterliste gefunden begin dann setze die Variable bracket bracket true continue end else if succ i then Wurde das Ende einer Parameterliste gefunden begin dann deaktiviere die Variable bracket bracket false continue end else if bracket then Uberspringe den Inhalt einer Parameterliste continue Priife ob das Zeichen ein Symbol darstellt und speichere es in der Liste missHeadList ab wenn es keine Produktion dafiir existiert else if Ast steel in pt eo I Tel a r et gy Pet Tet Pate he TOO Du PNE a by ERE echter RE Fy ABS Op ee bee FE Pm PE dr EU upee SEA or Pos succ i headList 0 or Pos succ i missHeadList 0 then missHeadList missHeadList succ i end FY EE SRE DES SAR AE TR TH ON INCUN E TTE EMS AES EE EAS ED SRA eee Methodenname TestingPro
216. en sich im Verzeichnis von Visual L Alle drei Programme und die im Verzeichnis befindlichen CFG Dateien werden ben tigt um das Bild zu generieren 121 F Bedienungsanleitung f r Visual L Nun soll ein eigenes L System definiert werden Dazu klicken Sie in der Symbolleiste auf Neu oder auf den Men punkt Datei und dann Neu Dieses Mal erscheint ein leeres Fenster in dem noch nichts eingetragen ist Auf dem Reiter L System befinden sich zwei gr ere Bereiche Der eine ist mit Startwer te betitelt und der andere mit Produktionen Im Bereich Startwerte k nnen Sie die Re kursionstiefe wie oft das Wort abgeleitet werden soll den Start Basiswinkel f r die Turtle Interpretation die Start Basisst rke wie dick stark die 3D Zylinder sein sollen und das Startaxiom wort angeben Die Felder k nnen Sie mit folgenden Werten f llen die Rekursionstiefe betr gt zwei der Basiswinkel betr gt 90 die Basisst rke ist 100 und das Startaxiom ist F F F F Im unteren Bereich k nnen die einzelnen Produktionen Regeln f r das L System definiert werden Die Eingabemaske f r eine Produktion besteht aus 5 Feldern Das erste ist der linke Kontext der Produktion gefolgt vom Produktionskopf Das dritte Feld ist der rechte Kontext und das vierte die Bedingung unter der die Produktion ausgef hrt werden soll Das letzte Feld ist der Produktionsk rper der beim Ableiten f r das Symbol im Produktionsko
217. end Dateiname ConsoleFormSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 0 Klassenname TConsoleFom Version 1 0 Kurzbeschreibung Diese Klasse repr sentiert das Fenster das zum Anzeigen der Konsolenausgabe benutzt wird BESCHREIBUNG DER SCHNITTSTELLE DER UNIT 221 H Quelltexte uses Windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs StdCtrls Buttons ExtCtrls TConsoleFom class TForm Auflistung aller eingebundenen Komponenten der Klasse Panell TPanel Panel2 TPanel CloseBtn TBitBtn ListBoxl TListBox Auflistung aller Methoden fur die Ereignisverarbeitung procedure CloseBtnClick Sender TObject private Private Deklarationen public Public Deklarationen end EE Offentliche globale Variablen AID er a a S A E E E EO VE ee ee ee es var ConsoleFom TConsoleFom Die Instanz von TConsoleFom ist ffentlich fiir alle anderen Units erreichbar km HT E a waa saa YG ah E ae Y hee E IMPLEMENTATIONSTEIL DER UNIT CH EC CH EC Y EN CF Y Y NE nel une Eee Eh re Eee N ININ I CPC EF MW YU Y Y CN YR M implementation LYN LD FEN FED FL FF OF YL NID FL LD YL FF ee MY et LD LD MUT Compiler Schalter CULA Y FY NL YDD SE E FYDD SE FOD NIN DID EN CYFYD FIN a ee FED NIN GDC SF FEN SDN DF EN R dfm ARCA ee ee ee ELF FEDD ee ee ee MD FF MD
218. ende die Verarbeitung result Bedingung fehlt exit end Sind weitere Zeichen auber dem Wildcardzeichen im Bedingungsteil enthalten if Pos s gt 0 and length s gt 1 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Die Bedingung enth lt neben dem Zeichen noch weitere Zeichen exit end 269 H Quelltexte Sind Klammern im Bedingungsteil enthalten if Pos s 0 and Pos sS gt 0 or Pos s gt 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result In der Bedingung sind keine Klammern erlaubt Exit end Enth lt der Bedingungsteil keinen Ausdruck if Pos s gt 0 and length s 1 or length s 0 then cond else Ansonsten baue einen Bedingungsteil zusammen cond s end Es existert sowohl ein Bedingungsteil als auch ein rechter Kontext else begin pred trim Copy line i 1 k 1 i Kopiere den Produktionskopf heraus S trim Copy line 1 1 j 1 1 Kopiere den Bedingungsteil heraus Existiert ein Inhalt f r den Bedingungsteil if length s 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Bedingung fehlt exit end Sind weitere Zeichen au er dem Wildcardzeichen im Bedingungsteil enthalten if Pos s 0 and length s 1 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung resul
219. ente des Kindfensters eine Nachricht eingef gt welcher Teil nicht ber nommen wurde und warum So erscheint zum Beispiel eine Nachricht bei einem ung ltigen oder fehlenden Wert f r die Rekursionstiefe den Basiswinkel die Basisst rke oder f r das Axiom 93 5__ Die graphische Oberfl che Fehlerhafte Produktionen sind solche die zum Beispiel das Symbol f r einen linken oder rechten Kontext haben aber keinen Inhalt aufweisen Beim ffnen einer bestehenden LS Datei in Version 5 wird die gleiche Pr fung durchgef hrt Beim Start der Anwendung wird au erdem der Inhalt der CFG Datei ausgelesen und in einer Struktur gespeichert die f r alle weiteren Teile der Anwendung zug nglich ist Sollte die CFG Datei nicht bestehen wird die se durch eine CFG Datei mit Standardwerten ersetzt Sollte ein Wert in einer CFG Datei un g ltig sein so wird ebenfalls ein Standardwert verwendet Beim Beenden der Anwendung wird der Inhalt der Struktur wieder zur ck in die CFG Datei geschrieben Au erdem wird mit Hilfe von Lprocess eine eventuell gestartete Instanz von POV Ray beendet 5 4 2 Das Kindfenster TMDIChildMain Die eigentliche Anwendung spielt sich bei einer MDI Anwendung im Kindfenster ab Das Kindfenster kann in zwei Teile aufgeteilt werden In Abbildung 5 2 wird das Kindfenster dar gestellt kumente und Einstellungen Jan Desktop GUI bekerpl5 Is Einstellungen Kamera und Licht Startwerte Bild erzeugen Rekursionstiefe g Ba
220. er hat Rozenberg in seinem Buch HR75 die Grundlagen fiir typische L Systeme gelegt Weitere Quellen zum Aquivalenzproblem Ru86 CK86 Hon01 Wa01 35 2 Theoretische Grundlagen von L Systemen und deren Evolution Sonstige Anwendungen Ki Ze Routing Tabellen f r Computernetze In LT86 wird gezeigt wie man das Problem der anwachsenden Routing Tabellen alter nativ l sen kann Umsetzungen lassen sich ber Table L Systeme oder auch mit Map L Systemen realisieren Parallele Kommunikationssysteme In Pa92 wird gezeigt dass L Systeme auch die Rolle eines parallelen Kommunikations systems annehmen k nnen Modellierung der Netzhaut GREDEA ist ein Monitor Programm zur Pr fung der Blutzirkulation der Netzhaut Dabei werden zur Beschreibung der Netzhaut parametrisierte L Systeme verwendet KTV99a KTV99b Erzeugung von Musik Tom Johnson nutzte L Systeme zur Generierung von Musikstiicken Dabei wird ein L System erzeugt und n mal abgeleitet Jedes erzeugte Wort bildet eine Stimme Das erste Wort die tiefste und das letzte erzeugte Wort die h chste Stimme Alle Stimmen werden auf ein Tempo bef rdert indem der Tonwechsel bei der ersten Ableitung am langsamsten und bei der letzten Ableitung am schnellsten ist Be01 Informationen zur Erzeugung von Musik mit L Systemen als Beschreibung und mit Genetischen Algorithmen zur Generie rung findet man bei Fo00 Andere Anwendungen in der Musik findet man in DB03 Evolution
221. er Anwendungsm glichkeiten von L Swstemen 34 2 3 Alternativen zu L Systemen economico rt pte ENNEN ERES Teen ERE 36 2 3 1 luy rue T 37 2 3 2 ee 37 2 4 Genetische Algorithmen sossssesssesssoossoossoossossessesssoessoossoosssssssoesssosssoossoosessssssesssose 39 2 5 Genetische Programmierung sesssesssooesooesoossooesssesssecssoossoosssosssoessseessoossoosssossssesssose 41 2 6 Mutation von L Systemen ssssssssosssnsssssnsnsssnssnnsnnsnssnnsnnsnnsnnsnnsnssnnssssnnssesnnssssnnnsene 46 2 6 1 Mutation von L Systemen unter Genetischen Algorithmen 9 46 2 6 2 Mutation von L Systemen unter Genetischer Programmierung sessesseseseseesee 54 2 6 3 Mutation der Interpretation aus GR er i ne xd 56 Inhaltsverzeichnis 2 7 _ AppliKation E 56 2 7 1 Das Ee 58 2 7 2 Die Anwendungsm gliehkeiten iet ce ee 58 3 PROGRAMME DIE L SYSTEME SIMULIEREN INTERPRETIEREN 61 3 1 MATS OF MP MN 61 3 2 DLS idm RAN FRY LE E TE Y RR RAN ERYR 62 33 Ray Traced Hy lution iie eic nen 63 GE WE BT hU 64 3 5 Zusammenfassung und Ubersicht cccccscscscssssscscsssssssesssscecsesssscsessscscsessescaesescees 66 4 ENTWURF UND IMPLEMENTIERUNG DER FASSADE curssossssosesosssnosssonssene 69 4 1 Der Begriff der Fassade eiii YG FY een 69 42 Einfuhrung zum Entwurf E 69 4 3 Die Entwicklungsumgebung cuss000ussssnsssssnsssnsnnssnsnsssnnnnsnnnnnsnnnnnsnnnnnennnnnennnnsnsnnnnene 70 4 4 MVNO
222. er CFG Datei CloseFile cfg Schlie e die CFG Datei end EEEE E DC AEE N y ea E N EA E Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TMDIMain FormClose Sender TObject var Action TCloseAction begin WinExec lprocess e SW_HIDE Beende eine laufende POV Ray Instanz end ate ee a ee a a a ee UND oo eee es Methodenname FormCloseQuery Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var Boolean Name CanClose Bedeutung Gibt an ob das Formular geschlossen werden soll Methodenbeschreibung Methode wird vor dem Schlie en des Formulars aufgerufen procedure TMDIMain FormCloseQuery Sender TObject var CanClose Boolean var cfg TextFile File Handle f r die CFG Datei begin CanClose true Applikaton kann geschlossen werden AssignFile cfg LPROCESS CFG Weise dem File Handle den Namen der Datei zu i Rewrite cfg Sit ffne die Datei zum lesen if IOResult lt gt 0 then Konnte Datei nicht ge ffnet werden begin Soll die Applikation wirklich beendet werden if MessageDlg Die Einstellungen f r die CFG Datei k nnen nicht gespeichert werden 13 Soll die Anwendung trotz
223. er Info CamZ CamZLabel Caption FloatToStr CamZTrack Position 0 5 LightXTrack Position convertRealForTracker Info LightX LightXLabel Caption FloatToStr LightXTrack Position 0 5 LightYTrack Position convertRealForTracker Info LightY LightYLabel Caption FloatToStr LightYTrack Position 0 5 LightZTrack Position convertRealForTracker Info LightZ LightZLabel Caption FloatToStr LightZTrack Position 0 5 end end Sat Se a ALT ee ae E a eo ee a a ae ee ee P Methodenname fillInfo Parameter Typ var Textfile Name cfg Bedeutung Zeiger auf eine ge ffnete CFG Datei Methodenbeschreibung Liest den Inhalt einer CFG Datei aus und fullt den Inhalt der Info Struktur mit den Daten aus procedure TMDIMain fillInfo var cfg TextFile Variablen mit einem Wert vorinitialisieren const bmp boolean false Die Variablen werden auf true aa boolean false gesetzt wenn deren gleichnamige files boolean false Option in der CFG Datei gefunden wurde width boolean false height boolean false pov boolean false qpov boolean false camx boolean false camy boolean false camz boolean false lightx boolean false lighty boolean false lightz boolean false var S string Zwischenspeicher f r ein String key i String Speichert den Bezeichner einer Option value string Sp
224. er eine Grafik und spei chert sie in einem Grafikformat ab Der Renderer verwendet zur Erstellung der Szene die Strahlenverfolgungstechnik Ray Tracing Weitere Information zum Renderer und zur Strah lenverfolgung folgen in Kapitel 4 5 71 4 Entwurf und Implementierung der Fassade Bildgenerierung aus der Grammatik Grammatik L System Abbildung 4 1 Module des Bilderzeugungsprozesses 4 5 Vereinfachungen und die entsprechende Moduliibersicht Im Rahmen einer Diplomarbeit k nnen nicht alle Module selbst entwickelt werden Es wird daher auf einige schon existierende Programme zur ckgegriffen In diesem Kapitel wird n her erl utert um welche Programme es sich hierbei handelt und warum sie verwendet werden Um einen ersten berblick zu bekommen werden der theoretische und der praktische Ablauf in Abbildung 4 2 einander gegen bergestellt So wird deutlich welches Programm welche Aufgabe aus dem theoretischen Teil bernehmen soll 72 4 Entwurf und Implementierung der Fassade Theoretischer Praktischer Ablauf Ablauf Grammatik Grammatik L System L System Wort Generierung Modeller f r Renderer 3D Modell LV2POVID 3D Modell f r Renderer Abbildung 4 2 Der theoretische der praktische Ablauf sowie die verwendeten Programme Lparser und LV2POVID Wie schon im Kapitel 3 1 erl utert ist Lparser ein Softwarepaket aus mehreren Komponen ten Fiir die Eingabe wird nur
225. er ersetzt werden Dazu wird Lparser insoweit erweitert dass er selbst eine m glichst gute Kameraposition berechnet Au erdem muss die von LV2POVID erzeugt POV Ray Datei korrigiert werden weil die Kameraposition und die Position der Lichtquelle nicht richtig bernommen werden Das Ergebnis ist eine stabile Fas sade die f r den Evolutionsprozess eine gute Schnittstelle bietet Als Renderer wird POV Ray mit einem Tool namens QuietPOV verwendet Damit sind neben der Fassade noch vier weitere Programme notwendig Bei der Implementierung der Fassade wird darauf Wert gelegt dass der Quelltext m glichst wenige API Funktionen von Windows verwendet um in einer kurzen Zeit auf einem anderen Betriebssystem portiert werden zu k nnen Um einen einfacheren Einstieg in die Modellierung mit L Systemen zu bekommen und das eigentliche Arbeiten mit L Systemen zu vereinfachen wird eine graphische Oberfl che ent wickelt F r das Arbeiten mit der Oberfl che sind Kenntnisse zu L Systemen notwendig Ne ben den Editierfunktionen wird auch eine Pr froutine f r L Systeme entwickelt Au erdem wird mit Direct3D ein 3D Kubus geschaffen Mit der interaktiven Bedienung von Schiebereg lern soll die Bedeutung der Faktoren f r die relative Positionierung der Kamera und die Lichtquelle veranschaulicht werden 105 7 Zusammenfassung und Ausblick zu dieser Arbeit 7 2 Ausblick Es folgen zum Schluss noch einige m gliche Erweiterungen der Software Seitens der a
226. ergeben setOptionsForChild Child Binstellungen ans Kindfenster tibergeben end a y aa cd cd ly dd capa Y Yd du Y SN AR AR YI Y E YN Methodenname HelpAboutExecute Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Erzeugt das Info Fenster und zeigt es an procedure TMDIMain HelpAboutExecute Sender TObject var about TAboutForm Zu erzeugende Instanz des Info Fensters begin about TAboutForm Create Application Erzeuge Instanz des Info Fensters about ShowModal Fenster modal anzeigen about Release Speicher freigeben wenns geschlossen wird end a Methodenname FileNewExecute Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft 271 H Quelltexte Methodenbeschreibung Erzeugt ein neues und leeres Kindfenster procedure TMDIMain FileNewExecute Sender TObject begin CreateMDIChild Unbenannt IntToStr MDICHildCount 1 Erzeuge neues Kindfenster end Methodenname OptionsCFGExecute Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Erzeugt das Einstellungs Formular und zeigt es an procedure TMDIMain OptionsCFGExecute Sender TObject var CFG TCFGForm Zu erzeugende Instanz des Einstellungs Formulars begi
227. erpre tierende Wort generiert Es wird das Axiom angegeben und die Anzahl der Ableitungsschritte Zuletzt wird das Wort mit Hilfe von OpenGL graphisch dargestellt Das 3D Modell kann entweder als BMP Grafik oder als POV Ray Datei gespeichert werden Abbildung 3 4 Eine Rosenbliite erstellt von LinSys3D 65 3 Programme die L Systeme simulieren interpretieren 3 5 Zusammenfassung und bersicht Eine tabellarische Zusammenfassung der Programme ist in den Tabellen 3 1 a und b zu fin den Ein wichtiger Aspekt von Lparser ist dass es eine gro e Verbreitung aufweisen kann Dem entsprechend existieren unz hlige Tools f r Lparser Einige sollen kurz genannt werden PlanD Ist eine kleine Entwicklungsumgebung f r den Lparser Alle Einzelkomponenten von Lparser sind in einer graphischen Oberfl che vereint Der Viewer zeigt ein 3D Modell der aktuellen Grammatik an Wird etwas ver ndert wird das 3D Modell sofort angepasst Plan Lparser Update Da Lparser freie Quelldateien hat bietet es sich an auch diese zu erweitern Ein Autor hat Lparser um parametrisierte L Systeme erweitert LP5 d Lsys32 Ist eine graphische Oberfl che in der ein L System definiert werden kann Zus tzlich bie tet das Programm an viele Parameter von Lparser ber die Oberfl che zu steuern L32 Im Folgenden sollen einige weitere Programme zu L Systemen kurz vorgestellt werden GROGRA GROGRA ist eine Software deren Hauptziel nicht nur
228. erst ndnis f r die Definition eines L Systems zu erh hen werden Editierfelder und die Eingabemaske erstellt Wird eine Produktion hinzugef gt wie beim ffnen einer LS Datei so wird die Produktion daraufhin berpr ft ob die Teile der Produktion auch richtig angegeben wurden 94 5__ Die graphische Oberfl che Ist das nicht der Fall gibt es beispielsweise bei einer Produktion einen Bedingungsteil aber keine Parameter im Produktionskopf dann wird diese nicht angenommen Zus tzlich dazu kann das L System gepr ft werden indem auf den Button Pr fen geklickt wird Dabei wird kontrolliert ob die Anzahl der schlie enden und ffnenden eckigen und geschweiften Klammern in einer Produktion gleich sind Ebenfalls kontrolliert wird ob f r ein Symbol mehrere oder keine Produktion definiert wurde und ob die im Produktionskopf definierten Parameter verwendet wurden oder solche die nicht definiert wurden Auf dem zweiten Reiter k nnen einige Grafikparameter eingestellt werden beispielsweise ob Anti Aliasing verwendet werden soll welche H he und Breite die Grafik haben soll und ob das Grafikformat Targa oder Windows Bitmap sein soll Auf dem letzten Reiter kann die relative Position der Kamera zum Objekt bestimmt werden sowie die relative Position der Lichtquelle zur Kamera Dazu kann ber sechs TTrackBar Komponenten die Einstellung des x y und z Wertes vorge nommen werden Um sich die Auswirkungen zu verdeutlichen kann ein Fenster ein
229. erteilung der St rken vornimmt Im Folgenden werden die M glichkeiten der Mutation an einigen Beispielen verdeutlicht Das urspr ngliche L System hei t FLOWERI LS und die normal erzeugte 3D Grafik ist in Abbil dung 2 34 zu sehen 32 2 Theoretische Grundlagen von L Systemen und deren Evolution Abbildung 2 35 Die nicht mutierte Pflanze Die Blume wurde zwei Mutationsschritten unterzogen Dabei wurden nur zwei Mutationsar ten aktiviert Additions volle St rke und Substitutions mittlere St rke Abbildung 2 36 Eine Mutation der Blume Erneut wurden zwei Mutationsschritte durchgef her nur dieses Mal wurden Angle Deletions und Substitutions sehr hoch angesetzt und Additions sehr niedrig 53 2 Theoretische Grundlagen von L Systemen und deren Evolution Abbildung 2 37 Eine zweite Mutation der Blume Ein weiterer interessanter Aspekt ware es die Mutation dynamisch zu erstellen Der tibliche Ansatz ist eine statische Mutation das hei t ein L System erlebt vor Generierung des Wortes eine Mutation Alternativ kann man auch w hrend der Wortgenerierung nach drei Ableitungs schritten eine Mutation an einer Produktion vornehmen Ja97 Ho03 HLPO1 HP01a HPO1b HPO1c HPO2 KTV99a KTV99b Hol01 2 6 2 Mutation von L Systemen unter Genetischer Programmierung Bei der GP werden die L Systeme als B ume dargestellt siehe Abbildung 2 37 Der Baum ist so organisiert dass von der Wurzel aus das Axiom und d
230. es Lichtes fiir die x Achse LightY real48 Enth lt die Zahl zur relativen Positionierung des Lichtes f r die y Achse LightZ real48 Enth lt die Zahl zur relativen Positionierung des Lichtes fiir die z Achse PathPOV string Speichert den Pfad zu POV Ray als Zeichenkette PathQPOV string Speichert den Pfad zu OuietPOV als Zeichenkette end a Es HY FREE Offentliche globale Variablen Y eee ee ee Y Y er re ee ee ee ee ee var MDIMain TMDIMain Die Instanz von TMDIMain ist ffentlich fur alle anderen Units erreichbar Info TInfo Die Datenstruktur ist ffentlich ftir alle anderen Units erreichbar D3DActive boolean Gibt an ob eine Instanz von TDirect3DForm erzeugt wurde D3DForm TDirect3DForm Globale Instanz der Klasse TDirect3DForm TurtleActive boolean Gibt an ob die Instanz von TTurtleComForm erzeugt wurde TurtleForm TTurtleComForm Globale Instanz der Klasse TTurtleComForm CondForm TCondForm Globale Instanz der Klasse TCondForm CondActive boolean Gibt an ob die Instanz von TCondForm erzeugt wurde PicName string Globe Variable zum speichern von Zeichenketten Name der 257 H Quelltexte Bilddatei uses AboutSource CFGSource ConsoleFormSource ShowPicSource Methodenname openLS Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name filename Bedeutung Dateiname der LS Datei Methodenbeschreibung ffnet eine LS Datei p
231. esult F r die Bedingung sind keine Parameter vorhanden Exit end Wenn ein Wildcardsymbol enthalten ist dann wird kein Bedingungsteil angefugt if Pos con gt 0 then con gt else begin result MDIMain testingCondition con Pr fte ob die Bedingung fehlerfrei ist con ze tor cont gt Formatiere den Bedingungsteil if result lt gt then Wenn ein Fehler in der Bedingung gefunden wurde exit dann Beende die Verarbeitung end result MDIMain testingProductionHead pred Pr fe den Produktionskopf Wurde keine Fehlermeldung erzeugt dann Beende die Verarbeitung ohne die endg ltige Speicherung des formatierten Strings if result lt gt then exit Weist den endg ltigen formatierten String zu new production new production pred substr con Copy production index2 2 length production end EU EEE AN GN JEIEIEIJS JE 2 JE ZI EHE JH EHI EHE JH EHI EHI EHI EHI EHI Methodenname SystemCheck R ckgabewert Typ boolean Bedeutung Gibt zur ck ob die Verarbeitung erfolgreich war Methodenbeschreibung Pr ft die Produktionen ob Schw chen vorhanden sind function TMDIChildMain SystemCheck boolean var i k integer Laufvariable lcon string Enth lt den linken Kontext der Produktion pred string Enth lt den Produktionskopf der Produktion rcon string Enth lt den rechten Kontext der Produktion cond string Enth lt den Bed
232. et werden soll Zuletzt wird anhand des Kommandozeilenargumentes F entschieden ob die Dateien die zwischenzeitig erzeugt wurden gel scht werden sollen oder nicht 4 10 Implementierung der Fassade Bevor die eigentliche Fassade implementiert wird muss Lparser auf die neuen Bed rfnisse auf das Berechnen der Kameraposition und auf das Erzeugen der INFO TXT angepasst wer den Wie bereits erw hnt basiert Lparser Version 5 1 auf der Version 4 Version 4 wurde noch im reinen C geschrieben Die Erweiterungen wurden von Ken Kopp mit C entwickelt Auch die Anpassungen an Version 5 1 die f r die vorliegende Arbeit notwendigen wurden sind in Visual C 6 0 durchgef hrt Um bei Lparser die maximale Ausdehnung der 3D Szene zu erhalten werden globale Variab le definiert die pr fen ob die Koordinaten des Objektes gr er sind als die bisher gespei cherten bevor ein Objekt in die POV Ray Datei geschrieben wird Sind die Koordinaten des aktuellen Objektes gr er sowohl in negativer als auch in positiver Richtung dann werden diese in den Variablen gespeichert Die Objekte werden in den Funktionen Define_form und Save_object abgefangen und gepr ft Zus tzlich wird die Anzahl der Kommandozeilenargumente erh ht bzw um x num y num und z num erweitert damit f r die Kameraposition die Faktoren vorliegen mit denen sie multipliziert werden sollen In der main Funktion werden alle Kommandozei lenargumente im Hinblick
233. ethode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TTurtleComForm FormClose Sender TObject var Action TCloseAction begin TurtleActive false Signalisieren dass es keine Instanz mehr gibt 279 H Quelltexte Action caFree Speicher freigeben end ne ee en Gy i ee ee ee ee ee re eee Methodenname CloseBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Schlie t das Formular wenn auf Schlie en gelickt wird procedure TTurtleComForm CloseBtnClick Sender TObject begin Close Schlie e das Formular end end 280
234. ethodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TMDIChildMain FormClose Sender TObject var Action TCloseAction begin if D3DActive then Falls ein Direct3D Fenster offen ist dann schliebe es D3DForm Close if TurtleActive then Falls ein Fenster mit den Turtle Kommandos offen ist dann schlie e es TurtleForm Close if CondActive then Falls ein Fenster mit den Ausdr cken f r die Bedingung offen ist dann schlie e es CondForm Close Action caFree Gib den Speicher frei end p BS Sk OO OO ek NT NY FF FAN DNW HYNNY FEN NN GN Methodenname ButtonlClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird ausgef hrt wenn der Button zum L schen aller Produktionen geklickt wird procedure TMDIChildMain ButtonlClick Sender TObject begin Wenn Produktionen vorhanden sind dann Frage nach ob diese wirklich gel scht werden sollen if ProductionList Items Count 0 then if MessageDlg Wollen Sie wirklich alle Produktionen l schen mtConfirmation mbYes mbNo 0 mrYes then begin ProductionList Clear Da das L System ver ndert wurde wird der Button zum speichern freigegeben und das L System als modifiziert gekennzeichnet SaveBtn Enabled true if Caption length Caption lt gt then Caption Captiont end end Fe EN Mias CRE o EON E CEE yy
235. etragen wurde if LeftContextEdit Text or RightContextEdit Text or ProHeadEdit Text or ProBodyEdit Text or ConditionEdit Text then begin MessageDlg Die Produktion ist nicht vollst ndig mtError mbOk 0 Exit end Baue den String f r die Produktion zusammen production trim LeftContextEdit Text lt trim ProHeadEdit Text gt r trim RightContextEdit Text trim ConditionEdit Text gt trim ProBodyEdit Text Pr fe die Produktion msg SyntaxLineCheck production new_production Wurde kein Fehler gefunden dann Pr fe ob der String schon existiert in der Produktionsliste ansonsten f ge den String ein if msg then begin for i 0 to ProductionList Count 1 do Durchlaufen der Produktionen begin if CompareText new_production ProductionList Items i 0 then begin MessageDlg Diese Produktion existiert schon mtWarning mbOk 0 Exit end end ProductionList Items Add new_production end Wurde ein Fehler gefunden dann gib diesen aus und Beende die Verarbeitung else begin MessageDlg msg mtError mbOk 0 Exit end Markiere dass das L System ver ndert wurde if Caption length Caption lt gt then Caption Captiont LeftContextEdit Text 244 H Quelltexte RightContextEdit Text ConditionEdit Text ProHeadEdit Text ProBodyEdit Text SaveBtn Enabled true end
236. f ten Klammern ungleich ist oder wenn f r ein Symbol keine oder mehrere Produktionen exis tieren Eine weitere Schw che liegt vor wenn die angegebenen Parameter im Produktions kopf nicht verwendet werden bzw wenn einige verwendet werden die nicht im Produktions kopf stehen Speichern Sie nun das L System indem Sie auf Speichern klicken Dem L System k nnen Sie den Namen Koch geben Jetzt k nnen Sie auf Bild erzeugen klicken Sie sehen nun die quadratische Kochinsel ein Fraktal Sie k nnen nun die Rekursionstiefe auf 3 Stellen und erneut das Bild erzeugen lassen 122 G CD ROM Inhalt G CD ROM Inhalt Verzeichnisstruktur Inhalt Wurzel Applikationen Die Applikationen die entstanden sind Fassade Kompilierte Fassade und Dokumente dazu GUI Kompilierte GUI und Dokumente dazu Diplomarbeit Schriftliche Arbeit als PDF und DOC Abbildungen Grafiken aus der Diplomarbeit Literatur Freie Literaturen zur Diplomarbeit Eco Grammar Uber Eco Grammar Evolution Uber GA und GP L Systeme Uber L Systeme P Systeme Uber P Systeme Sonstiges Enth lt sonstige Literaturguellen Ouelltexte Ouelltexte zu den Applikationen der DA Fassade Ouelltext von Lprocess und Lparser GUI Ouelltext von der GUI Resourcen Programme zum Betrachten der Texte Software zur Diplomarbeit Software zur Diplomarbeit Delphi Erg nzungen JVCL DirectX Kapslung GraphicEx L Systeme Diverse Software zu L Systemen POV Ray POV Ray 3 5 f r Windows und OuietPO
237. f da lt dd i dd d ii i for i 1 i lt 8 itt Vector_copy_r32 last_v ii ver i ii ii 1 9 if ii 0 ii 1 D polygons poly_store 1 0 1 poly_store 1 1 9 poly_store 1 2 10 poly_store 1 3 2 poly_store 2 0 2 178 H Quelltexte poly_store 2 1 10 poly_store 2 2 11 poly_store 2 3 3 poly_store 3 0 3 poly_store 3 1 11 poly_store 3 2 12 poly_store 3 3 4 poly_store 4 0 4 poly_store 4 1 12 poly_store 4 2 13 poly_store 4 3 5 poly_store 5 0 5 poly_store 5 1 13 poly_store 5 2 14 poly_store 5 3 6 poly_store 6 0 6 poly_store 6 1 14 poly_store 6 2 15 poly_store 6 3 7 poly_store 7 0 7 poly_store 7 1 15 poly_store 7 2 6 poly store 7 3 8 poly store 8 0 8 poly store 8 1 16 poly_store 8 2 9 poly_store 8 3 1 Save_object 16 8 c last_col c Vector_copy_r32 p2 last for i 1 i lt 8 itt Vector copy r32 ver i 8 last_v i static void Ground_plane void Add a simple large groundplane r32 l r32 1e5 ver l _x l ver l _y 1 ver 1 _z zmin ver 2 x 1 ver 2 _y 1 ver 2 _z zmin ver 3 x 1 ver 3 y 1 ver 3 _z zmin ver 4 x 1 ver 4 y 1 ver 4 _z zmin poly store 1 0 4 poly store 1 1 3
238. fer gt 1 fprintf stderr ERROR Cannot delete Files n return 1 sprintf buffer DEL info txt if system buffer gt 1 fprintf stderr ERROR Cannot delete info txt n return 1 sprintf buffer DEL lpar2pov pov if system buffer gt 1 fprintf stderr ERROR Cannot delete info txt n return 1 return 0 BORK KR 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 20 Funktionsname checkingEnvVariables R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Parameter Typ chap Name envp Bedeutung Zeigerarray auf die Strings der Umgebungsvariablen Funktionsbeschreibung Pr ft ob eine Umgebungsvariable f r OuietPOV gesetzt wurde und setzt diese gegebenen falls Zur Pr fung wird der Pfad aus der CFG Datei mit den Umgebungsvariablen vergli chen KCKCKCkCkCkCk kk Ck CK KR 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 5 k k char checkingEnvVariables char envp char string int i length next 0 found 0 unsigned int j 0 H Quelltexte Durchsuchen der Umgebungsvariablen nach einem Pfad xf while envp NULL string envp if toupper string 0 P amp amp toupper string 1 A amp amp toupper string 2 T amp amp toupper string 3 H amp amp toupper st
239. fer i NULL User error Not enough memory to allocate file buffer Feedback percentage counter ssssssssssssssess sess sees sess sess sssssssss These vars are used to calculate the percentages counters for feedback static r32 bar_fac2 zero static s16 old_bar2 0 static u32 bar_max2 0 void Process_start2 u32 max Start bar 2 with the maximum value it s going to get bar_fac2 100 0 r32 max bar_max2 max void Process_update2 u32 now Update the percentage counter when needed S16 bar s16 bar fach r32 now if bar old_bar2 old_bar2 bar Message r 3d r bar void Process_end2 void Close bar Message r N ile y ROmline procs nn define OPTCHAR static char empty static char optarg empty static int optind 1 opterr 1 static char opts 150 e 1 option string static s16 s_argc 0 pointers to comline static char s_argv NULL static int getopt int argc char argv const char optstring Taken from a source lib somewhere static char in_pointer empty char find if in_pointer if argv optind optind gt argc argv optind 0 OPTCHAR return 1 162 H Quelltexte in pointer argv optind in pointertr optind tt if in pointer OPTCHAR return 1 if in pointer 0 return 0 find strchr optstrin
240. file 23 n g n ver poly_store i 3 y fprintf volume file 33 n g n ver poly_store i 3 DES else if vrml fprintf volume_file AtSeparator n fprintf volume_file t tMaterial n fprintf volume file t t tdiffuseColor switch color translate colors from lparser to RGB values case 1 fprintf volume file Sf Sf Sf 0 3 0 3 0 3 break case 2 fprintf volume file f Sf Sf 0 8 0 4 0 4 break case 3 fprintf volume file f Sf sf 0 8 0 8 0 4 break case 4 fprintf volume file f Sf f 0 4 0 8 0 4 break case 5 fprintf volume file f Sf f 0 4 0 8 0 8 break case 6 fprintf volume file Sf Sf f 0 4 0 4 0 8 break case 7 fprintf volume file f Sf Sf 0 8 0 4 0 8 break case 8 fprintf volume file Sf Sf bf 0 2 0 5 0 2 break case 9 fprintf volume file f Sf Sf 0 2 0 5 0 5 break case 10 fprintf volume file f Sf Sf 0 2 0 2 0 5 H Quelltexte break case 11 fprintf volume file f St break case 12 fprintf volume file f f break case 13 fprintf volume file f f break case 14 fprintf volume file f f break case 15 fprintf volume file f f break default fprintf volume file f f break fprintf volume_file n t t n Write vertices fprintf volume_file t tCoordi fprintf volume file t t tpoin for t 1 t lt vertices trr fprintf volume file t t
241. file 0 fprintf volume_file 999 nL System Parser Mutator n fprintf volume_file 999 nPolyline Polyface Meshes n if user_form in this case build a block section include the loaded shape and use only block inserts in the entities section of the dxf file fprintf volume_file O nSECTION n2 nTABLES nO nTABLE n2 nAPPID n70 n4 n 0 nAPPID n2 nLPARSER n70 n0 n0 nENDTAB n0 nENDSEC n fprintf volume_file 0 nSECTION n2 nBLOCKS n0 nBLOCK n8 n0 n2 nBLOCK n70 n0 n fprintf volume_file 10 n0 0 n20 n0 0 n30 n0 0 n3 nBLOCK n fprintf volume_file 0O nPOLYLINE n66 n1 n8 n0 n62 n0 n70 n64 n fprintf volume_file 1001 nLPARSER n1071 n18500 n1070 n 11003 n1000 n lt byblock gt n1070 n10999 n for i 1 i lt form ver itr fprintf volume file O nVERTEX n8 n0 n62 n0 n fprintf volume file 10 n g n form c i _x fprintf volume file 20 n g n form c i vii fprintf volume file 30 n g n form c i _z fprintf volume file 70 n192 n for i 1 i lt form pol itt fprintf volume file 0 nVERTEX n8 n0 n62 n0 n fprintf volume file 10 n0 n20 n0 n30 n0 n70 n128 n fprintf volume file 71 n d n form s i 0 fprintf volume file 72 n d n form s i 1 fprintf volume file 73 n d n form s i 2 fprintf volume file 74 n d n form s i 3 fprintf volume file 0 nSEQEND n8 n0 n0 nENDBLK n8 n0 n0 nENDSEC n fprintf volume_file O n
242. filename else strcpy modfilename filename KOR 5 2 5 22 A 22 22 22 A 22 22 22 A 22 22 22 22 22 22 22 22 22 22 20 Funktionsname checkingComline R ckgabewert Typ char Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Parameter Typ int Name argc Bedeutung Enth lt die Anzahl der Argumente von der Kommandozeile 130 H Quelltexte Typ char Name argv Bedeutung Zeigerarray auf die Strings der Kommandozeile Funktionsbeschreibung Die Aufgabe dieser Funktion ist es die Argumente der Kommandozeile verarbeiten und die entsprechenden Variablen mit dem Wert zu setzen Jd 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2072 char checkingComline int argc char argv char string NULL Zwischenspeicherung der einzelnen TU Inhalte des Arrays argv Ef temp MAX_FILENAME_LENGTH c Zwischenspeicher int ds c Z hlvariablen k 0 Zwischenspeicher length 0 Speicherung der L nge eines Strings vom Array argv Ke Falls zuwenige Argumente angegeben wurde wird die Hilfe aufgerufen KE if argc 1 print Comline Help printf Need arguments An Mn return 0 Durchlaufen des Arrays argv for i 1 i lt argc i string argv i N chsten String zuweisen zur Verarbeitung Falls der String eine Option enth lt dann wird der String hier weitervera
243. folgt ess ane ard ud ELT D 1 2 3 rotiert die Schildkr te um die Schrittweite 6 auf der y Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M gt x y z M R 6 rotiert die Schildkr te um die Schrittweite auf der y Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M gt x y z M RL amp rotiert die Schildkr te um die Schrittweite 6 auf der x Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M gt x y z M R 6 A rotiert die Schildkr te um die Schrittweite auf der x Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M EE x y z M RI rotiert die Schildkr te um die Schrittweite 6 auf der z Achse Der Zustand der Schildkr te ver ndert sich wie folgt x yz M T x yz M R 6 rotiert die Schildkr te um die Schrittweite auf der z Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M ES x yz M RC dreht die Schildkr te um 180 um die y Achse Der Zustand der Schildkr te ver ndert sich wie folgt x y z M gt x y Z MR 180 Alle anderen Symbole werden ignoriert Die eckigen Klammern behalten ihre Funktion bei und ver ndern sich nicht bei der Turtle Interpretation im dreidimensionalen Raum Definition 2 28 fiir die Turtle Interpretation im 3D Raum Sei v eine Zeichenkette x Z M der Startzustand der Schildkr te sowie d und feste Parameter Das Bild das von
244. fprintf INIFile Input File Name Lpar2pov povNn getFilenameWithoutExt info filename imageFilename fprintf INIFile Output File Name sMn imageFilename fclose INIFile return 0 BORK kk 22 22 22 22 22 22 22 22 22 kkk kkk 22 22 22 22 22 22 22 HK Funktionsname startQPOV R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Startet QuietPOV welches wiederum ber die GUIExtesion von POV Ray ein Kommando sen det zur Erzeugung eines Bildes mit den Optionen die in der INI Datei enthalten sind KCKCKCkCkCkCk IR A 2 E A 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2072 char startQPOV void FILE OPOVFile NULL char buffer MAX_COMLINE int len strlen info pathQPOV if len 1 sprintf buffer guietpov exe else if info pathQPOV len 1 sprintf buffer Ssquietpov exe info pathQPOV else sprintf buffer s quietpov exe info pathQPOV if QPOVFile fopen buffer rb NULL fprintf stderr ERROR QuietPOV cannot be found n return 1 else fclose OPOVFile puts Creating INI File for OuietPOV if createINI 1 return 1 puts Rendering image sprintf buffer guietpov start pov ini gt pov log if system buffer gt 1 fprintf stderr ERROR Cann
245. g Enth lt alle Variablen einer Produktion die nicht deklariert wurden s string Zwischenspeicher parameter string Kopie von der Parameterliste um gefundene Variablen aus der Liste zu l schen Ts integer Laufvariablen bracket boolean Signalisiert das eine Parameterliste durchlaufen wird begin Variablen Initialisierung result bracket false parameterlist notfoundlist i Pos pred Suche nachdem Anfang einer Parameterliste if i 0 then Ist keine Parameterliste vorhanden Exit dann Beende die Verarbeitung Schleife durchl ufen die Parameterliste der Produktion und entnimmt die Variablen for j i 1 to length pred 1 do Leerzeichen und das Komma werden nicht beachtet if not pred j in then parameterlist parameterlist pred j parameter parameterlist Zuweisung der Kopie der Parameterliste Schleife durchl uft den Bedingungsteil um Variablen zu finden for i 1 to length cond do Ist das n chste Zeichen eine Variable und kein m gliches Zeichen fur eine Ausdruck if not cond i in lt gt amp amp t 0 9 then begin j Pos cond i parameterlist Suche nach der Position des Zeichens in der Parameterliste Wurde ein Eintrag gefunden dann l sche die Variable aus der Liste if j gt 0 then begin S Copy parameterlist 1 j 1 Copy parameterlis
246. g in pointer if find NULL if opterr User_error Option c not known in pointer in_pointer empty return if find 1 if in pointer 1 if optind gt argc if opterr User error No argument for option c in pointer optarg empty else if argv optind 0 OPTCHAR if opterr User_error No argument for option c but found s instead in pointer argv optind optarg argv optindrr else optarg in pointer in_pointer empty else optarg empty in pointertr return find void Get_comline_opt char c boolean found char result Check if comline option c has been used and return parameter if any int f argc char argv argc s_argc argv s_argv optind 1 while f getopt argc argv opts 1 XR LHS GC A strcpy result optarg found TRUE return found FALSE strcpy result void Get_comline_filename char c Get the filename argument from the comline int argc 163 H Quelltexte char argv argc s_argc argv s_argv optind 1 while getopt argc argv opts 1 if optind argc User_error Ran out of arguments before finding file name strcpy c argv optind void Get_comline_progname char c Get the program name from the comline strcpy c s_argv 0 Main lparser vars Set
247. geblendet werden auf dem ein 3D Kubus zu sehen ist Entsprechend der Einstellung der TTrackBar Komponenten werden die Kamera und das Licht umpositioniert Die rechte Seite des Kindfensters besteht lediglich aus sechs TButton Komponenten Unter anderem kann mit den Buttons Bedingungsteil und Turtle Kommandos ein Fenster einge blendet werden in dem die Turtle Kommandos und die erlaubten Zeichen f r g ltige Ausdr cke im Bedingungsteil angezeigt werden Der Button mit der Aufschrift Schlie en sollte selbsterkl rend sein ebenso wie die Buttons Speichern und Speichern unter Wird auf den Button Bild erzeugen geklickt dann wird als Erstes das L System gepr ft Diese Pr fung entspricht der Pr fung die erfolgt wenn auf den Button Pr fen geklickt wird All diese Pr fungen sind nur Warnungen das hei t sie liefern nur Hinweise auf unerwartete Ergebnis se es kann trotzdem ein Bild erzeugt werden Nach der Pr fung werden die aktuellen Einstel lungen in der CFG Datei gespeichert damit Lprocess diese Parameter anwenden kann An schlie end wird ber die JvCreateProcess Komponente Lprocess gestartet Tritt w h rend der Verarbeitung ein Fehler auf wird die Konsolenausgabe dem Benutzer in einem sepa raten Fenster zug nglich gemacht Im Normalfall wird am Ende der Bilderzeugung ein Fens ter ge ffnet in dem das Bild angezeigt wird W hrend der Bilderzeugung ist die Anwendung aktiv das hei t der
248. gen stehen gefolgt von den declare Anweisungen Weiterhin hat POV Ray in seiner Beschreibungs sprache auch Direktiven wie IF und WHILE Eine sinnvolle 3D Szene besteht mindestens aus einer Kamera einer Lichtquelle und einem Objekt Wie eine solche Szene aussehen k nnte wird an folgendem Beispiel deutlich 78 4 Entwurf und Implementierung der Fassade Beispiel 4 4 f r eine 3D Szene Es wird die Beschreibung f r eine einfache 3D Szene unter POV Ray angegeben include colors inc include glass_old inc include metals inc camera location lt 1 5 10 10 gt Kameraposition look at lt 1 5 1 2 gt Kameraausrichtung light_source 500 1000 50 gt Position x y Z color White Farbe plane Ebene 0 du 0Sy Oberfl chennormale 1 Position zur y Achse pigment Muster Schachbrett checker color White Schwarz Wei color Black scale 4 Skalierung sphere lt 0 1 5 2 gt Mittelpunkt 3 Radius texture Textur T_Chrome_5A Chrome pigment Blau color Blue sphere I EZ texture T Glass Glastextur POV Ray kennt als 3D Primitive die Sph re Sphere das Rechteck Box den Zylinder Cy linder den Torus den Kegel Cone und die Ebene Plane Mit Hilfe von CSG Constructi ve Solid Geometry lassen sich aus den 3D Primitiven neue komplexe 3D Objekte erstellen wie zum Beispiel eine Kette Dazu werden Objekte in CSG O
249. ger Laufvariable ParameterList string Ist ein Teilstring des Produktionskopf und enth lt die Parameterliste begin result Initialisierung des Riickgabewerts mit dem Leerstring leftBracket Pos ProHead Zuweisung der Position der ffnenden Klammer rightBracket Pos ProHead Zuweisung der Position der schlie enden Klammer Wurde nur eine Klammer gefunden if leftBracket gt 0 xor rightBracket gt 0 then begin Gib Fehlermeldung zuriick und Beende die weitere Verarbeitung result Im Bedingungsteil befindet sich mindestens ein nicht erlaubtes Zeichen Exit end Ist die linke Klammer hinter der rechten Klammer else if leftBracket gt rightBracket then begin Gib Fehlermeldung zur ck und Beende die weitere Verarbeitung result Rechte Klammer steht vor der linken Klammer Exit end Befindet sich hinter der rechten Klammer noch etwas else if rightBracket lt gt length ProHead and rightBracket gt 0 then begin Gib Fehlermeldung zuriick und Beende die weitere Verarbeitung result Hinter der rechten Klammer steht noch ein Ausdruck Exit end Enth lt der Produktionskopf eine Parameterliste else if leftBracket 1 rightBracket then begin Gib Fehlermeldung zur ck und Beende die weitere Verarbeitung result In der Klammer befindet sich nichts Exit end Pr fe die Parameterliste else if leftBracket gt 0 and r
250. gin CamZLabel Caption FloatToStrF CamZTrack Position 0 5 ffFixed 1 1 Info CamZ CamZTrack Position 0 5 end end DU Y Y Y Y yi EE E CY a SY E FT yy Y Yy FT eee ee ED Y vlr er OIN Methodenname LightXTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm LightXTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightXTrack Position 0 then begin LightXLabel Caption 0 Info LightX 0 end Ansonsten berechne den neuen Wert else begin LightXLabel Caption FloatToStrF LightXTrack Position 0 5 ffFixed 1 1 Info LightX LightXTrack Position 0 5 end end SSIS SI SS SSS SSS SS SS SSS SS LD ELN LD SS FEL FEL FEED FED ED YE FE FEL FED FYD LD Se FED FEED FEL FED FFYN Methodenname LightYTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm LightYTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightYTrack Position 0 then begi
251. gsvariable eseizt ist A INI Datei erzeugen QuietPOV aufrufen POV Ray Ja beenden Nein POV Ray beenden Ja Umgebungs variable en S Fehler beim Konvertieren konvertieren Dateien l schen Pr fe LS Datei auf Fehler x Nei Ende mit Fehlermeldung Lparser Ende ohne aufrufen Fehlermeldung Abbildung 4 5 Ablaufdiagramm der Fassade Dateien l schen 83 4 Entwurf und Implementierung der Fassade Nach dem Start der Fassade werden die Kommandozeilenargumente verarbeitet d h es wird gepr ft ob die Kommandozeilenargumente und deren Kombinationen g ltig und vollst ndig sind So wird beispielsweise die Kombination e E nicht zugelassen weil verlangt wird dass POV Ray sofort und nach der Verarbeitung beendet wird AuBerdem wird gepriift ob Dateinamen vorliegen und ob nach den Dateinamen noch weitere Eingaben vorhanden sind Wurde bei der Priifung ein Fehler festgestellt wird das Programm mit einer Fehlermeldung beendet Bevor der Prozess zur Bilderzeugung weiter abgearbeitet wird wird zuvor gepriift ob die vollstandige Abarbeitung fiir die definierte Zielsetzung notwendig ist Wird beispielsweise als Kommandozeilenargument angegeben dass nur eine Datei konvertiert oder nur POV Ray beendet werden soll dann wird die Aktion auf der Stelle ausgefiihrt und das Programm ohne Fehlermeldung und ohne ein Bild zu erzeugen beendet Die zweite Schnittstelle zur Fas
252. gt F gt AA abb a gt F 4 Ableitungsschritt a gt F a a F F F gt aaFFF 5 Ableitungsschritt F F F F F gt FFFFF Fest Abbildung 2 5 b Ableitungsbaum fiir Beispiel 2 7 Zu keinem Zeitpunkt ist nach einer Ableitung ein Wort erstellt worden das nur aus Terminal zeichen besteht daher wurde kein giiltiges Wort fiir diese Sprache entwickelt 15 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 3 5 L Systeme mit Tabellen Das T in einem TOL System steht f r table Bis jetzt waren alle OL Systeme in einer idealisierten Umgebung Die Zellen eines Organis mus haben sich geteilt sind abgestorben oder einfach erhalten geblieben Dabei spielte die Umgebung in der sie leben keine Rolle In der realen Welt verh lt es sich anders Hier ent wickelt sich jeder Organismus so wie seine Umgebung es ihm vorgibt So w chst eine Pflan ze beispielsweise nicht wenn sie kein Wasser oder keine Sonnenstrahlen erh lt Um verschiedene Umgebungssituationen in L Systemen zu ber cksichtigen wurden TOL Systeme eingef hrt Jede Tabelle eines TOL Systems steht f r eine bestimmte Umgebungssi tuation zum Beispiel f r eine Umgebung mit Produktion wenn es warm ist kalt hell oder dunkel Dabei kann zu jedem Ableitungsschritt nur die Produktionen einer Tabelle benutzt werden Durch das Einf hren von TOL Systemen m ssen einige Definition f r die L Systeme ange passt werden Definition 2 12 f r ein TOL Schema HR75
253. gt d Beispiel 2 5 f r ein DOL System HR75 F r G sei folgendes DOL System definiert G MN f a b c d Ae L P S ab a be b bda C 6 d aba a A Auswirkungen Ist ein OL System deterministisch so bedeutet dies dass eine Zelle nicht mehrere Aktionen ausf hren kann Um zum Beispiel abzusterben muss sich die Zelle mittels einer Produktion in eine andere Art von Zelle transformieren die als einziges Zeichen auf der linken Seite das hat 2 2 3 3 Propagierendes L System Das P in einem POL System steht f r propagating Damit ist gemeint dass in keiner Produk tion des L Systems das auftauchen darf Definition 2 8 f r ein POL Schema HR75 Ein OL Schema S x P hei t propagierend wenn es keine Produktion in P der Form a gt e gibt Eine Produktion dieser Form nennt man schende Produktion Andernfalls nennt man S nicht propagierend 12 2 Theoretische Grundlagen von L Systemen und deren Evolution Definition 2 9 fiir ein POL System HR75 Ein OL System G X P ist propagierend genau dann wenn S propagierend und O ist Die in Beispiel 2 4 definierte Grammatik G f r ein 0L System ist nicht propagierend weil das Zeichen c eine l schende Produktion darstellt welches gegen die Definition 2 8 verst t Fol gendes Beispiel stellt ein POL System dar Beispiel 2 6 f r ein POL System G Ser a b c d S amp 2 P Sab a a bc b gt bda d cc d
254. gth s 0 then rcon else Ansonsten baue einen rechten Kontext zusammen ECON An 2 pss end Existiert ein Inhalt f r den Produktionskopf 270 H Quelltexte if length pred 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Es existert kein Produktionskopf exit end result testingProductionHead pred Lass den Produktionskopf pr fen auf seine Gultigkeit if result lt gt then Ist der Produktionskopf ungiiltig exit if cond lt gt then Existiert ein Bedingungsteil begin result testingCondition Copy cond 4 length cond Pr fen des Bedingungsteils auf seine Giiltigkeit if result lt gt then Ist der Bedingungsteil ung ltig exit end production lcon pred rcon cond succ Zusammensetzen der Produktion line production Produktion zurtickgeben end tt a RER ee a ea a a a a ee ee ee Y a ee ep es Methodenname CreateMDIChild Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name Name Bedeutung Enth lten den Titel ftir das neue Kindfenster Methodenbeschreibung Erzeugt ein neues Kindfenster mit dem tibergebenen Namen procedure TMDIMain CreateMDIChild const Name string var Child TMDIChildMain Zu erzeugende Instanz des Kindfensters begin Child TMDIChildMain Create Application Erzeugen des Kindfensters Child Caption Name Titel dem Kindfenster tib
255. h an dieser Regel weil dadurch die einzelnen Teile besser ge wartet und getestet werden k nnen Au erdem erh ht die Ausgliederung auch die bersicht lichkeit des Quelltextes JAHO1 Die Funktion checkingCFGFile versucht zun chst die Datei LPROCESS CFG zu ffnen Wenn der Versuch fehlschl gt dann wird die InfoStruct mit Standardwerten gef llt und die Funktion createDefaultCFGFile aufgerufen die eine CFG Datei mit Standardwerten erzeugt Danach wird in einer Schleife die Datei ausgelesen und gefundene Optionen in einer Variablen von der Struktur CFGStruct gespeichert Im Anschluss werden alle Variablen aus der InfoStruct belegt 88 4 Entwurf und Implementierung der Fassade die noch keinen giiltigen Wert aufweisen Zum Suchen eines Wertes aus der ausgelesenen Datei gibt es eine Hilfsfunktion namens getValueFromList Die Funktion bekommt einen Zeiger auf das Array aus Variablen der Struktur CFGStruct iibergeben sowie einen String der den zu suchenden Bezeichner enth lt Zuriick geliefert wird der Wert des Bezeich ners als String oder NULL wenn der Bezeichner nicht gefunden wurde Das n chste Modul hei t com line c Es ist eine Sammlung von sieben Funktionen f r die Kommandozeile die drei triviale Funktionen enth lt die Funktion print_Welcome die einen einfachen Starthinweis ausgibt die print Comline Help die ber die Benut zung der Fassade einen kurzen Hilfebildschirm ausgibt sowie die Funktion print_Com
256. h bei BNKF98 Die fr heste Form der Genetischen Programmierung geht auf Smith 1980 zur ck Er arbei tete mit Bit Strings wie es bei den Genetischen Algorithmen der Fall ist mit dem Unter schied dass die von ihm angewendeten Bit Strings eine variable L nge hatten In den Folge jahren werden weitere fr he Formen der Genetischen Programmierung entwickelt bis Koza 1992 die jetzige Form der Genetischen Programmierung einf hrte Wie die GA wird auch die Genetische Programmierung benutzt um ein Problem zu l sen wenn dies mit herk mmlichen L sungsmethoden nicht oder nicht in einer akzeptablen Zeit erreicht werden kann Beispiele f r den Anwendungsbereich sind Intrusion Detection Evolu tion von Hardware Eigenschaften und Klassifikation von Bildern in Geo Systemen Bei der Genetischen Programmierung werden Programme einer Evolution unterzogen Die Population ist eine Menge von Programmen Da sich ein Programm nicht in Bit Strings for mulieren l sst m ssen dazu andere Datenstrukturen eingesetzt werden Indizierter Speicher Abbildung 2 21 Automat als Datenstruktur 41 2 Theoretische Grundlagen von L Systemen und deren Evolution Die drei g ngigsten Datenstrukturen sind der Baum eine lineare Seguenz von Befehlen und ein Automat Beim Einsatz von Automaten kann man sich drei Bereiche vorstellen eine CPU einen Stackspeicher und einen indizierten Speicher Dabei ist die CPU der eigentliche Auto mat in dem ein Start und
257. hics Achievement Award Przemyslaw Prusinkiewcz ACM SIGGRAPH 1997 http www siggraph org awards 1997 AchievementAward html Stand 06 2004 Arne Sch pers und Rudolf Huttary Daniel Diisentrieb CH Java C und Delphi im Effizienztest Teil 2 c t Heft 21 2003 ab S 222 Heise Zeitschriften Verlag 2003 Hrsg Toolbox Redaktion Visual C 6 C amp L Computer und Literaturverlag 1999 Johannes Waldmann L Systeme Vorlesungsskript Universitat Leipzig Institut f r Informatik 2001 http www informatik uni leipzig de joe edu ss01 I l pub ps Stand 06 2004 Dietmar W tjen Automatentheorie und Formale Sprachen Vorlesungsskript Skript zur Vorlesung Automatentheorie und Formale Sprachen an der Techni schen Universitat Braunschweig 1999 Gerhard Willms Das C Grundlagen Buch DATA BECKER GmbH amp Co KG 1995 Mair Zamir Arterial Branching within the Confines of Fractal L System For malism J Gen Physiol Band 118 S 267 275 The Rockefeller University Press 2001 http www jpg org cgi content full 118 3 267 Stand 05 2004 117 D Zusammenfassung der wichtigsten Literaturquellen D Zusammenfassung der wichtigsten Literaturquellen Zur Theorie von L Systemen HR75 PL90 Zur graphischen Interpretation von L Systemen PL90 Zu Genetischen Algorithmen und Genetischer Programmierung Mi99 Ja97 BNKF98 Bo04 Zur Mutation von L Systemen Ja03 Ja97 Hol01 Zur Programmentwickl
258. hreibung von vollst ndigen Stra enz gen und allen Geb uden ver wendet werden B 03 Federn Federn weisen eine hnliche Struktur wie Bl tter auf Deshalb kann vom Wissen der Pflanzenmodellierung profitiert werden um auch Federn zu modellieren Gw03 Theoretische Informatik Ki Ze Einordnung in die Chomskyhierarchie Rozenberg zeigt in HR75 wie mit Hilfe der EOL Systeme eine Verbindung zur Choms kyhierarchie aufgebaut werden kann Weiterhin wird versucht wie in G 96 L Systeme so weit wie m glich in die Chomskyhierarchie einzugliedern Weitere Quelle zum Thema Wa01 Komplexit t von L Systemen F r komplexere L Systeme ist es schwer wenn nicht unm glich die Berechnungskom plexit t zu bestimmen Wie schon im Kapitel ber die Wachstumsfunktionen erw hnt ha ben Rozenberg und Salomaa in The Mathematical Theory of L Systems gezeigt dass die Wachstumsfunktion von DOL Systemen allgemein eine Kombination aus exponentieller und polynominaler Funktion ist Weitere Quellen zur Komplexit t von L Systemen LS92 Ke86 Zugehorigkeitsproblem Eine zentrale Frage im Bereich der Formalen Sprachen ist ob ein willkiirliches Wort zur Sprache einer Grammatik geh rt F r grundlegende OL Systeme wird das Problem in HR75 behandelt Aquivalenzproblem Eine weitere Forschungsrichtung in diesem Bereich setzt sich mit der Frage auseinander ob zwei willkiirliche Grammatiken von L Systemen dieselbe Sprache erzeugen Auch hi
259. i auf ffnen ge hen Dort suchen Sie sich eine vorhandene LS Datei aus und ffnen diese Nach dem ffnen erscheint ein neues Fenster siehe Abbildung 5 2 Auf der rechten Seite des Fensters befinden sich mehrere Buttons Einer besitzt die Aufschrift Bild erzeugen auf die sen klicken Sie um die 3D Grafik f r das L System zu erhalten Die Bilderzeugung kann unter Umst nden l nger dauern Wenn das Bild erzeugt wurde ff net sich ein Fenster in dem die 3D Grafik enthalten ist Parallel dazu liegt die 3D Grafik im Verzeichnis von Visual L Durch einen Klick auf das Bild schlie t sich das Fenster wieder Wenn Ihnen das Bild zu klein ist k nnen Sie auf den Reiter Einstellungen des Fensters klicken in dem das L System ge ffnet ist und dort die H he und Breite der Grafik in Pixel angeben Au erdem k nnen Sie angeben ob das Targa Format zur Speicherung der Grafik verwendet werden soll und ob beim Erstellen der 3D Grafik die Anti Aliasing Funktion akti viert werden soll Das Anti Aliasing entfernt unsch ne Treppeneffekte in der 3D Grafik durch das Aktivieren dieser Option kann die Bilderzeugung jedoch bis zu 40 l nger dauern Nicht immer entsprechen die voreingestellte Kamera und Lichtposition den eigentlichen W nschen Um eine Umpositionierung vorzunehmen kann auf den Reiter Kamera und Licht geklickt werden Auf dieser Seite befinden sich einige Schieberegler mit denen sich die Werte f r die Kamera und
260. i schen den L Systemen und den Sprachen der Chomskyhierarchie existieren Deshalb wird hier auf Kapitel 2 2 3 vorgegriffen und ein Beispiel f r ein L System pr sentiert Die genaue ren Definitionen folgen dann dort Im Beispiel 2 1 wird eine Grammatik G f r ein L System definiert Dabei steht X f r die Menge aller Symbole die in dieser Grammatik verwendet werden P f r die Menge aller Pro duktionen und o f r das Axiom mit dem gestartet wird Beispiel 2 1 ftir ein einfaches L System Das Beispiel zeigt ein einfaches triviales L System G X a P a aa o a Die Ableitung der ersten f nf Schritte entwickelt folgendes Wort 4 a aa aaaa gt aaaaaaaa gt aaaaaaaaaaaaaaaa oder auch kurz aa L Systeme haben zwei wichtige Eigenschaften welche die wesentlichen Unterschiede zu den Chomskysprachen beinhalten Einer dieser Unterschiede ist dass L Systeme nicht zwischen Terminalzeichen und Nichtter minalzeichen unterscheiden mit Ausnahme der EOL Systeme Das Wichtige an den Zeichen ist dass diese nur enthalten sein d rfen wenn f r sie eine Ableitung existiert Der zweite Unterschied liegt bei den Ableitungen Bei Sprachen der Chomskyhierarchie ist die Ableitung sequenziell Jeder Ableitungsschritt besteht nur aus der Ableitung einer Produk tion Die L Systeme f hren Ableitungen parallel aus So wird bei jedem Ableitungsschritt f r jedes Zeichen eine Produktion ausgef hrt Damit einher geht auch das Problem
261. i Vertex Punkten bestehen Hintergrund daf r ist die Hardware der 3D Grafikkarten und der darauf befindlichen Vertex Shader Um einen Kubus unter Direct3D zu visualisieren muss der Kubus in Dreiecke zerlegt werden Da f r jede Seite zwei Dreiecke ben tigt werden kommt man auf zw lf Dreiecke und auf 36 Vertex Punkte weil jedes Drei eck aus drei Vertex Punkten besteht Nun muss eine Datenstruktur angelegt werden in der die 36 Vertex Punkte gespeichert werden k nnen 96 5__ Die graphische Oberfl che Microsoft bietet dazu das FVF Flexible Vertex Format an Uber die Konstante D3D8T_CUSTOMVERTEX kann eine flexible Datenstruktur ftir Vertex Punkte festgelegt werden So ben tigt man neben der x y und z Koordinate noch die Farbe und den Norma len Vektor fiir jeden Vertex Punkt Bevor die 3D Szene von Direct3D gerendert werden kann miissen einige Funktionen die Szene initialisieren und vorbereiten So werden in der Prozedur D3DInit die gesamten Komponenten zur Kommunikation und Erzeugung der 3D Szene initialisiert In der Prozedur D3DInitScene wird die 3D Szene vorbereitet An dieser Stelle werden Lichtquelle und Kamera positioniert und bei der Lichtquelle werden diverse Einstellungen festgelegt bei spielsweise der Typ der Lichtquelle und deren Reichweite Um die Szene richtig beleuchten zu k nnen muss den Dreiecken noch ein Material zugewiesen werden Uber die Datenstruk tur des Materials kann festgelegt werden ob das Objekt das Lich
262. iasing Wn printf CNtNtConverting ls file to Version 5 and continue Wn printf cAtXMtConverting only n printf E t tClose POV Ray at the end of this process n printf eNtNtClose POV Ray now n printf FNtNtKeep all intermediate Files Mn Mn 128 H Quelltexte printf WARNING By converting a file without a destination file n printf the content of the old file will be overwritten n n KKK RK RR kk E kk kk KK KK KK 22 22 22 22 22 22 22 kkk k Funktionsname print_Comline_Error Parameter Typ char Name errorString Bedeutung String der die Fehlermeldung enth lt Funktionsbeschreibung Sollte bei der Verarbeitung der Argumente der Kommandozeile ein Fehler auftreten dann gibt die Funktion eine formatierte Fehlermeldung aus KCKCKCkCkCkCk IR ARR IR A 2 2 22 2 222 2 22 2 2 22 2 5 void print_Comline_Error char errorString fprintf stderr ERROR s n errorString fprintf stderr Usage lprocess options ls file to convert 1s file n fprintf stderr Type to get help n n BRK KR 2 2 22 22 2 2 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2220 Funktionsname checkingState R ckgabewert Typ char Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Pr ft ob die Argumente der Kommandozeile so gew hlt wurden dass ein reibungsloser Ab la
263. ibt einen String mit einer Fehlermeldung zurtick oder eine leere Zeichenkette Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name Condition Bedeutung Enth lt den Bedingungsteil einer Produktion Methodenbeschreibung Die Methode pr ft ob ung ltige Zeichen im Bedingungsteil enthalten sind function TMDIMain testingCondition const Condition string string var i integer Laufvariable begin result R ckgabewert wird mit dem Leerstring initialisiert Durchlauf den kompletten String und Pr fe jedes Zeichen auf seine G ltigkeit for i 1 to length Condition do If not ConditronLr Xn ar AY DE EE he s V tuor ne ty chem begin result Im Bedingungsteil befindet sich mindestens ein nicht erlaubtes Zeichen Exit end end 260 H Quelltexte Methodenname testingProductionHead Ruckgabewert Typ string Bedeutung Gibt einen String mit einer Fehlermeldung zurtick oder eine leere Zeichenkette Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name ProHead Bedeutung Enth lt den Produktionskopf einer Produktion Methodenbeschreibung Pr ft ob der Produktionskopf einen g ltigen Ausdruck darstellt function TMDIMain testingProductionHead const ProHead string string var leftBracket integer Stellt die Position der ffnenden runden Klammer da rightBracket integer Enth lt die Position der schlie enden runden Klammer i inte
264. ichen noch weitere Zeichen exit end Ist das Wildcardzeichen nicht vorhanden aber runde Klammern if Pos s 0 and Pos s gt 0 or Pos s gt 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Im Kontext sind keine Klammern erlaubt Exit end Ist das linke Kontext Zeichen in echt ein Teil des Bedingungsteils if 1 gt 0 and i gt 1 then begin g Tas UO end Ist kein linker Kontext vorhanden if Pos s gt 0 and length s 1 or length s 0 then lcon 268 H Quelltexte else ansonsten baue den linken Kontext zusammen Leon 3 s lt ta j Pos gt line Zuweisung der Position des Anfangs des Produktionsk rpers S trim Copy line j 2 length line Kopiere den Produktionsk rper heraus Enth lt die Zeichenkette etwas if length s 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Es existiert kein rechter Produktionsteil Exit end succ gt ts Baue den Produktionsk rper zusammen Existiert kein Bedingungsteil und kein rechter Kontext if k j 1 and 1 0 then begin rcon cond pred trim Copy line i 1 j 1 i Kopiere den Produktionskopf heraus end Existiert ein rechter Kontext aber kein Bedingungsteil else if k lt gt j 1 and 1 0 then begin S trim Copy line k 1 j 1 k
265. ie Produktionen abge hen Der Knoten Axiom enth lt als Blatter den Ausdruck des eigentlichen Axioms Der Kno ten Produktionen verzweigt in alle Produktionen die das L System hat Eine einzelne Produk tion wird wiederum in eine inke Seite auch predecessor genannt und eine rechte Seite auch successor genannt aufgeteilt Die inke Seite enth lt als Blatt das Symbol und seine Parame terliste Die rechte Seite geht in eine Seguenz iiber Um die GP effektiv bei L Systemen an zuwenden ist die Strukturierung der rechten Seite der Produktion im Baum sehr wichtig Fiir die GP ist eine zu flache Hierarchie nicht sinnvoll wenn man auch Teilb ume manipulieren m chte Daher gibt es so genannte Seguenzen die der rechten Seite eine Hierarchie aufzwin gen sollen Eine Sequenz besteht wieder aus n Bl ttern in Abbildung 2 37 ist n 3 Sollte die rechte Seite nur n Symbole enthalten w re die Verzweigung der Symbole hier beendet und die Bl tter w ren mit den Symbolen gef llt Sind mehrere Symbole vorhanden muss ein Blatt durch eine weitere Sequenz ersetzt werden bis alle Symbole einem Blatt zugeordnet sind Bei der GP d rfen eckige Klammern nur paarweise auftauchen Sind trotzdem ein paar eckige Klammern in der Produktion vorhanden so wird der Inhalt der eckigen Klammern in einem Teilbaum dargestellt Der Knoten wird mit Stack bezeichnet und erzeugt die gleiche Anzahl an Bl ttern wie die Sequenz 54 2 Theoretische Grundlagen von L Systemen un
266. iert Rozenberg an der Technische Universit t Warschau Er schlie t sein Studium 1965 mit dem Master and Engineer degree in computer science ab Drei Jahre sp ter erh lt er den Doktortitel an der Polish Academy of Sciences in Warschau Bis 1979 ist er an vier Universit ten Professor seit diesem Zeitpunkt ist er Professor an der Universit t Leiden im Fachbereich Informatik und lebt auch dort Er erh lt 1997 den G del Preis und ist an zwei Universit ten Honorar Doktor unter anderem an der TU Berlin Rozenberg entwickelte zu den L Systemen viele theoretische Grundlagen und brachte dadurch die L Systeme entschie den weiter Es sei darauf hingewiesen dass viele Angaben zur Person im Internet falsch sind Sei es z B sein Geburtsland Sterbe oder Geburtsdatum 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 L Systeme Es werden nun die wichtigsten Aspekte der L Systeme dargestellt Dazu geh ren die wich tigsten L Systeme selbst sowie die Interpretation des Wortes eines L Systemes in graphische Kommandos Au erdem wird ein Blick auf die Klassifikation von L Systemen in Bezug auf die Chomskyhierarchie gegeben sowie ein Entscheidungsautomat f r die Computergrafik pr sentiert Das Kapitel endet mit einem kurzen berblick ber die Anwendungsm glichkeiten von L Systemen 2 2 1 Wichtige Unterschiede zu den Chomskysprachen Um einen Einstieg in die L Systeme zu bekommen wird gezeigt welche Unterschiede zw
267. ierung Name rcon Bedeutung Enth lt den rechten Kontext einer Produktion Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name headList Bedeutung Ist eine Liste in der alle Symbole enthalten sind ftir die bisher eine Produktion gefunden wurde Typ var string Name missHeadList Bedeutung Zeiger auf eine String Liste in dem alle Symbole enthalten sind fur die keine Produktion gefunden wurde Methodenbeschreibung Diese Methode pr ft eine Produktion nach deren enthaltenen Symbolen und ob es fur die Symbole eine Produktion existiert procedure TMDIChildMain TestingForExistingSymbols const succ string const lcon string const rcon string const headList string var missHeadList string var i integer Laufvariable bracket boolean Wird gesetzt wenn im Produktionsk rper eine Parameterliste gefunden wurde begin bracket false Initialisierung 235 H Quelltexte Wenn es einen linken Kontext gibt dann durchlaufe diesen und Priife ob ein Symbol enthalten ist f r das noch keine Produktion gefunden wurde und speichere es in der Liste missHeadList ab if length lcon gt 0 then for i 1 to length lcon do if not succ i in ewe WAR Vp A UA ro NE hr rary gt Gt vt Dietz IX Sr WE Int Er um 39 We ha ED ir LTA LI LEE ER H or Pos succ i headList gt 0 or Pos succ i missHeadList gt 0 then missHeadList missHeadList succ i Wenn es ein
268. ightBracket gt 0 then begin Zuweisung der Parameterliste und abschneiden der Leerzeichen am Anfang und Ende ParameterList trim Copy ProHead leftBracket l rightBracket l leftBracket Ist die Parameterliste leer if length ParameterList 0 then begin Gib Fehlermeldung zur ck und Beende die weitere Verarbeitung result In der Klammer befindet sich nichts Exit end Durchlauf die Parameterliste und pr fe ob diese nur aus g ltigen Zeichen besteht for i 1 to length ParameterList do if not Parameterlist i in a z A Z then begin result In der Klammer befindet sich mindestens ein nicht erlaubtes Zeichen 261 H Quelltexte Erlaubt sind nur Buchstaben und das Komma Exit end end Ende der If Anweisung end eee YCH EN Methodenname convertRealForTracker R ckgabewert Typ integer Bedeutung Gibt eine Ganzzahl ftir die Tracker Komponente zurtick Parameter Typ real48 Name value Bedeutung Flie kommazahl aus der CFG Datei Methodenbeschreibung Rechnet eine Flie kommazahl aus der CFG Datei um in eine ganze Zahl f r die Tracker Komponente Dabei ist die Aufl sung 0 5 und geht von 10 bis 10 function TMDIMain convertRealForTracker value real48 integer begin Wenn die Zahl gr er 10 ist dann weise das Maximum
269. il diese Arbeit ist die Bild generierung aus der Grammatik Zum Evolutionsteil steuert diese Arbeit die M glichkeiten der Mutation von L Systemen bei Soweit es den Anwendungsteil betrifft werden im Wesent lichen Entw rfe angerissen wie der Anwendungsteil aussehen k nnte Au erdem wird erl u tert wozu solch ein System gebaut wird Wie in Abbildung 2 39 zu sehen ist besteht das System aus drei Teilen Zwei dieser Teile bilden das Grundger st Die eigentliche Anwendung des Systems ist unabh ngig vom Grund ger st 56 2 Theoretische Grundlagen von L Systemen und deren Evolution Grundger st Bildgenerierung Evolution Anwendungsm gichkeit aus der Grammatik der Grammatik des Systems Grammatik L System 7 Wort Generierung EE Interpretation f r Renderer Bewertung der Fitness Fitness f bestimmung Abbildung 2 40 Grobe Struktur des Systems 57 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 7 1 Das Grundger st Das Grundger st wird in zwei H lften unterteilt in die Bildgenerierung aus einem vorgege benen L System und in die Evolution Die Bildgenerierung bekommt als Eingabedaten ein L System und die graphische Interpreta tion Dabei basiert die graphische Interpretation auf der Turtle Interpretation Die Grammatik dient als Eingabe f r ein Programm zur Ableitung eines Wortes Das generierte Wort wird mit der graphischen Interpretation einem Modeller bergeben
270. inem L System erl u tert W hrend dessen werden notwendige Begriffe eingef hrt wie zum Beispiel die Begriffe Rekursionstiefe und Produktionen Zuletzt wird die Turtle Interpretation erl utert und mit wenigen einfachen Kommandos illustriert Nach dem theoretischen Teil sollen die Personen kleine Aufgaben l sen So soll zum Beispiel ein bestehendes L System geladen und das Bild erzeugt werden oder ein neues Kindfenster geladen werden sowie die Felder f r Rekursi onstiefe Basiswinkel Basisst rke und Startaxiom exemplarisch ausgef llt werden Zus tzlich dazu soll noch eine Produktion eingegeben werden und die Personen sollen sich den 3D Kubus anschauen und mit den Schiebereglern die Werte f r die Kamera und Lichtquellenpo sition ver ndern Dabei sollen sie kommentieren ob das Ergebnis zu erwarten war 6 2 3 Auswertung 6 2 3 1 Funktionstest Wird beim ffnen einer LS Datei ein Fehler entdeckt wird dies im Kindfenster in der Nach richtenliste eingef gt Alle anderen nicht fehlerhaften Teile werden in die entsprechenden Komponenten des Kindfensters eingetragen Ein Fehler ist beispielsweise wenn die Rekursi onstiefe der Basiswinkel die Basisst rke oder das Startaxiom fehlen Ein weiterer Fehler ist wenn eine Zeile l nger als 1000 Zeichen ist Seitens der Produktionen wird ein Fehler ausge geben wenn der Produktionskopf oder k rper fehlt oder wenn zwar eine Klammer f r den linken oder rechten Kontext vorhanden aber ohne Inhal
271. ingungsteil der Produktion succ ir String Enth lt den Produktionsk rper der Produktion S string Zwischenspeicher missProd string Liste aller Symbole die keine Produktionen haben heads string Liste aller Symbole die eine Produktion haben headdoubles string Liste aller Symbole die mehrere Produktionen haben begin Initialisierung der Variablen result true k 0 missProd heads headdoubles MessageList Clear Durchlaufe die Liste alle Produktionen for i 0 to ProductionList Count 1 do 241 H Quelltexte begin Zerlege ein Produktionsstring in seine Einzelteile StrToProduction ProductionList Items i lcon pred rcon cond succ Teste den Produktionskopf auf Fehler TestingProductionHeads pred heads headdoubles Teste die Produktionsteile nach Symbolen die keine Produktion haben TestingForExistingSymbols succ lcon rcon heads missProd Teste die Produktion nach der Anzahl deren Klammern s TestingForBrackets succ if s lt gt then Ist die Klammernanzahl ungleich begin Gebe eine Nachricht aus MessageList Items Add Warnung in Regel IntToStr i l MessageList Items Add s result false end Teste die Parameterliste ob alle Symbole verwendet werden oder nicht deklarierte verwendet werden s TestingHeadParameterList pred cond succ if s lt gt then Ist die Pr fung erfolgreich gewesen begi
272. ion konvertiert eine LS Datei aus Version 4 in die Version 5 FERRARA IR AR 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 222 2 22 2 222 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 char convertLP4toLP5 char old_filename char new_filename FILE old_file NULL Zeiger auf die zu konvertierende Datei ay new_file NULL Zeiger auf die Zieldatei iA char same file 0 Wird gesetzt wenn Ziel und Quelldatei ut die selben sind EndOfFileSymbol 0 Wird gesetzt wenn das Ende Symbol einer Version 4 Datei erreicht wurde SCH buffer MAX COMLINE Zwischenspeicher old_line MAX_LS_LINE_LENGTH Speichert die gelesene Zeile new_line MAX LS LINE LENGTH Speichert die konvertierte Zeile comment Wird gesetzt wenn ein Kommentar anf ngt int fb y Z hlvariablen 7 length 0 Speichert die Lange einer Zeile ay Offenen der zu konvertierende Datei Kf if old file fopen old filename rt NULL fprintf stderr ERROR File Sa cannot be open to convert Mn old filename return 1 142 H Quelltexte Falls in die selbe Datei konvertiert werden soll dann wird der Inhalt in temp ls zwischengespeichert und sp ter in die Zieldatei umbenannt if new_filename 0 0 same_file 1 new_file fopen temp ls wt else new_file fopen new_filename wt if new_file NULL fclose old file fprintf stde
273. ist und ein sehr gro es Sortiment an Komponenten und Bibliotheken enth lt gibt es dennoch Funktionen und Komponenten die Delphi nicht enth lt Bei der Entwicklung der graphischen Oberfl che wird deshalb auf einige externe Komponenten und Bibliotheken zur ckgegriffen Dabei wurde darauf geachtet dass diese mindestens Freeware wenn nicht sogar Open Source sind Diese externen Bestandteile werden hier kurz dargestellt Dabei wird auch ihr Anteil bei der Entwicklung der Oberfl che verdeutlicht 91 5 Die graphische Oberfl che Die Standard Grafikbibliothek von Delphi versteht zwar das Grafikformat Windows Bitmap aber nicht Targa Da die Fassade auch Targa Dateien erstellt wird eine externe Bibliothek zur Erweiterung der Standard Grafikbibliothek von Delphi ben tigt Mit Gra ist es m glich das Standardobjekt TPicture so zu erweitern dass es auch Targa Grafiken lesen kann Da durch ist es m glich mit jeder Komponente die TPicture zum Laden von Grafiken be nutzt eine Targa Datei anzuzeigen F r die hier entwickelte Oberfl che wird die Komponente TImage verwendet Um das Verst ndnis f r die Variablen zur Positionierung der Lichtquelle und der Kamera zu erleichtern wird zur Visualisierung auf DirectX zur ckgegriffen Nun ist die DirectX APl als COM Objekt ausgelegt und die eigentliche Verwendung f r C C bestimmt Die direkte COM Programmierung ist unter Delphi zwar m glich Ko99 aber nicht unproblematische Daher w re ei
274. j Rule_Found true else if Rules j gt Prd Len gt Rules Rule gt Prd Len Rule j If a rule was found apply it otherwise simply add the current character to the new string if Rule Found i Rules Rule gt Do_Replace i New Len strlen New Str else New_Str New_Len Object_Str it New Str New Len 0 strcpy Object_Str New Str Obj Len strlen Object Str void Print_Object cout lt lt endl lt lt Object_Str lt lt endl void Replace_Str char Search_Str char Strl char Str2 fifo en Function Replace one substring with another This function replaces all occurances of Strl in Search_Str Str2 char Tmp Ptr strstr Search Str Strl Find the first occurance of Strl char Rem_Str SUCC_L int i while Tmp_Ptr NULL Replace this occurance of Strl with Str2 i Tmp_Ptr Search Str strcpy Rem Str amp Search Str i strlen Strl Search Str i 0 strcat Search Str Str2 strcat Search Str Rem Str Find the next occurance of Strl Tmp_Ptr strstr Tmp_Ptr Strl 191 H Quelltexte void Repl_Var_Addr char Search_Str char Var int Addr Essens Function Replace Variables with Address This function replaces all occurances of Var in Search_Str with Addr It is used by the constructor of Rule_Type to initialize the rule s successor char Addr Str MAX NU
275. kann Die nderungen werden dabei nicht im POV Ray 3D Modell gespeichert Lediglich f r Ren derStar 3D Modelle k nnen die Einstellungen gespeichert werden F r alle andere 3D Modelle kann eine INFO TXT Datei generieren werden mit den Informationen ber die Ka meraeinstellungen Das Konvertierungsprogramm hei t LV2POVID Dabei wird nicht nur POV Ray unterst tzt sondern auch ViVid Das Programm erzeugt f r POV Ray eine Szene die kompatibel zur Version 2 X ist Die einzige nderung die im POV Ray Editor ausgef hrt werden muss um zur Version 3 X kompatibel zu sein ist dass die declare Anweisungen ein Semikolon ben ti gen weil diese eine Aufz hlung darstellen Ansonsten kann die Szene sofort gerendert wer den Neben der LPAR2POV POV Datei erzeugt das Programm eine Include Datei LPAR2POV INC in der die Daten der 3D Primitiven beschrieben sind 61 3 Programme die L Systeme simulieren interpretieren Abbildung 3 1 Baum erzeugt von Lparser und gerendert mit POV Ray 3 2 L System Das Programm L System wurde von Timothy C Perz LS4 1999 entwickelt und liegt in der Version 4 01 vor L System basiert dabei auf Lparser mit dem Unterschied dass es eine voll st ndige Windows Applikation mit einer graphischen Oberfl che ist So bindet L System alle einzelnen Komponenten zu einem Programm zusammen und erh ht damit die Transparenz und Benutzerfreundlichkeit Weil es auf Lparser basiert sind alle LS die unter Lparser la
276. ke f r den Bedin gungsteil oder das Formular zur Anzeige der Konsolenausgabe All diese Formulare zeigen lediglich Texte an und bieten nur die M glichkeit der reinen Betrachtung an Ein weiteres triviales Formular ist das Formular zur Anzeige des erzeugten Bildes Auch dieses Formular ist zur reinen Betrachtung da und wird daher nicht im Einzelnen erl utert 5 4 1 Das Hauptformular TMDIMain Visual L ist eine MDI Anwendung MDI steht f r Multiple Document Interface Damit ist gemeint dass die Anwendung ein Hauptfenster hat in dem Kindfenster enthalten sein k nnen Dabei stellen die Kindfenster die eigentliche Anwendung dar Das Hauptfenster bil det den gemeinsamen Rahmen f r alle Kindfenster Durch das MDI Konzept ist es m glich mehrere Instanzen einer Anwendung aufzurufen Das Gegenst ck zu MDI ist SDI dies steht f r Single Document Interface In einem SDI Programm existiert nur ein Fenster f r die Anwendung Der Mehraufwand einer MDI Anwendung ist gerade bei Anwendungen die Editor Funktionen realisieren sollen gerechtfertig 92 5__ Die graphische Oberfl che Denn sie erm glicht es dem Benutzer mehrere Dokumente zu ffnen diese zu vergleichen bzw abzugleichen oder ein Dokument durch ein anderes zu erg nzen ohne dabei zwei In stanzen einer Anwendung zu starten In Abbildung 5 1 ist das Hauptformular der graphischen Oberfl che zu sehen Visuell besteht das Hauptformular nur aus einer Meniileiste eine
277. kingCFGFile void convertLP4toLP5 char old filename char new_filename Lparser void Lv2povid void CorrectingPOVFile void startPOV void endPOV void startQPOV void deleteFiles void checkingEnvVariables char envp KKK KR 22 kk 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 A I kk Funktionsname main R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Parameter Typ int Name argc Bedeutung Enth lt die Anzahl der Argumente von der Kommandozeile Typ Ghar x Name argv Bedeutung Zeigerarray auf die Strings der Kommandozeile Typ char Name envp Bedeutung Zeigerarray auf die Strings der Umgebungsvariablen Funktionsbeschreibung 124 H Quelltexte Die main Funktion delegiert die einzelnen Aufgaben an entsprechende Funktionen wei ter Jd 5 ek f int main int argc char argv char envp char c 0 print_Welcome puts Checking commandline if c checkingComline amp argc argv 1 return c Wird das Programm nur zum beenden von POV Ray oder zum konvertieren einer Datei aufgerufen dann endet hier die Abarbeitung schon if info state amp KILL_POV_AND_CONV_ONLY KILL_POV_AND_CONV_ONLY puts Converting Lparser 4 file into Lparser 5 file if convertLP4toLP5 info filename info conv_filename lt 0 return 1 endPOV printf nFinishing successfu
278. kommt und eine 3D Grafik als Ausgabe liefert Dabei ist die Applikation speziell auf die Be d rfnisse der Evolution zugeschnitten Zus tzlich wird eine graphische Oberfl che f r die Applikation entwickelt um 3D Grafiken etwas komfortabler aus L Systemen erzeugen zu k nnen Abstract This thesis is part of an evolving bigger thesis It will be concerned with Lindenmayer Systems or L Systems and their evolution The most theoretical basics of L Systems will be shown as well as important additions to the basic L System From a theoretical perspective some classifications and an interpretation of L Systems to generate a 3d graphic are ex plained As a basis for the following thesis about the evolution of L Systems some concepts of mutation and possible applications will be discussed From a practical point of view an application will be presented that gets a L System as input and provides a 3d graphic as output The program is especially designed for evolutionary loops of L Systems Additionally to this commandline based application a GUI has been de veloped to generate the 3d graphic of the L System in a comfortable way Keywords L Systems simulated evolution mutation applications of L Systems Lparser POV Ray Inhaltsverzeichnis Inhaltsverzeichnis 1 EINLEITUNG ZU DIESER DIPLOMARBEIT eese eee en nete nennen enne tn nein an 1 1 1 Motivation zur Modellierung von Pflanzen mit L Systemen
279. kton nnr enne 49 Abbildung 2 30 Deletion bei einer Produktion en an 49 Abbildung 2 31 Beispiel f r Duplication an einer Produktion see 50 Abbildung 2 32 Mutation einer Produktion mit Translocapon 50 Abbildung 2 33 Hinzuf gen eines neuen Symbols essere 51 Abbildung 2 34 Der Mutator von L System sess eere 52 Abbildung 2 35 Die nicht mutierte PIamnmz8 u soia Ge rera trad REX eneen 53 Abbildung 2 36 Eme Mutation der Blume u ert eden p e t eee en ed dte 53 Abbildung 2 37 Eine zweite Mutation der Blume anne 54 Abbildung 2 38 Ein L System als Baum dargestellt sss 55 Abbildung 2 39 Mutationsm glichkeiten unter GP Ja03 nee 55 Abbildung 2 40 Grobe Struktur des Systems 57 Abbildung 3 1 Baum erzeugt von Lparser und gerendert mit DON Ray 62 Abbildung 3 2 Beispiel f r eine 3D Grafik von L Swstem sse 63 Abbildung 3 3 3D Modell erzeugt von RayTraced Evobuton esses 64 107 A Abbildungsverzeichnis Abbildung 3 4 Abbildung 3 5 Abbildung 4 1 Abbildung 4 2 Abbildung 4 3 Abbildung 4 4 Abbildung 4 5 Abbildung 4 6 Abbildung 4 7 Abbildung 5 1 Abbildung 5 2 Abbildung 5 3 Abbildung 5 4 Abbildung 6 1 Eine Rosenbl te erstellt von LinSys3D eer Ynr HI I FY I Inn 65 Eine Lilie erstellt mit L SQ0105 s ud iu GR reto casei GN FO 67 Module des Bilderzeugungsprozesses nnr Ynr A HY Y FF nennen 72 Der theoretische der praktische Ablauf sowie die verwendeten Programme 73 Strahlenverfolg
280. ktuelle und die n chste Position ein als Zeichen aufweisen dann ist es ein Kommentar Breche das weitere iterieren der Zeile ab if i 1 lt length amp amp zeile i amp amp zeile i l if changingSide 0 j 0 countOK 0 break Ist das Zeichen ein Gleichheitszeichen dann wechsel die Seite else if zeile i changingSide 1 3 0 Speicher Leerzeichen wenn es eine Pfadoption ist und schon auf die rechte Seite gewechselt wurde Ef else if changingSide amp amp path amp amp zeile i opts counter right j zeile i opts counter right j 0 Fange die n chste Iteration an wenn das Zeichen ein Leer Tabzeichen oder ein Newline Zeichen ist SP else if zeile i zeile i t zeile i n continue Kopiere die Zeichen in die Datenstruktur fiir die linke Seite Setze die Pfadvariable falls der Wert POV oder QPOV ist else if changingSide 0 amp amp j lt MAX CFG LEFTSIDE 1 if j 0 amp amp toupper zeile 0 P toupper zeile 0 O path 1 countOK 1 opts counter left j zeile i opts counter left j 0 Kopiere die Zeichen in die Datenstruktur fiir die rechte Seite else if changingSide opts counter right j zeile i opts counter right j NO 135 H Quelltexte Falls nichts zu
281. ktuellen Konfiguration des Systems w re es w nschenswert das Programm Lparser performanter zu programmieren weil die verwendete Version 5 1 das Beispiel airhorse ls nicht verarbeitet Au erdem w re eine gewisse Plausibilit tspr fung von Vorteil um Warnungen auszugeben wenn zum Beispiel eine Regel nie verwendet wird Weiterhin interessant w re eine Modularisierung der Software und die damit einhergehenden Freiheitsgrade So k nnten verschiedenste L Systeme verwendet werden beispielsweise das selten vorkom mende Table L System Man k nnte sogar so weit gehen mit Timed L Systemen Animatio nen einzubinden Einen zus tzlichen Freiheitsgrad erh lt man durch den Modeller Dieser w rde erm glichen die Interpretationsvorschriften mutieren zu lassen Dadurch kann aus einem Fahrbefehl schnell eine Richtungs nderung werden Da der Modeller bevorzugt eine allgemeine 3D Beschreibung erzeugen soll kann das 3D Modell mit einem Adapter in eine Beschreibung f r verschiedenste Renderer transformiert werden Dadurch w re man nicht an ein bestimmtes Ray Tracing Programm gebunden Seitens der graphischen Oberfl che k nnte versucht werden die Eingabe intuitiver zu de signen Das Ergebnis k nnte auf eine X Frog hnliche Oberfl che hinauslaufen X Frog wird zum Modellieren von Pflanzen verwendet Dabei werden die 3D Modelle aus Komponenten modelliert Nun k nnte man den Nutzer f r eine intuitivere Oberfl che Teile der Pflanze ein zeln mo
282. l Intelligence through Evolution Vorlesungsskript University of Calgary 2003 http pages cpsc ucalgary ca jacob Courses Fall2003 CPSC533 Slides 09 GP pdf Stand 06 2004 Ron Jeffries Ann Anderson und Chet Hendrickson Extrem Programming installed Addison Wesley Verlag 2001 Helmut Jiirgensen und David E Matthews Stochastic OL Systems and For mal Power Series The Book of L Hrsg Grzegorz Rozenberg und Arto Salo maa S 167 177 Springer Verlag 1986 Alica Kelemenova Complexity of L Systems The Book of L Hrsg Grzegorz Rozenberg und Arto Salomaa S 179 191 Springer Verlag 1986 Andreas Kosch COM DCOM fiir Delphi Software amp Support Verlag 1999 Kamala Krithivasan M V Nagendra Prasad und Meena Mahajan Forget ful L Systems Lindenmayer Systems Hrsg Grzegorz Rozenberg und Arto Sa lomaa S 419 436 Springer Verlag 1992 Brian W Kernighan und Dennis M Ritchie Programmieren in C Carl Han ser Verlag 1990 113 C Literaturverzeichnis KR92 KTV99a KTV99b Ku99 Kud86 LA98 Li68a Li68b Lo00 LS92 LT86 Mi93 Mi99 Alica Kelemenov und Miriam Remov ikova 40L and CFG Size of Lan guages Lindenmayer Systems Hrsg Grzegorz Rozenberg und Arto Salomaa S 177 182 Springer Verlag 1992 Gabriella K kai Zoltan T th und Robert Vanyi Modelling Blood Vessels of the Eye with Parametric L Systems Using Evolutionary Algorithms Proc
283. l keine CFG Datei erstellt werden kann mtError mbOk 0 Close end Schreibt die Standardwerte in die neue CFG Datei WriteLn cfg Image bmp WriteLn cfg Height 480 WriteLn cfg Width 640 WriteLn cfg AA off WriteLn cfg POV c programme pov ray for windows v3 5 bin WriteLn cfg QPOV c programme pov ray for windows v3 5 guiext quietpov WriteLn cfg Files off WriteLn cfg CamX 2 0 WriteLn cfg CamY 2 0 WriteLn cfg Camz 2 0 WriteLn cfg LightX 1 0 WriteLn cfg LightY 1 0 WriteLn cfg LightZ 1 0 Initialisiert die Info Struktur ebenfalls mit den Standardwerten nfo Bitmap true nfo AA false nfo Files false nfo Width 640 nfo Height 480 nfo CamX 2 0 nfo CamY 2 0 nfo CamZ 2 0 nfo LightX 1 0 nfo LightY 1 0 nfo LightZ 150 nfo PathPOV POV c programme pov ray for windows v3 5 bin nfo PathQPOV QPOV c programme pov ray for windows v3 5 guiext quietpov 267 H Quelltexte CloseFile cfg Schlie en der CFG Datei end DEN RR Ic c RS cc lc ccc Rm Methodenname checkLSLine R ckgabewert Typ string Bedeutung Gibt einen String mit einer Fehlermeldung zur ck oder eine leere Zeichenkette Parameter Typ var string Name line Bedeutung Zeiger auf eine Zeile Methodenbeschreibung Pr ft eine Zeile aus einer LS Datei ob diese eine g ltige Produktion ist
284. leich ist Dement sprechend m ssten auch alle anderen Produktionen die das Symbol enthalten ver ndert wer den Insgesamt ist es nicht ratsam die Anzahl von Argumenten oder das Symbol auf der linken Seite einer Produktion zu mutieren Es ist auch nicht ratsam eckigen Klammern einer Point Mutation zu unterziehen denn ein Wort ist nur interpretierbar wenn die Anzahl der offenen und geschlossenen Klammern gleich ist Zu berpr fen ob das Ver ndern einer Klammer Auswirkungen hat ist nur sehr schwer m glich 47 2 Theoretische Grundlagen von L Systemen und deren Evolution Ausgangsproduktion Point Mutation auf Argumente Ersetzen L schen Einf gen Point Mutation auf Symbole Ersetzen L schen Einf gen Abbildung 2 28 Beispiele f r Point Mutation Die folgenden Mutationsarten beziehen sich immer auf die linke Seite der Produktion mit Ausnahme der letzten Inversion Hierbei wird ein zusammenh ngender Teil der Produktion herausgenommen die Reihenfolge der Symbole umgekehrt und wieder an die gleiche Stelle eingef gt Das Einbeziehen von e ckigen Klammern sollte dabei verhindert werden Dadurch ist die Wahrscheinlichkeit sehr hoch dass ein ung ltiges Wort generiert wird Argumente k nnen innerhalb ihres Argumen tenteils invertiert werden es ist dabei nur zu beachten dass alle Operanden mit einem Opera tor g ltig verkn pft sind und dass ein g ltiger Ausdruck entsteht 2 Theoretische Grundl
285. line_Error die eine formatierte Fehlermeldung auf der Standardfeh lerausgabe ausgibt Die eigentliche Verarbeitung und Interpretation der Kommandozeilenar gumente verrichtet die Funktion checkingComline In dieser Funktion wird als Erstes die Argumentenliste von argv durchlaufen und auf Optionen durchsucht Dazu wird in den Strings gesucht ob das erste Zeichen ein Minus ist Die folgenden Zeichen werden in einer for Schleife so lange durchlaufen bis der String endet Die einzelnen Zeichen werden in einer switch Anweisung ausgewertet Trifft das Programm auf ein unbekanntes Zeichen wird das Programm mit einer Fehlermeldung beendet Trifft das Programm stattdessen auf die Zeichen H oder W wird eine Funktion aufgerufen die versucht eine Zahl aus dem String zu extrahieren H und W sind die einzigen Kommandozeilenargumente denen ein Wert folgen kann Die Funktion zur Extraktion der Zahl hei t extractValueFromString Diese Funktion bekommt den String bergeben die Position von der ab die Zahl anfangen soll sowie die Information wohin die Zahl gespeichert werden soll Zur ck geliefert wird die Anzahl der verarbeiteten Zeichen Folgt beim Durchsuchen der Strings von argv ein String der kein Minuszeichen am Anfang enth lt dann ist es ein Dateiname Das Durchsu chen und Interpretieren der Option endet an dieser Stelle Nun wird ausgewertet wie viele Dateinamen bergeben wurden Wurden zu viele bergeben endet
286. listung aller eingebundenen Komponenten der Klasse PageControll TPageControl GrammarSheet TTabSheet OptionsSheet TTabSheet Panel2 TPanel RunBtn TButton Panel3 TPanel GroupBoxl TGroupBox RecursEdit TEdit BasisAngleEdit TEdit BasisThickEdit TEdit AxiomEdit TEdit Splitterl TSplitter Panel4 TPanel Labell TLabel Label2 TLabel Label3 TLabel Label4 TLabel GroupBox3 TGroupBox AACheck TCheckBox TargaCheck TCheckBox WidthEdit TEdit Labell2 TLabel HeightEdit TEdit Labell3 TLabel LightCamSheet TTabSheet GroupBox4 TGroupBox Labell4 TLabel Labell5 TLabel Labell6 TLabel GroupBox5 TGroupBox Labell7 TLabel 231 Ouelltexte Labell8 Labell9 Imagel SaveBtn T T EE T SaveDialog SaveAsBtn CamXTrack CamYTrack CamZTrack CamZLabel CamYLabel CamXLabel LightXTrac LightYTrac LightZTrac LightZLabe LightYLabe LightXLabe GroupBox2 Splitter2 Panell T Splitter3 Panel5 T CheckBtn Panel9 MessageL Panel6 Splitter Panel7 EditBtn DelBtn Buttonl Panel8 Panell0 Label5 Label6 Label7 Label8 Label9 Labell0 T Labelll RightConte LeftContex ProHeadEdi ConditionE ProBodyEdi AddBtn TB Panelll T Production DelAllMsgB Direct3DBt Panell2 Panell3 Panell4 Panell5 Splitter4 Add2Btn UpdateBtn CloseBtn CondBtn Label20 Button2 p p p S p D
287. lly MnMn return 0 else if info state amp KILL POV ONLY KILL POV ONLY endPOV printf AnFinishing successfully n n return 0 else if info state amp CONVERT ONLY CONVERT_ ONLY puts Converting Lparser 4 file into Lparser 5 file if convertLP4toLP5 info filename info conv filename 1 return 1 printf nFinishing successfully MnMn return 0 puts Checking CFG file if checkingCFGFile lt 0 return 1 puts Checking Environmentvariables if checkingEnvVariables envp lt 0 return 1 if info state amp CONVERT CONVERT puts Converting Lparser 4 file into Lparser 5 file if convertLP4toLP5 info filename info conv filename lt 0 return 1 startPOV puts Starting Lparser if Lparser lt 0 return 1 puts Finishing Lparser puts Starting LV2POVID if Lv2povid lt 0 return 1 puts Finishing LV2POVID puts Correcting POV File if CorrectingPOVFile lt 0 return 1 puts Finishing Correction puts Starting Render Process if startQPOV lt 0 return 1 125 H Quelltexte if info state amp KILL POV KILL POV endPOV if info state amp KEEP FILES 0 puts Deleting nonrelevant files if deleteFiles lt 0 return 1 printf AnFinishing successfully n n return 0 Dateiname globals h BORK 25 25 22 22 22 22 22
288. low the next char in the string the current char in the string Marks last recursion level during growing phase Store all vars and do fraction 181 H Quelltexte case trope_amount fraction else Restore thick thick_l ang ang_l dis dis_l dis2 dis2 1 trope_amount trope_l break case save ang ang if next ang r32 0 017453 Get_value amp i if last_recur ang fraction Set_rot ang upp Utrl t how Cl C2 C3 v Vector copy r32 v fow Util_t lef Cl C2 C3 v Vector_copy_r32 v lef Vector normalize fow Vector normalize lef ang save ang break case Save ang ang if next ang r32 0 017453 Get value amp i if last recur ang fraction Set_rot ang upp UEL how CL 302 03 v Vector_copy_r32 v fow Util t lef Cl C2 C3 vl Vector copy r32 v lef Vector normalize fow Vector normalize lef ang save ang break if next r r32 0 017453 Get_value amp i else if rand_set r r32 0 017453 rand_amount else r r32 6 0 a Rnd r r32 2 0 x Set_rot a upp Util t ow Cl C2 C3 v Vector_copy_r32 v fow Util tef Cly 023 03 viz Vector copy r32 v lef Vector normalize fow Vector normalize lef a Rnd r r32 2 0 x Set_rot a lef Util t fow Cl G2 E35 vw Vector cop
289. lt Len if Succ i j else if Succ i j else if Succ i j else if Succ i j else if Succ i j else if Succ i j else if Succ i j else if Succ i j if j 0 Succ i j else if Succ i j 1 else if Succ illj else if Succ illj else if Succ illj else if Succ illj void Rule_Type Swap_Sizes y Succ a ay Sete amp Succ i j Succ i jl amp 7 Sucat LI AN ANY Suceti rjl 5 Succ i j s rt Im Succ il j Tp Suce fr EJ eU Succ i j Nee Succ i j Mo sues it td Pets This function swaps the sizes of drawing commands in a rule s successor It makes the following exchanges 205 It Si H Quelltexte F lt gt Z f lt gt z lt gt int Len for int i 0 i lt N_Succ i Len strlen Succ i for int j 0 j lt Len j 4 if Succ i j F Succ i jl Z else if Succ il j Z Succ i j F else if Succ il j f Succ i j z else if Succ il j z Succ i j f else if Succ il j Succ i j else if Succ il j Succ i j void Rule Type Rand Expr This function introduces randomness into all the expressions in a rule s successor It multiplies the first term in each expression by a random constant between 2 and 2 int j N Paren char Rem Str SUCC L
290. lten Definition 2 1 f r ein OL Schema HR75 Ein OL Schema ist ein Paar S Z P wo X das Alphabet von S eine endliche nicht leere Menge ist und P die Menge der Produktionen von S eine endliche nicht leere Teilmenge von Xx X ist so dass va Ga a o e P 2 1 Jedes Symbol aus X muss mindestens eine Produktion in der Menge der Produktionen P auf weisen Dabei ist es ausgeschlossen dass e das leere Wort auf der linken Seite einer Produk tion steht Definition 2 2 fiir die direkte Ableitung HR75 Sei S X P ein OL Schema sei x a a mit m 0 und a X f r j 1 m und sei y X Dann sagt man dass x direkt y in S ableitet und deutet es mit x gt y an aber auch nur genau dann wenn GL a 04 An J und y Q 2 2 Definition 2 3 fiir die endliche Sprache HR75 F r ein OL Schema S P f r ein Wort x in X und f r eine nicht negative ganze Zahl n wird die endliche Sprache L S x durch Induktion ber n definiert L S x x 2 3 Ae b aei e L S s and 2 2 4 Definition 2 4 fiir ein OL System HR75 Ein OL System ist ein Tripel G 2 P wo S E P das OL Schema ist auch das Schema von G genannt und das Axiom von G ist ein Wort ber X Definition 2 5 ftir L G HR75 Sei G 2 P 2 ein OL System Die Sprache die G generiert oder einfach die Spra che von G bezeichnet mit L G ist definiert als L G fx v 2 5 Es folgt
291. m dar welches f r sich selbst definiert ist Au erdem existiert eine globale Zeit f r das kosystem Zu jedem Zeitschritt f hren die Agenten und die Umgebung eine Ableitung ihres Zustandes aus F r die Agenten ist immer nur eine Teilmenge der Produktio nen aktiv dies ist abh ngig vom Zustand der Umgebung Mit diesen Produktionen leiten die Agenten ihren neuen Zustand ab Im zweiten Schritt agieren die Agenten auf die Umgebung mit speziellen action rules Da bei kann ein Agent nur eine Produktion in einem Zeitschritt ausw hlen Die Auswahl ist dabei abh ngig vom Zustand des Agenten Die Aktion die ein Agent mit der Produktion auf die Umgebung aus bt hat Priorit t gegen ber der Entwicklung der Umgebung Die Symbole der Umgebung die durch diese Aktion nicht ber hrt wurden entwickeln sich weiter indem sie eine Produktion aussuchen und diese anwenden Die action rules wirken sich auch auf die Zust nde der anderen Agenten aus CPS95 Cs02 38 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 4 Genetische Algorithmen Im Folgenden wird eine kurze bersicht zum Thema Genetische Algorithmen gegeben Sie stellen die Basis dar auf der sp ter die Mutation von L Systemen besprochen werden Aus f hrliche Literatur zu dem Thema ist in Mi99 Ja97 zu finden 1975 f hrte John Holland in Adaption in Natural and Artificial Systems die Genetischen Algorithmen ein Die genetischen Algorithmen ko
292. me Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Methode wird aufgerufen wenn auf den Button Speichern unter geklickt wird procedure TMDIChildMain SaveAsBtnClick Sender TObject begin Markiert das L System das es modifiziert wurde damit es gespeichert werden kann if Pos Unbenannt Caption lt gt 1 then Caption Unbenannt SaveBtn Click end ee r a Y ee ee ee ee eS eer ETC eke EL eS aS ee ee a a ee a I a a a ui Methodenname RunBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Wenn auf den Button Bild erzeugen geklickt wird dann wird diese Methode aufgerufen procedure TMDIChildMain RunBtnClick Sender TObject begin F hre einen Check des L Systems durch und wenn Warnungen vorhanden sind Frage den Benutzer nach ob der ein Bild erzeugen m chten if SystemCheck false then if MessageDlg Es liegen Hinweise zum Lindenmayer System vor 13 wollen Sie trotzdem fortfahren mtInformation mbYes mbNo 0 mrNo then Exit 248 H Quelltexte Speicher den Inhalt der Info Struktur in die CFG Datei if saveToCFG then begin Speicher das L System wenn es modifiziert wurde if Caption length Caption then SaveBtn Click Wenn das L System nicht gespeichert werden konnte dann Verlasse die Methode if Caption length Caption then Exit
293. me Nein Ja http www geocities com tperz L4Home htm RayTraced 1 1 1997 Nguyen Duc Cuong Nein Parametrisierte stochastische Ja Nein Evolution http www stud tu ilmenau de juhu GX RTEvol Timed Table PDBOL Systeme LinSys3D 1 2 2001 Andrea Esuli Nein Parametrisierte stochastische kon Nein Ja http web tiscali it esuli LinSys3d textsensitive PDBOL Systeme Tabelle 3 1 a bersicht ber die Software zu L Systemen Viewer Formate Mutation Vorteile Externer Viewer Drahtgittermodell DXF RAW POV Anzahl der Mutations Viele Tools Sourcen WRL BLB RDF schritte viele Formate breite Un terst tzung Drahtgittermodell 3D Modell mit DXF BMP JPG Verschiedene ein Mutation Viewer Ran ohne Texturen Textur Farbe w hlbar stellbare Parameter dom Generator GUI Nein POV Treiber Nein Viele L Systeme Treiber abh ngig m chtige Sprache 3D Modell Multi Camera BMP POV Nein Viele L Systeme Viewer Fullscreen mehrere Lichtquellen O Komponentenansatz penGL Tabelle 3 1 b bersicht ber die Software zu L Systemen 68 Nachteile Nur PDBOL Systeme viele Ein zelprogramme einfache Mutation Wenige Formate und l uft nicht stabil Keine Mutation kein Viewer keine gute Dokumentation Keine Mutation wenige Formate komplexe Handhabung 4 Entwurf und Implementierung der Fassade 4 Entwurf und Implementierung der Fassade 4 1 Der Begriff der Fassade Mit dem Wort Fassade bringt man h ufig ein Geb ude in Ve
294. mm 6 1 4 Auswertung 6 1 4 1 Performancetest Die Auswertung erfolgt in der Reihenfolge der Abarbeitung der Fassade Der erste Verarbei tungsschritt ist die Konvertierung der LS Datei in die Version 5 Konvertiert werden f nfmal 117 Dateien Das Ergebnis ist in Tabelle 6 1 zu sehen Die Dateien sind in der Regel klein und das Ersetzen einzelner Zeichen ben tigt nicht viel Zeit 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 3 Sek 3 Sek 3 Sek 3 Sek 4 Sek 3 20 Sek Tabelle 6 1 Zeit zum Konvertieren von 117 Dateien Der n chste Schritt ist die Verarbeitung der Dateien durch Lparser Dazu werden zehnmal 101 Dateien zur Verarbeitung an den Lparser weitergegeben Dabei wurde der Lparser f nfmal in der kompilierten Debug Version und f nfmal in der Release Version verwendet Interessant ist dass die Debug Version gegen ber der Release Version zwar dreimal gr er ist aber auch fast dreimal schneller Wegen der extremen Langsamkeit von Lparser werden 6 Dateien nicht verwendet weil sie eine zu lange Verarbeitungszeit mehrere Stunden oder Tage ben tigen w rden 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 3 48 Min 3 49 Min 3 50 Min 3 50 Min 3 54 Min 3 50 20 Min Tabelle 6 2 Zeit f r die Verarbeitung von 101 Dateien vom Lparser in der Debug Version 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 10 01 Min 9 58 Min 9 59 Min 10 00 Min
295. mm fast un m glich macht Es besitzt nur eine sehr knappe und nicht vollst ndige Dokumentation Der komplette Aufbau einer Beschreibungs Datei ist nicht erkl rt Das Gleiche gilt f r viele Funk tionen die in der Abarbeitung eine wichtige Rolle spielen Der Vorteil von Lparser liegt in seiner weiten Verbreitung denn dadurch bietet sich M glich keiten schnell und umfassend Information zu dem Programm im Internet zu erhalten Des Weiteren ist Lparser ein Open Source Programm das hei t der Quellcode kann herunter gela den und beliebig ver ndert werden ohne dabei eine Lizenzbestimmung zu verletzen Dies gilt aber nur f r das Hauptprogramm Lparser selbst andere Teile des Softwarepaketes sind nicht Open Source beispielsweise die Programme LViewer und LV2POVID Lparser hat daf r einige andere Nachteile So besitzt die Version 4 nur die M glichkeit PDBOL Systeme zu interpretieren Lediglich die Kommandos der Turtle Interpretation sind parametrisiert Dar ber hinaus sind einige Teile von Lparser nicht fehlerfrei So werden zum Beispiel von LViewer immer die gleichen Kamerapositionen f r vollkommen unterschiedliche 3D Modelle erzeugt und LV2POVID bernimmt diese Daten nicht richtig in die POV Ray Datei Aber der wichtigste Grund hinsichtlich der Entscheidung f r Lparser ist dass die Syntax der Beschrei bungs Datei einfach und intuitiv ist Das macht das Verstehen von L Systemen viel leichter und damit auch deren Gebrauch Au erdem kann de
296. mmen aus der Genetik Dabei enth lt ein Chromosom auch Genotyp genannt die Erbinformationen Das Individuum das entsteht wird Ph notyp ge nannt Genetische Algorithmen werden benutzt um f r ein Problem f r das auf blichen Wegen keine L sung gefunden wird in einer akzeptablen Zeit eventuell doch noch eine L sung zu finden In GA werden die Chromosomen durch Bit Strings repr sentiert wobei jedes Bit den Wert 0 oder 1 einnehmen kann In einer Programmiersprache wie Pascal w rde man ein boolesches Array zur Repr sentation eines Chromosoms nehmen Der prinzipielle Ablauf eines GA ist in Abbildung 2 17 illustriert erzeuge zuf llige Anfangspopulation ra 5 Abbruchkriterium rgebnis N erf llt Pi ausgeben nein estimme Fitness aller f N Bestimme Fitness aller End e Individuen der Population i 0 SE Te ja S Gen Gen 1 lt i nein rr w hle zuf llig einen Pr genetischen Operator aus w hle ein Individuum fitnessbasiert aus w hle ein Individuum w hle 2 Individuen fitnessbasiert aus fitnessbasiert aus f hre durch Mutation f hre durch Crossover f hre durch Reproduktion f ge Individuum f ge Individuum f ge Kinder in in neue Population in neue Population neue Population eir Abbildung 2 18 PAP eines GA Sch03 39 2 Theoretische Grundlagen von L Syst
297. mmentaren in der Form Einstellung Wert erfolgen muss Des Weiteren gilt dass alle Werte von der Kommandozeile eine h here Priori t t haben als in der CFG Datei Wenn zum Beispiel beim Kommandozeilenaufruf die Anti Aliasing Funktion angegeben wird und in der CFG Datei steht ein off dann wird das Anti Aliasing trotzdem f r die Bilderzeugung mit benutzt Die Datei LPROCESS CFG ist eine einfache Textdatei 4 9 Ablauf der Fassade Bevor auf die Implementierung der Fassade eingegangen wird soll der Ablauf der Verarbei tung in der Fassade gekl rt werden Dazu ist in Abbildung 4 5 das Ablaufdiagramm darge stellt welches nachfolgend besprochen wird Eine Raute symbolisiert dabei die Ausfiihrung einer Aktion und deren Auswertung Ein Rechteck steht ftir das Ausfiihren einer Aktion in der keine Auswertung stattfindet 82 4 Entwurf und Implementierung der Fassade Kommandozeilen argumente verarbeiten Nein Priife Ausgabe von Lparser auf Fehler Pr fe auf Nein G ltigkeit Pr fe ob Dateien vorhanden Ja sind Ende mit Fehlermeldung Nein Ja Nur Konvertieren amp POV Ra beenden LV2POVID aufrufen POV Datei Nur POV Ra y korregieren beenden Ende ohne Fehlermeldung Existiert schon eine POV Ray Instanz Nein POV Ray starten Nur Konvertieren Nein CFG Datei auslesen Pr fe auf G ltigkeit Ja Pr fe ob mgebun
298. n Sucht die Position des Bedingungsteils substr Copy production index2 2 indexl 3 index2 Kopiert den rechten Kontext heraus Ist im rechten Kontext ein Wildcard und dahiner befinden sich Zeichen dann gib eine Fehlermeldung aus if Pos substr gt 0 and length substr gt 1 then begin result Der rechte Kontext enth lt neben dem Zeichen noch weitere Zeichen Exit end Ist im rechten Kontext eine runde Klammer dann gib eine Fehlermeldung aus if Pos substr 0 and Pos substr gt 0 or Pos substr gt 0 then begin result Im Kontext sind keine Klammern erlaubt Exit end Wenn kein Wildcardsymbol enthalten ist dann formatiere den String if Pos substr 0 then substr gt substr else substr e index2 Pos gt production Sucht die Position des Produktionsk rpers con Copy production index1 42 index2 3 indexl Kopiert den Bedingungsteil heraus 240 H Quelltexte Ist im Bedingungsteil ein Wildcard und dahiner befinden sich Zeichen dann gib eine Fehlermeldung aus if length con gt 1 and Pos con gt 0 then begin result Die Bedingung enth lt neben dem Zeichen noch weitere Zeichen Exit end Es wird gepruft ob eine Parameterliste vorhanden ist wenn ein Bedingungsteil vorhanden ist if Pos con 0 and Pos pred 0 or Pos pred 0 then begin r
299. n auf das Zentrum des Objektes a b Abbildung 4 6 Beispielhafte Kameraposition f r a 3D Szenen und b 2D Szenen Nach Beendigung von Lparser wird anhand der Ausgabe von der Fassade gepr ft ob ein Feh ler in einer Regel vorlag Zusammen mit der Nummer der Regel wird dann eine Fehlermel dung ausgegeben Bevor LV2POVID gestartet wird muss gepr ft werden ob alle notwendigen Dateien vorhan den sind das hei t ob die INFO TXT die LV2POVID CFG und die OUTPUT INC gefunden wurden Die INFO TXT enth lt die Daten f r die Kameraposition wobei es kein Fehler ist dass die Daten in der Datei doppelt vorhanden sind LV2POVID erkennt die INFO TXT nicht an wenn die Daten nicht doppelt vorhanden sind In der LV2POVID CFG steht der Pfad f r das Programm Fractint Zwar wird das Programm Fractint nicht verwendet trotzdem muss die Datei mit irgendeinem Pfad vorhanden sein ansonsten startet LV2POVID nicht Auch die von Lparser erzeugt Beschreibungs Datei OUTPUT INC muss vorhanden sein denn wenn eine der drei Dateien nicht vorliegt wird das Programm mit einer Fehlermeldung beendet Nachdem LV2POVID die OUTPUT INC in eine richtige POV Ray Datei umgewandelt hat wird die von LV2POVID erzeugte POV Ray Datei korrigiert Die OUTPUT INC hei t zu diesem Zeitpunkt LPAR2POV INC Die zu korrigierende Datei hei t LPAR2POV POV Sie beinhaltet die Daten f r die Kamera und f r die Lichtquelle Da LV2POVID trotz der INFO TXT die Daten nicht richtig in die POV Da
300. n dann gebe eine Nachricht aus MessageList Items Add Warnung in Regel IntToStr i 1 MessageList Items Add s result false end end Wurde f r eine Symbol mehrere Produktionen gefunden if length headdoubles 0 then begin Dann gebe eine Nachricht aus MessageList Items Add Warnung F r folgende Symbole gibt es mehrere Produktionen Copy headdoubles 1 length headdoubles 1 result false end Sind Symbole vorhanden f r die im ersten Durchgang keine Produktionen gefunden wurde if length missProd gt 0 then Dann Durchlaufe die Liste und pr fe ob nach der Aufnahme aller Symbole nun Produktionen f r das Symbol vorhanden sind for i 1 to length missProd div 2 do begin if i 1 then k 1 else k k 2 if Pos missProd k heads 0 then S s Copy missProd k 2 end missProd s Sind weiterhin Symbole vorhanden f r die keine Produktion existieren dann gib eine Nachricht aus if length missProd gt 0 then begin MessageList Items Add Warnung F r folgende Symbole existiert keine Produktion Copy missProd 1 length missProd 1 result false end end a a Gi Dd ausm an a a TETUER Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll 242 H Quelltexte M
301. n LightYLabel Caption 0 Info LightY 0 end Ansonsten berechne den neuen Wert 217 H Quelltexte else begin LightYLabel Caption FloatToStrF LightYTrack Position 0 5 ffFixed 1 1 Info LightY LightYTrack Position 0 5 end end P M P eee Methodenname LightZTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TCFGForm LightZTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightZTrack Position 0 then begin LightZLabel Caption 0 Info LightZ 0 end Ansonsten berechne den neuen Wert else begin LightZLabel Caption FloatToStrF LightZTrack Position 0 5 ffFixed 1 1 Info LightZ LightZTrack Position 0 5 end end Ce de See NN d lt ND EN RI eNO a a ae a Ne NS aN IR TEE eI aR a ey a Yy Methodenname SearchPOVBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Methode sucht nach den Pfad von POV Ray wenn auf den entsprechenden Button geklickt wurde procedure TCFGForm SearchPOVBtnClick Sender TObject var temp
302. n 1 0 Modulbeschreibung Das Modul enth lt Funktion die nicht direkt einem anderen Modul zugewiesen werden konn ten FRR IK A 2 2 22 2 2 2 kk kk 2 2 E 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 BORK KR 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 A 22 22 22 22 A 22 22 22 22 22 22 22 2 2 22 22 2 2 20 INCLUDE DATEIEN FERRI KR IR ARR IR A 2 2 22 2 22 2 2 202 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2072 finclude lt stdio h gt finclude lt Windows h gt 139 H Quelltexte finclude globals h VASE 25 25 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 2220 Funktionsname deleteFiles Riickgabewert Typ int Bedeutung Gibt einen Fehlerstatus zurtick 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung L scht alle Dateien die in den Zwischenschritten erzeugt wurden KCKCKCkCkCkCk 2 2 22 RR I kk 2 2 E 2 22 2 2 202 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 222 2 22 2 2 22 2 5A char deleteFiles void char buffer MAX_COMLINE sprintf buffer DEL log if system buffer gt 1 fprintf stderr ERROR Cannot delete Log Files n return 1 sprintf buffer DEL in if system buf
303. n CFG TCFGForm Create Application Erzeuge Instanz CFG ShowModal Zeige das Formular modal an end SoHo Y FR FN PH eet ae eo eo ee ee ee ee eee ere Methodenname FileOpenlAccept Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Offnet eine Datei und erzeugt ein Kindfenster mit dem Inhalt der Datei procedure TMDIMain FileOpenlAccept Sender TObject begin openLS FileOpenl Dialog FileName Erzeuge Kindfenster mit dem Inhalt der Datei end Eechen Methodenname FormCreate Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird beim erzeugen des Formulars aufgerufen Es l d die Info Struktur mit den notwendigen Informationen procedure TMDIMain FormCreate Sender TObject var cfg TextFile File Handle f r die CFG Datei begin DecimalSeparator Setzt fest dass der Punkt den Nachkommateil symbolisiert AssignFile cfg LPROCESS CFG Weise den File Handle den Namen der Datei zu i Reset cfg Sit ffne Datei zum lesen und deaktiviere tempor r 212 H Quelltexte die I O Pr fung if IOResult lt gt 0 then Konnte die Datei nicht ge ffnet werden begin defaultCFG Dann erzeuge eine Standard CFG Datei Exit und Verlasse die Methode end fillInfo cfg F ll den Inhalt der Info Struktur mit den Daten d
304. n Regel der linke Kontext nicht verwendet wird Gleiches gilt auch f r bool sche Ausdr cke Wenn die Regel auf jeden Fall angewandt werden soll dann kann das Wildcardzeichen eingesetzt werden Au erdem ist man nicht gezwungen die Produktion vollst ndig zu beschreiben Wenn es keine kontextsen sitive Regel ist dann kann der kontextsensitive Teil wegfallen Das Gleiche gilt f r den Be dingungsteil von L Systemen Beispiel 4 3 f r Regeln in LS Dateien Im Folgenden werden einige Produktionen angegeben die in einer LS Datei auftreten k nnten a gt F F F b 5 b x x gt A gt c Ff f Fa lt c gt F gt F Fal Ein Fehler in Lparser ist die Interpretation der Kommandozeilenargumente Nicht alle Kom mandozeilenargumente werden zuverl ssig interpretiert Das liegt daran dass Lparser zur Auswertung der Argumente auf eine Funktion namens Get_Comline_opt zuriickgreift F r diese Funktion wird vorher ein so genannter Option String definiert aus dem die g lti gen Optionen abgeleitet werden Um Lparser problemlos in den Bilderzeugungsprozess zu integrieren wird das Programm erweitert unter anderem auch die Anzahl der Kommandozei lenargumente Als die neuen Argumente an den Option String angeh ngt wurden hat Lparser beim Aufruf mit den Argumenten immer einen Fehler geworfen Erst nachdem die Position der neuen Argumente im Option String auf die Mitte verlegt wurde wurden keine Fehler mehr geworfen Ungew
305. nd Befehle tiber die Schnittstelle von OuietPOV entgegenzunehmen Falls bei der Verarbeitung ein Fehler auftritt gibt die Fassade den Wert 1 an das Betriebssystem zuriick Die globals h enth lt zwei wichtige Strukturen die InfoStruct und die CFGStruct In der InfoStruct sind alle wichtigen Informationen fiir den Verlauf der Bilderzeugung enthalten die w hrend der Verarbeitung ben tigt werden Der Inhalt der Variablen ergibt sich aus den Werten der Kommandozeile und aus den Optio nen der CFG Datei So sind zum Beispiel Variablen in der InfoStruct die die H he und Breite der Grafik in Pixel speichern oder Variablen die den Pfad fiir POV Ray und Quiet POV enthalten Besonders hervorzuheben ist die Variable state Diese 8 Bit Variable spei chert in jedem Bit eine bestimmte Einstellung beispielsweise ob als Ausgabeformat das Tar ga oder das Bitmapformat verwendet werden soll Daher kann die Variable mit Bitmaskie rungen abgefragt und gesetzt werden Die einzelnen Bedeutungen der Bits k nnen aus der Abbildung 4 7 entnommen werden Die Struktur CFGSt ruct wird als Zwischenspeicher zum Einlesen der CFG Datei benutzt Sie besteht aus zwei char Arrays die als left und right bezeichnet werden In left wird die linke Optionsseite und damit auch der Bezeich ner einer Option gespeichert right speichert entsprechend die rechte Optionsseite und da mit den Wert eines Bezeichners Der restliche Inhalt der globals h besteht aus diversen Pr prozessor Anw
306. ndet sich ordnungsgem obwohl Lparser abgest rzt ist Um die L nge einer Zeile zu ndern muss im Quelltext von Lparser eine Pr prozessor Anweisung ge ndert und Lparser neu kom piliert werden 102 6 Tests und Auswertung der entwickelten Software 6 2 Test der graphischen Oberfl che 6 2 1 Testumfang Der Test der graphischen Oberfl che teilt sich in zwei Bereiche auf Erstens soll die Funktio nalit t der Software getestet werden und zweitens eine Usability Studie ber die Anwendbar keit der graphischen Oberfl che pr sentiert werden Der Funktionstest soll im laufenden Betrieb zeigen wie die Anwendung auf Fehleingaben reagiert bzw wie sie auf Probleme mit den Inhalten von LS Dateien und oder mit dem In halt in der CFG Datei umgeht F r die Usability Studie werden freiwillige Personen gesucht Diese werden mit dem theoreti schen Wissen zu L Systemen ausgestattet und im Anschluss daran mit der Oberfl che kon frontiert Im Anschluss daran sollen sie einfach kleine Aufgaben l sen 6 2 2 Testdurchf hrung Beim Funktionstest werden die Inhalte von LS Dateien und der Inhalt der CFG Datei manipu liert um Fehler zu provozieren und die Reaktion des Programms zu beobachten Seitens der Oberfl che werden bei den Eingabefeldern und Schiebereglern die Grenzwerte ausgetestet Bei der Usability Studie werden die Personen mit den theoretischen Grundlagen der L Systeme vertraut gemacht Dazu wird der Vorgang der Ableitung bei e
307. ne Ableitung ber a b von ab Abbildung 2 6 zeigt den Ableitungsbaum p 0 1 P1 a gt a p 0 2 lt P1 b gt b a b zx 2x 1 Ableitungsschritt a a b b gt aabb IN AN AN AN 2 Ableitungsschritt aaa aaa b b b b b b gt aaaaaabbbbbb p 1 1 x a gt a3 p 1 3 UN b gt gt b3 gt p 1 2 lt P2 a gt gt a3 gt p 1 4 lt Pz b gt b3 gt v 2 2 a v 2 7 b Abbildung 2 6 Ableitungsbaum vom Beispiel 2 8 Definition 2 20 f r die Ableitungen eines TOL Systems HR75 Wenn G 2 7 ein TOL System ist und S 2 7 ein TOL Schema dann ist eine Ableitung in S auch eine Ableitung in G Im Einzelnen eine Ableitung mit dem trace x x in G derart das x c ist eine Ableitung ber x in G 2 2 3 6 L Systeme mit Verzweigungen Schon im Ur L System f hrt Lindenmayer Verzweigungen ein Bis jetzt wurde darauf noch nicht weiter eingegangen Das B in diesen BOL Systemen steht f r branching oder auch f r bracketed weil die eckigen Klammern diese Verzweigungen darstellen Viele Autoren neh men die Verzweigungen in ein L System mit auf und bezeichnen dieses L System nicht expli zit mit einem B Ein Autor hat in einem Artikel Ke86 sehr eng mit Lindenmayer zusam mengearbeitet als es um Verzweigungen in L Systemen ging und diese entsprechend defi niert Daher soll zur Vervollst ndigung seine Generalisierung mit aufgef hrt werden Dabei stehen die Zeichen f r den Anfang einer Verzweigung und
308. ne Kapslung der DirectX API f r Delphi sehr w nschenswert Realisiert wurde dies durch das JEDI Project http delphi jedi org dessen Ziele die Entwicklung von Bib liotheken und Komponenten ist sowie die Kapslung von API Funktionen und deren vollst n dige Dokumentation Damit verbunden ist die Absicht die M glichkeiten der Entwicklung mit Delphi zu erh hen F r die hier entwickelte graphische Oberfl che wird die Kapslung von DirectX 8 verwendet weil f r diese Version die meisten Informationen f r die Entwicklung unter Delphi vorliegen DX8 Das JEDI Project kapselt jedoch nicht nur die API von DirectX sondern auch die von Win dows Im Sammelsurium der visuellen Komponenten JVCL befindet sich auch eine Kaps lung f r die Windows API CreateProcess die Komponente JvCreateProcess mit dieser wird Lprocess f r die graphische Oberfl che gestartet Diese Komponente wurde verwendet um den R ckgabewert von Lprocess auszuwerten und die Konsolenausgabe umzuleiten 5 4 Entwurf der graphischen Oberfl che In diesem Kapitel soll auf die Gestaltung der graphischen Oberfl che eingegangen werden und auf die damit verbundene Funktionalit t Dazu werden die relevanten Formulare die Be zeichnung von Fenstern beim Entwurf besprochen Nicht besprochen werden Formulare die keine direkte Funktionalit t zur Oberfl che beisteuern wie zum Beispiel das Info Formular die Formulare zur reinen Anzeige der Turtle Kommandos die Ausdr c
309. nem Argumententeil ist nicht m glich weil dann ein neuer Argumententeil f r ein Symbol generiert werden m sste Das komplette Vertauschen zweier Argumententeile w re schon eher denkbar wenn gesichert wird dass die Argumententeile zu den Symbolen passen Denk bar w re auch das Vertauschen von Teilen der Produktion Ausgangsproduktion Translocation Abbildung 2 32 Mutation einer Produktion mit Translocation Hinzuf gen eines neuen Symbols In einer Produktion wird ein Symbol hinzugef gt das bisher noch nicht in diesem L System existiert Das hat zur Folge dass eine entsprechende Produktion generiert werden muss 50 2 Theoretische Grundlagen von L Systemen und deren Evolution Ausgangsproduktion Hinzufiigen eines Symbols Neue Produktion Abbildung 2 33 Hinzuf gen eines neuen Symbols Mutation der Bedingung Es ist auch denkbar dass die Bedingung einer Produktion mutiert werden kann Das Problem hierbei ist zu gew hrleisten dass zu jedem Zeitpunkt eine Produktion fiir ein Symbol greift Ansonsten ware es denkbar jegliche Bedingung mutieren zu lassen Das Problem der eckigen Klammern k nnte bei der Mutation auch vernachl ssigt werden wenn vor der graphischen Interpretation das Wort gepr ft wird und entsprechende eckige Klammern nachtr glich an sinnvollen Stellen hinzugefiigt werden Wie deutlich wird unterscheiden sich die Arten der Mutation anhand ihrer Auswirkungen auf das Chromosom So z hlt die Poi
310. ng Enth lt das Objekt das diese Methode aufruft 214 H Quelltexte Methodenbeschreibung Diese Methode wird aufgerufen wenn auf Ok geklickt wird Das Formular wird geschlossen und alle Werte ibernommen procedure TCFGForm OKBtnClick Sender TObject begin Ubergebe alle Werte an die Info Struktur nfo AA AACheck Checked nfo Bitmap not TargaCheck Checked nfo Width StrToInt WidthEdit Text nfo Height StrToInt HeightEdit Text nfo PathPOV PathPOVEdit Text nfo PathQPOV PathQPOVEdit Text nfo CamX StrToFloat CamXLabel Caption nfo CamY StrToFloat CamYLabel Caption nfo CamZ StrToFloat CamZLabel Caption nfo LightX StrToFloat LightXLabel Caption nfo LightY StrToFloat LightYLabel Caption nfo LightZ StrToFloat LightZLabel Caption Close Schlie e das Formular end Geer ee Eeer Methodenname FormShow Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird ausgef hrt wenn das Fenster sichtbar wird procedure TCFGForm FormShow Sender TObject begin Alle Werte aus der Info Struktur an die Komponenten bergeben AACheck Checked I TargaCheck Checked WidthEdit Text In HeightEdit Text PathPOVEdit Text PathQPOVEdit Text I Kamera und Licht Camx nfo CamX CamY nfo CamY CamZ nfo CamZ CamXTrack Position CamXLabel Caption CamYTrack Position CamYLabel Caption
311. ng Rapid Application Development die speziell f r die Bed rf nisse der Entwicklung von graphischen Oberfl chen angepasst wurde Daher wird Delphi 6 0 als RAD Entwicklungsumgebung ausgew hlt Delphi ist eine Entwicklungsumgebung die graphische Komponenten wie Buttons in der VCL Visual Component Library gekapselt hat und damit die M glichkeit bietet ber Mausklicks Buttons zu erstellen und zu platzieren ohne dabei einen Quellcode zu schreiben Als Programmiersprache wird eine sehr stark weiterentwickelte Variante von Pascal verwen det die sich Object Pascal nennt und die eine sehr starke und leistungsf hige objektorientier te Sprache bildet Ein weiterer Grund f r den Einsatz von Delphi ist dass es im objektorien tierten Bereich sehr schnelle Programme erzeugen kann Diese Programme sind in der Regel sogar schneller als C Anwendungen SH03 Object Pascal stellt zwar eine spezielle Wei terentwicklung von Borland dar trotzdem k nnen in Delphi entwickelte Programme auch unter anderen Betriebssystemen laufen Denn Borland bietet ein Produkt namens Kylix an das Delphi Anwendungen problemlos kompiliert wenn keine API Funktionen von Windows verwendet werden Damit die Oberfl che auf Linux schnell portiert werden kann wurde bei der Entwicklung der graphischen Oberfl che darauf geachtet m glichst wenige API Funktionen von Windows zu verwenden 5 3 Externe Bibliotheken und Komponenten Obwohl Delphi eine RAD Entwicklungsumgebung
312. ng zu dieser Diplomarbeit 1 2 Aufgabenstellung Ziel der Arbeit ist eine Untersuchung zur automatischen Erstellung von Objektbeschreibun gen aus vorgegebenen Quellbildern Die Objektbeschreibung erfolgt in Form von L Systemen die passend zu Quellbildern erzeugt werden Hierzu wird ein evolution rer Prozess auf die L Systeme angewendet Fitnessfunkti on sei die bereinstimmung der Ansichten der erzeugten L Systeme aus verschiedenen Ka meraperspektiven mit den Originalbildern eines einfachen Gegenstandes Die Arbeit soll die theoretischen Grundlagen dieses Ansatzes darlegen insbesondere Einord nung und Klassifizierung von L Systemen und ihre Evolutionsm glichkeiten eine Systemar chitektur vorschlagen und in Teilen prototypisch implementieren Bei der Implementation soll besonderer Wert auf die Weiternutzbarkeit der erstellten Module und die Definition externer Schnittstellen gelegt werden Die Funktionsf higkeit des Systems ist durch geeignete Teststel lungen zu evaluieren 1 3 Gliederung Im folgenden Kapitel werden die theoretischen Grundlagen f r diese Arbeit erl utert Dazu wird das urspr nglich mathematische Modell von Lindenmayer vorgestellt und dessen wich tigste Unterschiede zu den Sprachen der Chomskyhierarchie aufgezeigt Des Weiteren werden die wichtigsten L Systeme besprochen wobei kurz auf einige spezielle L Systeme eingegan gen wird Danach werden die Klassifikationen besprochen sowie die Interpretation des Wor
313. ngen sind weitreichend Es k nnen nun zum Bei spiel Pflanzen modelliert werden aber nur bis zur zweiten Dimension Das reicht jedoch aus um die topologische Struktur von Pflanzen zu erzeugen Es sei darauf hingewiesen dass noch keine graphische Interpretation des Wortes vorliegt sondern nur das Wort selbst Daher ist die Interpretation in Abbildung 2 7 eine von vielen m glichen 19 2 Theoretische Grundlagen von L Systemen und deren Evolution M gliche Interpretation eines Wortes als zweidimensional fadenf rmiger Organismus Wort aab aaa aab bbb Abbildung 2 8 Zweidimensionaler fadenf rmiger Organismus 2 2 3 7 Stochastische L Systeme In der Natur ist es fast ausgeschlossen dass komplexe Strukturen wie zum Beispiel zwei B ume identisch aussehen Um eine gewisse Zufallskomponente in L Systeme einzugliedern wurden die stochastischen OL Systeme eingef hrt Daher steht das S auch f r stochastic Im fr hen Stadium hie en diese L Systeme probabilistic JM86 Bei einem echten SOL System existieren f r jedes Symbol mehrere Produktionen Jede die ser Produktionen bekommt eine Wahrscheinlichkeit von 0 bis 1 zugewiesen Null selbst ist aber ausgeschlossen wobei die Summe aller Wahrscheinlichkeiten f r alle Produktionen ei nes Symbols 1 ergeben muss Somit ist es aus praktischer Sicht ausgeschlossen dass ein SOL System deterministisch ist Ein SOL System mit nur einer Produktion f r jedes Symbol ist gleich einem DOL
314. nicht aus dass parametrisierte OL Systeme einem DOL System entsprechen k nnen Mit der Einf hrung dieser L Systeme woll ten Prusinkiewicz und Lindenmayer beweisen dass auch komplexe Strukturen mit L Systemen erzeugt werden k nnen De03 Bis dahin waren Aono und Kunii De03 davon berzeugt dass nur ihr dreidimensionales prozedurales Modell dazu in der Lage sei jedoch nicht die L Systeme Formal sieht eine Produktion in einem parametrisierten OL System wie folgt aus Formalparameter Bedingung Aktualparameter A x y y 3 gt Ax 2 xry Abbildung 2 9 Struktur einer Produktion eines parametrisierten OL Systems Das Symbol A hat die Formalparameter x und y denen ein Wert bergeben werden muss Die Produktion wird aber nur ausgef hrt wenn die Bedingung y lt 3 erf llt ist Den Symbolen auf der rechten Seite der Produktion werden ein oder mehrere Aktualparameter bergeben ent sprechend der Definition der Formalparameter Definition 2 24 f r parametrisiertes OL System PL90 Ein parametrisiertes OL System ist definiert als ein geordneter Quadrupel G Z P N wobei gilt 2 ist das Alphabet des Systems Pe xA x C A x x xE A ist eine endliche Menge von Produktionen Ki Zei e d oc x xR IR ist ein nicht leeres parametrisiertes Wort genannt Axiom K A ist die Menge von formalen Parametern Ze In der Definition steht C 4 Condition f r die Bedingung in der Produktion und E
315. nt Mutation zur Gruppe der Genmutationen Ein Gen ist in diesem Fall ein Symbol mit seiner Parameterliste in der Produktion Eine Ausnahme bildet der Bedingungsteil einer Produktion Dieser wird als Einheit betrachtet auch wenn die Be dingung noch so komplex ist Daher wiirde eine Mutation auf die Bedingung auch zur Gen mutation z hlen Eine weitere Gruppe bildet die Chromosomenmutation Zu dieser Gruppe geh ren alle Muta tionsarten die sich auf mehrere Gene auswirken Damit z hlen die Inversion Deletion Duplication und die Translocation auch zur Gruppe der Chromosomenmutation Die letzte Gruppe wird als Genommutationen bezeichnet In diesem Fall bildet das komplette L System das Genom Eine Mutation geh rt in diese Gruppe wenn die Anwendung des Mu tationsoperators die Anzahl der Chromosomen ver ndert Dazu z hlt auch der Operator Hin zuf gen eines neuen Symbols der die Anzahl der Chromosomen erh ht Denkbar als Mutati onsoperator w re auch das L schen eines Chromosoms Dies w rde eine Produktion l schen und alle Symbole aus den noch vorhandenen Produktionen entfernen die auf die zu l schen den Produktionen verweisen Allgemein besteht ein komplexeres L System aus polyploiden Chromosomen das hei t die Chromosomenanzahl ist gr er 2 Produktionen Genome mit einem Chromosom werden als haploide Chromosomen und Genome mit zwei Chromosomen als diploide Chromosomen bezeichnet Die Auswirkung von Mutationen wird am Beispiel der S
316. nte der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TMDIChildMain LightXTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightXTrack Position 0 then begin LightXLabel Caption 0 Info LightX 0 end Ansonsten berechne den neuen Wert else begin LightXLabel Caption FloatToStrF LightXTrack Position 0 5 ffFixed 1 1 Info LightX LightXTrack Position 0 5 end end nec ccc crc rcc Ncc cR m Methodenname LightYTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komponente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab 251 H Quelltexte procedure TMDIChildMain LightYTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightYTrack Position 0 then begin LightYLabel Caption 0 Info LightY 0 end Ansonsten berechne den neuen Wert else begin LightYLabel Caption FloatToStrF LightYTrack Position 0 5 ffFixed Info LightY LightYTrack Position 0 5 end end dd Se YD DA ee Methodenname LightZTrackChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Methode wird aufgerufen wenn an der TrackBar Komp
317. ntstehen Die Folgeknospen sind so angeordnet dass sie in der L cke zwischen zwei Knoten liegen De03 A p nni ps C 2 C Kc AL nc 1 Y Mare Em m Y i E Ea mi j I y Al y y NA cf KS SC a C Abbildung 1 2 Stellungen der Knospen De03 Dadurch dass diese Gesetzm igkeiten bei Pflanzen existieren kann man ein mathematisches Modell aufstellen welches eine bestimmte Pflanze wiedergibt In der Computervisualistik hat es sich gezeigt dass sich die L Systeme als mathematisches Modell zur Pflanzenmodellierung hervorragend eignen Dieses mathematische Modell kann nun mit anderen Elementen der Informatik verkn pft werden Da Pflanzen einer nat rlichen Evolution unterliegen ist dies eine m gliche Schnitt stelle zur k nstlichen Intelligenz So k nnte zum Beispiel die Genetische Programmierung genutzt werden um die nat rliche Evolution zu simulieren Wenn man von einem generierten Wort eines L Systems ausgeht k nnte das Wachstum r ckw rts verfolgt werden um die Entwicklung einer Pflanze nachzuvollziehen Das k nnte so weit reichen dass Aussagen dar ber gemacht werden k nnen welchen Bedingungen ein Baum im Laufe eines Jahres ausge setzt war Diese Arbeit ist der Anfang von mehreren Arbeiten die zusammen ein Konzept ergeben wel ches L Systeme und die k nstliche Evolution miteinander verkn pft Dabei werden Ideen f r das Gesamtkonzept in dieser Diplomarbeit behandelt 1 Einleitu
318. ocess Version 1 0 Modulename pov h Modulversion t0 Modulbeschreibung Header Datei zum Modul pov c Jd 2 22 2 222 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 22 2 2 2 2 2072 ifndef pov_H define pov_H extern void startPOV void extern void endPOV void extern char startQPOV void endif Dateiname pov c KKK RK 25 22 A kk kk kk kk KK KC KK KK KK KC KK KK KK KC KK 22 ck ck ck I k k Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 8 Modulename pov c Modulversion Led Modulbeschreibung Alle Funktionen die fur den Prozess der Bilderzeugung verwendet werden sind hier ent halten KCKCKCKCkCkCk RI RR 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 55 k k S BRK KR A kk 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 2 2 22 22 20 INCLUDE DATEIEN KCKCKCkCkCkCk IR A 2 2 2 2 2 22 IR 2 22 2 2 22 2 2 22 5 finclude lt stdio h gt finclude lt Windows h gt include globals h BORK KA 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 22 22 20 Funktionsname startPOV R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Pr ft ob eine Instanz von POV Ray schon l uft und startet gegebenenfalls eine Instanz KCKCKCkCkCkCk IR ARR IR A 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22
319. oden l sbar sind Man k nnte nun folgendes Problem definieren Auf der Basis eines L Systems wird ein Bild erzeugt Nun soll tiber ein Programm das L System gefunden werden das solch ein Bild erzeugt Das L System welches das Bild erzeugt hat steht zur Findung nicht zur Verfiigung Interessant ist ob dieses L System gefunden wird oder ein anderes L System welches das gleiche Bild erzeugt Dabei kann das andere L System vielleicht mehr oder weniger Produkti onen und k rzere oder l ngere Produktionen aufweisen Wenn ein anderes L System gefun den wurde das auch das Bild erzeugt ist weiterhin interessant ob das Wort das gleiche ist oder nicht In diesem Zusammenhang spricht man auch vom nferenzproblem f r L Systeme Das Inferenzproblem f r L Systeme besteht darin ein geeignetes Axiom und entspre chende Produktionen zu finden so da eine gegebene Struktur oder ein bestimmter Wachstumsproze nachgebildet werden Ja97 Als Eingabe f r die Fitnessbestimmung gibt es einmal das Bild f r das ein L System gesucht wird und ein Bild von dem den L System en das die nach dem L System sucht suchen ber die hnlichkeit der Bilder l sst sich dann die Fitness bestimmen Als Ausgabe erh lt der Anwender entweder das gefundene L System welches das Bild er zeugen kann oder das L System das dem Ergebnis am n chsten kommt Dabei sollten die Fitnessergebnisse dem Anwender auch zukommen Interessant ist auch die Frage wie viel
320. odulversion dd Modulbeschreibung Das Modul enth lt alle wichtigen Funktion die zum auslesen und interpretieren der CFG Datei ben tigt werden FERRI RR kk Ck Ck Ck Ck kk Ck A 2 2 22 2 22 2 2 Ck Ck kk Ck AR IR IR IR IIR 2 2 22 2 22 2 2 22 2 2 22 2 k k k BORK RR kk kk kk kk kk kk kk 22 22 22 22 22 22 22 22 ck k ck k ck ck ck ck ck ck ck kk ke k NCLUDE DATEIEN FER RAR A kk Ck kk Ck Ck 2 2 22 2 2 E 2 2 2 5 finclude lt stdio h gt finclude lt string h gt finclude lt ctype h gt finclude lt stdlib h gt include globals h KKK RK 25 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 kkk k Funktionsname createDefaultCFGFile Funktionsbeschreibung Wurde keine CFG Datei gefunden wird eine Datei erzeugt mit Standardwerten und Kommen taren KCKCKCkCkCkCk IR AR E e A A 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 212 2 2 22 2 22 2 2 22 2 222 2 u 22 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2072 void createDefaultCFGFile void FILE CFGFile NULL CFGFile fopen LPROCESS CFG wt fprintf CFGFile Imageformat Image bmp targa n fprintf CFGFile Image bmp n fprintf CFGFile Imageheight in pixel n fprintf CFGFile Height 480 n fprintf CFGFile Imagewidth in pixel n fprintf CFGFile Width 640 n fprintf CFGFile Anti Aliasing AA on offAn fprintf CFGFile AA off n fprintf CFGFile Path for POV Ray n fprintf CFGFile POV
321. of temp 0 0 fprintf stderr ERROR Illegal Value for CamY in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable z mit dem Wert aus der CFG Datei temp getValueFromList opts CamZ if temp NULL fprintf stderr ERROR There exists no value for CamZ in LPROCESS CFG n n return 1 else if info z atof temp 0 0 fprintf stderr ERROR Illegal Value for CamZ in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable light_x mit dem Wert aus der CFG Datei temp getValueFromList opts LightX if temp NULL fprintf stderr ERROR There exists no value for LightX in LPROCESS CFG n n return 1 else if info light x atof temp 0 0 fprintf stderr ERROR Illegal Value for LightX in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable light_y mit dem Wert aus der CFG Datei temp getValueFromList opts LightY if temp NULL fprintf stderr ERROR There exists no value for LightY in LPROCESS CFG n n return 1 137 H Quelltexte else if info light_y atof temp 0 0 fprintf stderr ERROR Illegal Value for LightY in LPROCESS CFG n n return 1 Setze in der info Datenstruktur die Variable light_z mit dem Wert aus der CFG Datei temp getValueFromList opts LightZ if temp NULL
322. oftware L System gezeigt da es ein Modul zur Mutation enth lt Die Software selbst wird sp ter noch genauer in Kapitel 3 2 be sprochen zu Demonstrationszwecken wird an dieser Stelle nur kurz darauf eingegangen LS4 2 Theoretische Grundlagen von L Systemen und deren Evolution SFLOWER1 LS lolx Radiation Recursion H Questions about Lparser files to 2 Angle D Internet cydmark xs4all nl HO Fido 2 2837203 11 H POR 3505 4643 Tener Deletions Additions q g amp 30 p 30 p 10 p er p t 0 2 IFt O 2 IFt O 2 IFFFo Substitutions 0 gt y gt 60 y gt B0 y Gs B0 y B0 v a amp 10 s a y a amp 125 w Scramble b i Mutate View Save File Unda llast Close Abbildung 2 34 Der Mutator von L System Der Mutator beim L System bietet die M glichkeit L System zu mutieren und f r die Mutati on diverse Parameter festzulegen Dabei werden folgende Mutationsarten unterstiitzt Recursion Ver nderung der Rekursionstiefe Angle Mutation des Basiswinkels Thickness Die Startdicke fiir die 3D Grafik Deletions Das L schen von Teilen der Produktion Additions Das Hinzuf gen von Teilen in die Produktion Substitutions Ersetzen von Teilen der Produktion Die St rke jeder Mutationsart l sst sich gesondert einstellen Au erdem kann ber Radiation die globale St rke der Mutation geregelt werden Ansonsten gibt es einen Zufallsgenerator Scramble der die V
323. on Evolutionary Com putation 2001 http www demo cs brandeis edu papers author html hornby Stand 06 2004 112 C Literaturverzeichnis HPOIc HPO2 HR75 HU00 Ja95 Ja97 Ja03 JAHO1 JM86 Ke86 Ko99 KPM92 KR90 Gregory S Hornby und Jordan B Pollack Body Brain Co evolution Using L systems as a Generative Encoding Genetic and Evolutionary Computation Conference 2001 http www demo cs brandeis edu papers author html hornby Stand 06 2004 Gregory S Hornby und Jordan B Pollack Creating High Level Components with a Generative Representation for Body Brain Evolution Artifical Life 8 3 2002 http www demo cs brandeis edu papers author html hornby Stand 06 2004 Gabor T Herman und Grzegorz Rozenberg Developmental Systems and Languages North Holland Publishing Company und American Elsevier Pub lishing Company 1975 John E Hopcroft und Jeffrey D Ullman Einf hrung in die Automatentheorie Formale Sprachen und Komplexit tstheorie Oldenbourg Wissenschaftsverlag GmbH 2000 Christian Jacob Genetic L System Programming Breeding and Evolving Arti ficial Flowers with Mathematica First International Mathematica Symposium Computational Mechanics Pub 1995 http pages cpsc ucalgary ca jacob IMS ArtFlowers pdf Stand 05 2004 Christian Jacob Principia Evolvica Simulierte Evolution mit Mathematiker dpunkt Verlag 1997 Christian Jacob Artificia
324. onente der Wert ver ndert wird Diese Methode gleicht den Wert mit der Info Struktur ab procedure TMDIChildMain LightZTrackChange Sender TObject begin Wenn 0 eingestellt wird dann gebe dieses direkt an if LightZTrack Position 0 then begin LightZLabel Caption 0 Info LightZ 0 end Ansonsten berechne den neuen Wert else begin LightZLabel Caption FloatToStrF LightZTrack Position 0 5 ffFixed Info LightZ LightZTrack Position 0 5 end end Y E Y EE ETATE EET EAE EAE Y FF Y EH ESTEE E Y Y ENT E ES EHE EE EE I KE EE ee an Methodenname Button2Click Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung 1 Die Methode ffnet die Tabelle f r die Turtle Kommandos wenn auf den Button Turtle Kommandos geklickt wird Vorausgesetzt es gibt nicht schon eine Instanz des Fensters procedure TMDIChildMain Button2Click Sender TObject begin if TurtleActive false then begin TurtleForm TTurtleComForm Create Application TurtleActive true 232 1 H Quelltexte end end EE EE ee Sec Y YY Y YY nn ee o Methodenname UpdateBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Aktualisiert eine Produktion wenn auf den Button Aktualisieren geklickt wird procedure TMDIChildMain UpdateBtnClick Sender TObject var i integer
325. or Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version 1 0 Modulename lparser c Modulversion 1 0 Modulbeschreibung Das Modul stellt Funktionen bereit zur Konvertierung von LS Dateien der Version 4 in die Version 5 sowie zum Ausf hren der Einzelprogramme des Lparser Paketes und zur Be hebung von Fehlern die die Lparser Programme machen KCKCKCKCkCkCk 2 AE A 2 2 2 2 2 22 2 2 e 2 2 2 2 2 A 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 k k k k KKK KR kk kk kk kk kk kk KK kk KK KK KK KK 22 22 22 22 22 22 A 22 22 A 22 22 A 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2220 INCLUDE DATEIEN KCKCKCkCkCkCk IR IRR IR A 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2 222 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 ek f finclude lt stdio h gt finclude lt string h gt finclude lt stdlib h gt finclude globals h BORK 55 2 5 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2 2 A ck ck I I Funktionsname convertLP4toLP5 R ckgabewert Typ char Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Parameter Typ char Name old_filename Bedeutung Dateiname der Datei die konvertiert wird Typ char Name new_filename Bedeutung Dateiname der Datei die das Ergebnis enth lt wird Funktionsbeschreibung Diese Funkt
326. or min A B C C x A x B _x cL y Al_yl BL y C _z A z B _z X define Vector_plus A B C C x A x B _x C _yl AL yl BL yl1 N C _z A _z B _z define Vector_dec A B A _x B _x A y BL yl A z B _z X define Vector neg A A _x AL x1 N A y A yl A z A _z X 156 H Quelltexte define Vector inc A B A _x B _x A y BL yl A z B _z define Vector_plus_fac A B t C C x A x t B _x C y AL y t BL yl C z A _z t B _z define Vector_plus_fac2 A B b C c D DL x Sisi b Blox to C Xx A Dale AL yl Spitz BL Yl re CL yl AN DL z A z ib BL x te GL sich define Vector_combine A a B b C C x a A _x b B x C _y a AL y b Bi_yl Sl owe IAT A Ho BEZ define Vector_add A d A x d A y d A z d define Vector_sub A d A _x d A y d A z d define Vector_div A d A x d A y dch A z d define Vector_mul A d A _x d A _y d A z ze d JEVEO pro cs SRBC SSPE RS PSE ERE EE EE EE eiie HY EJ static vector M1 M2 M3 The current movetransform matrix r32 Do_angle r32 xl r32 yl r32 x2 r32 y2 Calculate the angle between x axis and xl yl gt x2 y2 It can handle all
327. ore t 211 v1 maxY ver poly store t 211 vl if maxZ lt ver poly store t 2 _z maxZ ver poly store t 2 _z if minX gt ver poly store t 211 x1 minX ver poly store t 21 1 x if minY gt ver poly store t 211 v1 minY ver poly store t 211 yl if minZ ver poly store t 211 z1 minZ ver poly store t 2 _z else 4 vertex polygon 2x triangle fprintf volume file object triangle fprintf volume file g g g gt ver poly store t l 0 x ver poly_store t 0 _z ver poly_store t 0 LL y1 fprintf volume file lt g g g ver poly store t 1 x ver poly_store t 1 _z ver poly_store t 1 _y fprintf volume file lt g g g gt ver poly_store t 2 _x ver poly_store t 2 _z ver poly_store t 2 _y fprintf volume file finish t_leaf pigment color col_ d n color 16 fprintf volume_file object triangle fprintf volume_file g g g gt ver poly_store t 2 _x ver poly_store t 2 _z ver poly_store t 2 _y fprintf volume file lt g g g gt ver poly store tl 311 x ver poly store t 3 z ver poly_store t 3 _y fprintf volume file g So g gt ver poly store t 0 1 x ver poly store t 0 z ver poly store t 0 l _yl 169 H Quelltexte fprintf volume_file finish t_leaf pigment color col_ d n if maxX gt ver poly store t 0 _x maxX ver
328. ort daraufhin berpr ft ob es berhaupt inter pretierbar ist 62 3 Programme die L Systeme simulieren interpretieren Abbildung 3 2 Beispiel fiir eine 3D Grafik von L System 3 3 RayTraced Evolution RayTraced Evolution wurde von Nguyen Duc Cuong an der TU Ilmenau entwickelt RTE Die vorliegende Version 1 1 wurde 1997 erstellt Das Programm erzeugt aus einer Beschreibungs Datei RTE ein 3D Modell fiir einen spe ziellen Renderer und speichert es in einer Datei ab Dabei wird bei der Ausgabe auf einen Treiber fiir den entsprechenden Renderer zuriickgegriffen So kann durch Austausch des Trei bers das 3D Modell f ir einen anderen Renderer benutzt werden Als Standard ist eine POV Ray Unterstiitzung integriert Um eine Kollision der Turtle Bewegungen zu vermeiden wurde der GX GENETIC Ray Tracing Kernel eingebaut Sollte die Schildkr te irgendwo kollidie ren k nnen verschiedene Aktionen ausgef hrt werden die vom Sterben bis zur Reinkar nation reichen Die generierte Szene kann ohne Ver nderung direkt mit POV Ray gerendert werden Eine weitere m chtige Eigenschaft von RayTraced Evolution ist die Beschreibungssprache f r eine Szene Sie ist in zwei Sprachen unterteilt in eine C hnliche Hochsprache und in die L Systeme Seitens der Hochsprache werden dabei auch Datentypen wie Vektoren und Matrizen unterst tzt sowie die meisten Operatoren die aus C bekannt sind Viele Bibliotheken unter st tzen dabei
329. ot find QuietPOV n return 1 152 H Ouelltexte puts Finishing Rendering return 0 Quelltext von Lparser lparser c Die modifizierten Stellen sind fett hervorgehoben Laurens Lapre ljlapre xs4all nl http www xs4all nl ljlapre Modified by Ken Kopp 7 30 2000 kk82793 ltu edu Modified by Jan Derer 06 09 2004 darkhabits aol com include lt stdio h gt include lt iostream h gt include lt float h gt include lt stdlib h gt include lt string h gt include lt stdarg h gt include lt math h gt include lt malloc h gt include lt ctype h gt include lt time h gt dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd ML MP dd dd dd dd dd dd dd dd dd dd dd dd dd dd dd THI 11 Adding global variables and prototyps of functions by Jan Derer double maxX 0 0 Saving the maximum positiv maxY 0 0 Saving the maximum positiv maxZ 0 0 Saving the maximum positiv minX 0 0 Saving the maximum negativ minY 0 0 Saving the maximum negativ minZ 0 0 Saving the maximum negativ x y Z Values to multiply void createINFOTXT void value value value value value value of of of of of of ppm nm m m x coordinate y coordinate z coordinate x coordinate y coordinate z coordinate Writing INFO TXT for LV2POVID with the best cameraposition dddddddddd dd dd dd dd dd dd dd dd dd d dd ll l P l dd dd dd LL P PP PP d dd dd dd dd dd
330. p int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Lv2povid ruft das gleichnamige Programm auf um eine POV Datei zu erzeugen FER KAR A 2 AE A k e A 2 2 22 2 2 E 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 2 2 2 22 2 2 I ek f char Lv2povid void FILE file NULL char buffer MAX_COMLINE Pr fe ob alle wichtigen Dateien vorhanden sind EJ if file fopen output inc rt fprintf stderr ERROR There is no output inc file for LV2POVID n return 1 fclose file 147 H Quelltexte if file fopen info txt rt fprintf stderr ERROR There is no info txt file for LV2POVID n return 1 fclose file if file fopen lv2povid cfg rt fprintf stderr ERROR There is no lv2povid cfg file for LV2POVID n return 1 fclose file Rufe LV2POVID auf Wi sprintf buffer LV2POVID 2 gt lv2povid log if system buffer gt 1 fprintf stderr ERROR Cannot execute LV2POVID n return 1 return 0 KKK RK 5 22 A 22 22 22 22 22 22 22 22 22 22 A 22 22 22 22 22 22 22 20 Funktionsname extractVectorFromLine Parameter Typ char Name string Bedeutung Die Zeile aus der die Daten extrahiert werden sollen Typ double Name vector Bedeutung Zeiger auf ein double Array in dem die Vektordaten gespeichert werde
331. perationen eingebettet wobei die CSG Operationen die Mengen Operationen abbilden Als Operatoren existieren Vereini gung Union Schnittmenge Intersection und Differenzmenge Difference Zus tzlich gibt es noch den Operator Merge zum Verbinden von Objekten er kommt der Vereinigung gleich AuBerdem kennt POV Ray auch Polygonen und auf Spline basierenden Formen sowie ver schiedene Arten von Lichtguellen wie zum Beispiel Pointlight Spotlight Ambient Light und andere F r weitere Informationen sei auf die Dokumentation von POV Ray verwiesen auf http Www povray org documentation ESK96 ESK97 79 4 Entwurf und Implementierung der Fassade Abbildung 4 4 Die gerenderte Szene 4 8 Schnittstelle der Fassade Mit der Fassade werden zwei Wege angeboten diverse Einstellungen festzulegen Der erste Weg sind die Kommandozeilenargumente In Tabelle 4 2 sind alle Kommandozeilenargumen te und deren Auswirkungen aufgelistet Kommandozeilenargument Auswirkung Ruft einen Bildschirm auf mit Erkl rungen zu den Kommando zeilenargumenten H Zahl Gibt die H he der Grafik in Pixel an W Zahl Gibt die Breite der Grafik in Pixel an T Das Ausgabeformat ist eine Targa Grafikdatei A Aktiviert die Anti Aliasing Funktion C Konvertiert eine Datei in die Version 5 C Konvertiert eine Datei in die Version 5 und beendet danach den Prozess E Beendet POV Ray nachdem der Prozess das Bild erzeugt hat e Beendet POV Ray ohne
332. pf ersetzt wird Sollten der linke oder rechte Kontext oder der Bedingungsteil nicht ben tigt werden dann kann ein eingesetzt werden Wurde die Produktion definiert kann auf Hinzuf gen geklickt werden Sollte die Produktion fehlerhaft sein erscheint eine Meldung Als kleine Hilfe f r die Erstellung der Produktionen k nnen zwei Tabellen eingeblendet werden Die eine enth lt alle Turtle Kommandos Button Turtle Kommandos und die andere Tabelle enth lt alle Ausdr cke die im Bedingungsteil verwendet werden d rfen Button Bedin gungsteil Um eine vorhandene Produktion zu bearbeiten kann entweder auf die Produktion im Listenfeld doppelgeklickt werden oder die Produktion einmal angeklickt werden und dann ber den Button Bearbeiten bearbeitet werden Um eine Produktion zu l schen muss diese ausgew hlt werden und auf den Button L schen geklickt werden Der Button Alle L schen l scht alle Produktionen Nun soll die folgende Produktion eingegeben werden F r den Produktionskopf schreiben Sie F und in den Produktionsk rper letztes Eingabefeld schreiben Sie F F F FF F F F Danach klicken Sie auf Hinzuf gen Das eingegebene L System k nnen Sie auf Schw chen pr fen dazu klicken Sie einfach auf Pr fen Dies kann gerade bei gr eren L Systemen hilfreich sein Eine Schw che in einer Produktion w re wenn die Anzahl der ffnenden und schlie enden eckigen oder geschwei
333. pie von GROGRA f r diese Arbeit zur Verf gung gestellt hat 66 3 Programme die L Systeme simulieren interpretieren L studio L studio ist die Windows Version des Virtual Laboratory L studio wurde wie das Virtual Laboratory von Prusinkiewicz entwickelt Das Programm ist sehr m chtig aber teilweise schwer zu bedienen Es lassen sich parametrisiert stochastische und kontextsensitive L Systeme nutzen und visualisieren L studio selbst ist nur ein Editor innerhalb dessen das L System die Parameter Farben Oberfl chen Konturen und viele weitere Optionen beschrie ben werden k nnen Die Visualisierung wird von einem externen Programm namens Cpfg vorgenommen In Cpfg lassen sich die 3D Modelle als Bild BMP TGA RayShade Da tei PostScript String Gls View Volume Inventor oder OBJ Datei speichern Das Programm liegt der CD ROM nicht mit bei weil es nur als Demo Version herunterzuladen ist die in einem Monat abl uft Die Demo Version l sst sich unter http www cpsc ucalgary ca Research bmv lstudio herunterladen LSt Abbildung 3 5 Eine Lilie erstellt mit L studio 67 3 Programme die L Systeme simulieren interpretieren Name Version Autor Homepage Sourcen ver Unterst tzt folgende L Systeme Kommandozeile Jahr f gbar GUI Lparser 4 0 1995 Laurens Lapre Ja in C PDBOL Systeme Ja nur Viewer http home wanadoo nl laurens lapre L System 4 01 1999 Timothy C Perz Nein Parametrisierte PDBOL Syste
334. pl _z minZ pl _z return else if pov_form2 write out a blob origin fprintf volume_file component 1 0 g lt g g g gt n d pl xl pl _z pl _y polcountrr return else if pov_form3 write out a blob origin to the file based on the color fprintf vf c 8 component 1 0 g lt g g g gt n d pl _x pll_z pl _yl polcount t return else if blb_form write out a blob in BLB format fprintf volume file Sphere g So g 1 0 Sonn pl x pl _z pl yl d polcountrr return Else use the good old Lviewer VOL format for i 1 i lt form ver itt vertices O x form c i _x s ol_yl form c i _yl s ol_z form c il z d Inverse Q P Vector plus P pl ver il for i 1 i lt form pol i polygons poly store i 0 form s i 0 poly store i 1 form_s i 1 poly_store i 2 form_s i 2 poly_store i 3 form_s i 3 Save_object form_ver form_pol c save the stored object static void Define_block vector pl vector p2 vector up sl6 c Insert basic block Here we build a cube shape directly on the input vectors vector His dl d 3 s16 i r32 s d if pov_form pov_form2 pov_form3 blb_form return zmin MIN zmin pl _z zmin MIN zmin p2 z setup Vector min p2 pl dis d Vector length dis if d r32 0 0 retu
335. poly_store i 2 poly_store i 3 3 vertex face fprintf volume_file O n3DFACE n8 n d n color fprintf volume_file 10 n g n ver poly_store i 0 _x fprintf volume_file 20 n g n ver poly_store i 0 _yl fprint En 30 n g n ver poly_store i 0 21 fprintf volume file 11 n g n ver poly_store i 1 SSO fprintf volume file 21 n g n ver poly_store i 1 yy fprint I ie 31 n g n ver poly_store i 1 EAE fprintf volume file 12 n g n ver poly_store i 2 cx ser fprintf volume file 22 n g n ver poly_store i 2 _yl fprintf volume_file 32 n g n ver poly_store i 2 EST fprintf volume file 13 n g n ver poly_store i 2 _x fprintf volume_file 23 n g n ver poly_store i 2 yl fprintf volume_file 33 n g n ver poly_store i 2 cms else 4 vertex face fprintf volume file O n3DFACE n8 n d n color fprintf volume file 10 n g n ver poly_store i 0 xl fprintf volume_file 20 n g n ver poly_store i 0 AUD fprintf volume file 30 n g n ver poly_store i 0 um fprintf volume file 11 n g n ver poly_store i 1 ee ie E fprint Ple ie 21 nsg n ver poly_store i 1 yl fprintf volume file 31 n g n ver poly_store i 1 Alpe fprintf volume_file 12 n g n ver poly_store i 2 RT fprintf volume_file 22 n g n ver poly_store i 2 Vn fprintf volume_file 32 n g n ver poly_store i 2 ez ys fprintf volume file 13 n g n ver poly_store i 3 x fprintf volume
336. printf volume file fprintf volume file fprintf volume file fprintf volume file fopen INFO TXT wt Model output vol n Y SNS OE SN EE ANE EE RE OE RENE A SES RN E E E PP NP NE NS EN A ER SE SEE SE SE WE n Minima xyz 3 3f 3 n minX minY minZ Maxima xyz 3f 3f 3 n maxX maxY maxZ 208 H Quelltexte else fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume_ file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file fprintf volume file Center Camera n n Perspective Scale Location Looking at Up vector n Minima xyz Maxima xyz Center Camera n n Perspective Scale Location Looking at Up vector 4f 4f 11 1364 Xn 486 32 n 2 2f 4 4f 0 0000000 O 3 3 3 3 9 4 4 11 1364 n 486 32 n 2 2f 4 4f 0 0000000 O User_error Cannot open file INFO TXT n fclose volume file printf Finish n n dddddddddd dd dd dd dd dd dd dd dd
337. procedure TMDIChildMain FormCreate Sender TObject begin D3DActive false TurtleActive false end Ee rn A a ara aS E c E c a a a E a a LE aa EE UT EEE EE aint tia pe a Methodenname CondBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Die Methode ffnet die Tabelle fiir die Ausdriicke im Bedingungsteil wenn auf den Button Turtle Kommandos geklickt wird Vorausgesetzt es gibt nicht schon eine Instanz des Fensters procedure TMDIChildMain CondBtnClick Sender TObject begin if CondActive false then begin CondForm TCondForm Create Application 235 H Quelltexte CondActive true end end end Dateiname MDIMainSource pas Autor Jan Derer Datum 05 06 04 Kontakt Darkhabits aol com Programmname VisualL Version 1 8 Klassenname TMDIMain Version 1 0 Kurzbeschreibung Diese Klasse repr sentiert das MDI Elternfenster mit einige ffentlichen Methode die hilfreiche Funktionen f r andere Klassen darstellen uses windows Messages SysUtils Variants Classes Graphics Controls Forms Dialogs ToolWin ActnMan ActnCtrls ActnMenus ActnList StdActns ComCtrls ImgList Menus StdCtrls MDIChildSource Direct3DSource TurtleComSource CondFormSource JvComponent JvSysComp TMDIMain class TForm Auflistung aller eingebundenen Komponenten der Klasse ActionManagerl TActionManager FileNew TAction
338. pt Stand 06 2004 Wilhelm G hler Formelsammlung H here Mathematik Verlag Harri Deutsch 1999 Narendra S Goel und Ivan Rozehnal A High Level Language for L systems and Its Applications Lindenmayer Systems Hrsg Grzegorz Rozenberg und Ar to Salomaa S 231 251 Springer Verlag 1992 Gregory S Hornby Hod Lipson und Jordan B Pollack Evolution of Genera tive Design Systems for Modular Physical Robots IEEE International Confer ence on Robotics and Automation 2001 http www demo cs brandeis edu papers author html hornby Stand 06 2004 Gregory S Hornby Generative Representation for Evolutionary Design Automation Ph D Dissertation Brandeis University Dept of Computer Sci ence 2003 http www demo cs brandeis edu papers author html hornby Stand 06 2004 Markus Holenstein Aesthetic Selection Diplomarbeit Universitat Ziirich 2001 Juha Honkala Three Variants of the DTOL Sequence Equivalence Problem Journal of Universal Computer Science Band 7 S 886 892 Springer Verlag 2001 http www jucs org jucs 7 10 three variants of the paper pdf Stand 06 2004 Gregory S Hornby und Jordan B Pollack Evolving L Systems To Generate Virtual Creatures Computers and Graphics 25 6 S 1041 1048 2001 http www demo cs brandeis edu papers author html hornby Stand 06 2004 Gregory S Hornby und Jordan B Pollack The Advantages of Generative Grammatical Encodings for Physical Design Congress
339. ption gefunden Bei einem Konvertierungsfehler mache nichts then Wandel den String in eine Flie kommazahl um Option gefunden Bei einem Konvertierungsfehler mache nichts 0 then Wandel den String in eine Flie kommazahl um Option gefunden Bei einem Konvertierungsfehler mache nichts 0 then Wandel den String in eine Flie kommazahl um Option gefunden Bei einem Konvertierungsfehler mache nichts 265 H Quelltexte Ist es der Bezeichner LightZ else if CompareText key LightZ 0 then begin try Info LightZ StrToFloat value Wandel den String in eine Flie kommazahl um lightz true Option gefunden except on EConvertError do Bei einem Konvertierungsfehler mache nichts end end end Ende der While Schleife Pr fe ob alle Optionen gefunden bzw einen g ltigen Wert enthalten Ist es nicht der Fall dann initalisiere diese mit Standardwerten und gib eine Meldung an den Benutzer aus if not bmp then begin Info Bitmap True MessageDlg F r den Schl ssel Image wurde kein g ltiger Wert gefunden Es wird der Standwert bmp verwendet mtWarning mbOK 0 end else if not width then begin Info Width 640 MessageDlg F r den Schl ssel Width wurde kein g ltiger Wert gefunden Es wird der Standwert 640 verwendet mtWarning mbOK 0 end else if not height then begin Info Height 480 MessageDlg F r den Schl ss
340. py_r32 v fow Util ppr Cl C2 C3 vit Vector copy r32 v upp Vector normalize fow Vector normalize upp ang save ang break case Save ang ang if next ang r32 0 017453 Get value amp i if last recur ang fraction Set_rot ang lef Util_t fow Cl C2 C3 v Vector_copy_r32 v fow Util tupp Eli C2 C3 v Vector_copy_r32 v upp Vector normalize fow Vector normalize upp ang save ang break case save ang ang 183 H Quelltexte if next ang r32 0 017453 Get value amp i if last recur ang fraction Set_rot ang fow Util t lef Cl C2 C3 v Vector copy r32 v lef Util t upp Cl C2 EI why Vector_copy_r32 v upp Vector_normalize lef Vector_normalize upp ang save ang break case save ang ang if next ang r32 0 017453 Get value amp i if last recur ang fraction Set_rot ang fow Util _t Tef Cl C2 C3 v Vector copy r32 v lef Util t uppy Cl 2 C3 v Vector copy r32 v upp Vector normalize lef Vector normalize upp ang save ang break case Set_rot 3 141592654 fow Util_t lef Cl C2 C3 v Vector_copy_r32 v lef Util t upp Cl C2 C3 X Vector copy r32 v upp Vector normalize lef Vector normalize upp break case Set rot 3 141592654 upp Util tC Eow Ch G2 C35 X Vector copy r32 v fow
341. r e des Strings an i Canvas TextWidth pred if i gt ProBodyEdit Width then begin ProBodyEdit Width i 8 UpdateBtn Left ProBodyEdit Width 311 AddBtn Left UpdateBtn Left Add2Btn Left UpdateBtn Left 88 end end Methodenname RecursEditChange Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Methode wird von allen Editierfeldern verwendet und wird ausgef hrt wenn der Inhalt eines Editierfeldes sich ndert procedure TMDIChildMain RecursEditChange Sender TObject 245 H Quelltexte begin Wenn das aufrufende Objekt ein TEdit Objekt ist dann markiere das Fenster das sich der Inhalt ver ndert hat if Sender As TEdit Modified true then begin SaveBtn Enabled true if Caption length Caption lt gt then Caption Captiont end end PER a II Id UF WNAF ne FN CF Se GL NT FU EENE FU FI WU IW FU CWN FF CW FU CW EF CW CW CWT FWD CW FC y EF FF Te Methodenname RecursEditKeyPress Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var char Name Key Bedeutung Zeiger auf das Zeichen das eingegeben wurde Methodenbeschreibung Bei jeder Zeicheneingabe fur Editierfelder die nur Zahlen akzeptieren wird diese Methode aufgerufen procedure TMDIChildMain RecursEditKeyPress Sender TObject var Key Char begin Lasse nur Zahlen und den Rucklauf als
342. r ft den Inhalt und bergibt die Informationen an ein MDI Kindfenster Wurden Fehler gefunden werden diese im Nachrichtenfeld des Kindfensters erscheinen procedure TMDIMain openLS const filename string var Child TMDIChildMain Instanz f r ein neues Kindfenster f TextFile Variable zur Verarbeitung der LS Datei Sy t string Zwischenspeicherung von Zeichenketten i integer Laufvariable state integer Speichert den Zustand der Verarbeitung der Datei errorLine integer Z hlt die Regeln um eine Fehlerhafte Regel zu benennen l single Wird zum testen eines Float Wertes ben tigt begin Initialisierung von Variablen state 0 errorLine 0 Datei ffnen AssignFile f filename Zuweisung des Dateinamens an die Variable i Reset f Sir Datei wird versucht zu ffnen um diese Auszulesen I O Pr fung des Compilers wird dazu deaktiviert if IOResult lt gt 0 then Konnte die Datei nicht ge ffnet werden begin Gib eine Fehlermeldung aus und Beende die weitere Verarbeitung MessageDlg Datei filename konnte nicht ge ffnet werden mtError mbOk 0 Exit end Erzeuge Kindfenster Child TMDIChildMain Create Application Child Caption filename Verarbeitungsschleife fiir die LS Datei while not eof f do begin readln f s Hol eine Zeile aus der Datei S trim s Schneide Leerzeichen am Anfang und am Ende ab if length s gt
343. r nkungen f r dieses System vorliegen beispielsweise ob es deterministisch ist oder propagierend wobei die beschrankten L Systeme eine echte Teilmenge zum Ausgangssystem bilden HR75 Je gra vierender die Beschr nkung ist desto weiter weg steht das L System vom Ausgangssystem Da einem POL System nur ein Zeichen fehlt bildet es keine gro e Beschr nkung Eine gr e re Beschr nkung ist dagegen dass f r jedes Symbol in X nur eine Produktion existieren darf Die gr te Beschr nkung ist jedoch das X nur ein Symbol enthalten darf wie bei den UOL Systemen All diese L Systeme stellen eine beschr nkte Eigenschaft dar und reduzieren die M chtigkeiten der Sprache In die zweite Klasse lassen sich die Erweiterungen der L Systeme einordnen Je weiter weg eine Erweiterung ist desto gr er ist die Leistung die diese Erweiterung mit sich bringt Das einfache getrennte Hinzuf gen von zwei Klammern bei den BOL Systemen stellt dabei die niedrigste Erweiterung dar Die Klammern sind zwar f r die graphische Interpretation wichtig aber nicht f r die reine M chtigkeit der Sprache Timed L Systeme und SOL Systeme bilden eine gr ere Erweiterung zum Ausgangssystem SOL Systeme erm glichen eine kon trollierte automatische Ableitung von nicht deterministischen Produktionen w hrend Timed L Systeme den Produktionen ein Initial und Sterbealter zuweisen um festzulegen wann die se angewandt werden Die m chtigsten Erweiterungen bilden die TOL
344. r Evolutionsprozess so leichter die L Systeme ver ndern und selbst erstellte L Systeme k nnen sehr einfach in eine Datei gespei chert werden Bei RayTraced Evolution m sste der Evolutionsprozess eine Beschreibungs Datei mit mehreren Unterfunktionen erzeugen und die L Systeme teilweise in ein hochspra chen hnliches Konstrukt umformen POV Ray Im Bereich der Ray Tracing Software gibt es nur sehr wenige Renderer die frei verf gbar sind und diese erzeugen selten so qualitative Szenen wie POV Ray Das liegt teilweise daran dass POV Ray auf eine sehr lange Entwicklungsgeschichte zur ckschauen kann Im Ver gleich zu anderen Renderern wie zum Beispiel NFF der von dem Autor stammt der auch RayTraced Evolution entwickelte ist POV Ray um viele Gr enordnungen performanter So ben tigt der NFF Ray Tracer f r eine Beispielszene die mit RayTraced Evolution erstellt wurde knapp zwei Minuten POV Ray ben tigt f r dieselbe Szene die auch mit RayTraced Evolution erstellt wurde keine zehn Sekunden Weitere Vorteile von POV Ray sind die her vorragenden Dokumentationen sowie die gro e Verbreitung So erh lt man in Newsgroups wie comp graphics rendering raytracing innerhalb k rzester Zeit Antworten auf Fragen zu POV Ray Alternativ kann man auch ber den Server von POV Ray auf eine spezielle Newsgroup zugreifen und dort seine Fragen stellen Zusammengefasst kann man sagen dass POV Ray einer der schnellsten freien Renderer mit einer sehr hohen
345. r Info Struktur in die CFG Datei if Info Bitmap true then WriteLn cfg Image bmp else WriteLn cfg Image Targa if Info AA true then WriteLn cfg AA on else WriteLn cfg AA off if Info Files true then WriteLn cfg Files on else WriteLn cfg Files off WriteLn cfg Width IntToStr Info Width WriteLn cfg Height IntToStr Info Height WriteLn cfg POV Info PathPOV WriteLn cfg QPOV Info PathQPOV WriteLn cfg CamX FloatToStr Info CamX WriteLn cfg CamY FloatToStr Info CamyY WriteLn cfg CamZ FloatToStr Info CamZ WriteLn cfg LightX FloatToStr Info LightX WriteLn cfg LightY FloatToStr Info LightY WriteLn cfg LightZ FloatToStr Info LightZ CloseFile cfg Schlie e den Zugriff auf die CFG Datei end CE YDD UD MYD ao PS red en en ep pen ee ne np ap Pepe pe pa ep ap pa pe AE PUER Methodenname SyntaxLineCheck Ruckgabewert Typ string Bedeutung Gibt einen String mit einer Fehlermeldung zurtick oder eine leere Zeichenkette Parameter Typ var string Name production Bedeutung Enth lt die ursprtingliche Produktion Typ var string Name new_production 239 H Quelltexte Bedeutung Enth lt die ursprtingliche Produktion formatiert Methodenbeschreibung Pr ft eine Produktion nach Fehlern und formatiert den String der Produktion function TMDIChildMain SyntaxLineCheck var production String var new
346. r Symbolleiste und einer Statusleiste Um das Einarbeiten in die Applikation zu erleichtern wird Wert darauf gelegt bliche Meniipunkte die man bei einer MDI Anwendung erwartet zu integrieren und deren Reihenfolge und Bezeichnung beizubehalten In die Meniileiste werden die Meniipunkte auf genommen die am meisten vom Anwender benutzt werden Die Statusleiste gibt Informatio nen zu dem Element aus iiber dem sich gerade der Mauszeiger befindet Hinter der Gestal tung steht folgenden Zielsetzung das Hauptformular darf nicht zu iiberladen wirken nicht zu Verwirrungen f hren und dem Anwender einen schnellen Einstieg bieten g Visual L Version 1 0 Datei Bearbeiten Einstellungen Fenster Hilfe D Heu B ffnen IB ber visual L F Beenden Abbildung 5 1 Das Hauptfenster von Visual L Wenn eine LS Datei importiert wird dann wird der Inhalt der Datei an Lprocess weitergege ben um den Inhalt zu konvertieren Daher wird auch vorher gefragt ob der Inhalt in die glei che Datei oder in einer anderen Datei gespeichert werden soll Sollte Lprocess mit einem Feh ler bei der Konvertierung terminieren wird die Konsolenausgabe in einem separaten Fenster ausgegeben damit der Benutzer sich die Fehlermeldung anschauen kann Nach dem Konver tieren wird der Inhalt der LS Datei gepr ft und alle g ltigen Teile werden in die Komponen ten eines Kindfensters bertragen Sollte ein Teil nicht g ltig sein wird in der unteren TListBox Kompon
347. r86 Pr93 PRO1 Ou02 Ra04 Ras95 Ri97 Ro04 Rou01 RS86 Ru86 Sc02 Przemyslaw Prusinkiewcz und Aristid Lindenmayer The Algorithmic Beauty of Plants Springer Verlag 1990 Ulla Kirch Prinz und Peter Prinz C fiir PCs MITP Verlag GmbH 1999 Przemyslaw Prusinkiewicz Graphical Applications of L Systems Proceedings of SIGGRAPH 1986 S 247 253 1986 Przemyslaw Prusinkiewicz Modeling and Visualization of Biological Struc tures Proceedings of Graphics Interface 1993 S 128 137 1993 http www cpsc ucalgary ca Research bmv papers index html Stand 06 2004 Gheorghe P un und Grzegorz Rozenberg A Guide to Membrane Computing 2001 http psystems disco unimib it Stand 06 2004 Uwe Ouasthoff Genetische Programmierung Teil I und Teil 2 Vorlesungs skript Universitat Leipzig Institut fiir Informatik 2002 http wortschatz informatik uni leipzig de asv lehre ss02 QGenProgrGesamt080702 pdf Stand 06 2004 J rgen Rathlev Direct3D mit Delphi unter DirectX 8 Delphi Source de 2004 http www delphi source de downloads dcount php cat t amp id tutorials direct3d direct3d zip Stand 06 2004 Mathias Rasch Grafikprogrammierung mit Windows 95 DATA BECKER GmbH amp Co KG 1995 Jeffrey Richter Microsoft Windows Programmierung ftir Experten Microsoft Press Deutschland 1997 Grzegorz Rozenberg Grzegorz Rozenberg Grzegorz Rozenberg 2004 http www wi leiden
348. rbeitet n if string 0 Sollte der String nur das Zeichen enthalten dann springe zur n chsten Iteration if length strlen string 1 continue Durchlaufen des Strings und auswerten der einzelnen Zeichen Kate for j 1 j length j c string jl switch c case C info state CONVERT break case c info state CONVERT ONLY break case E info state KILL POV break case e info state KILL POV ONLY break case A info state ANTI ALIASING break case T info state TARGA FILE break case F info state KEEP FILES break Falls eine H he oder Breite angegeben wird dann wird aus dem String noch die Zahl extrahiert K case H k extractValueFromString string jtl amp info height if k 0 return 1 else j k break case W k extractValueFromString string jtl amp info width if k 0 return 1 else JE break 131 Ouelltexte case default Falls der String keine Optionen enth lt else Wenn mehr als zwei weitere Argumente noch da sind it arge i gt 2 191 print Comline Help return 0 break print_Comline_Error Found illegal option return 1 break a muss es ein Dateiname sein wird das Programm abgebrochen print_Comline_Error To many filenames or options after return 1 Liegt nur ein Dateiname vor 1 else if
349. rbindung sie bildet sozusagen die Au enhaut eines Hauses Dabei verdeckt die Fassade die gesamte Komplexit t nach in nen So sind Wasserrohre Elektroleitungen und vieles von au en nicht sichtbar Durch die Fassade wird einem Au enstehenden der Einstieg die Einsicht in das Geb ude erschwert ber die Fassade wird jedoch eine Schnittstelle definiert ber die der Au enstehende sein Anliegen an die Personen im Geb ude bermitteln kann Dieses wiederkehrende Muster in der Architektur engl Patterns hat der Architekt Christo pher Alexander in seinem Buch A Pattern Language 1977 festgehalten GHJV96 Inspiriert von Alexanders Buch und seinen Ideen setzt Erich Gamma diese Pattern in spezifische Ent wurfsmuster f r Programmierprobleme um Eines dieser Entwurfsmuster ist die Fassade sie z hlt zur Untergruppe der Strukturmuster Zweck dieser Strukturmuster ist das Zusammen f hren von vielen verschiedenen Objekten zu einer gro en Struktur mit einer einheitlichen Schnittstelle Die Fassade selbst wird in GHJV96 wie folgt definiert Bietet eine einheitliche Schnittstelle zu einer Menge von Schnittstellen eines Subsys tems Die Fassadenklasse definiert eine abstrakte Schnittstelle welche die Benutzung des Subsystems vereinfacht Normalerweise werden Entwurfsmuster im objektorientierten Bereich verwendet Die Fassade in der vorliegenden Diplomarbeit wird aus Performancegr nden jedoch in C entwickelt Die Merkmale der Fassade l
350. rfl che bietet die M glichkeit L Systeme komfortabel einzugeben Optionen f r den Prozess zu setzen und den Prozess f r die Bilderzeugung ablaufen zu lassen 69 4 Entwurf und Implementierung der Fassade F r die Fassade und f r die graphische Oberfl che wurden zwei verschiedene Entwicklungs umgebungen und zwei verschiedene Programmiersprachen verwendet Im Folgenden wird zun chst die Entwicklung der Fassade erl utert Auf die graphische Oberfl che wird dann in Kapitel 5 eingegangen Zuvor soll jedoch erw hnt werden dass die fertige Fassade Lprocess hei t und die graphische Oberfl che Visual L 4 3 Die Entwicklungsumgebung F r die Entwicklung der Fassade wird auf das Visual Studio 6 0 von Microsoft zur ckgegrif fen denn diese Entwicklungsumgebung bietet eine komfortable und gut strukturierte Umge bung zur Entwicklung von Konsolenapplikationen und einen leistungsf higen Debugger Als Programmiersprache wird C gew hlt weil C auf anderen Betriebssystemen sehr verbreitet ist Au erdem bietet ein in C entwickeltes Programm eine hohe Geschwindigkeit was gerade bei einem Evolutionsprozess nicht unwesentlich ist weil dieser insgesamt sehr zeitaufwendig ist Wobei bei der Entwicklung darauf geachtet wurde so wenig wie m glich Windows spezifische Funktionen und Bibliotheken zu verwenden damit die M glichkeit besteht das Programm mit wenig Aufwand auf einem anderen Betriebssystem zum Einsatz zu bringen 4 4 Modul be
351. rgangsfunktion Diese wird in Tabelle 2 2 beschrieben Zust nde Eingabe 0 1 0 0 1 1 11 0 Tabelle 2 2 Ubergangsmatrix fiir den EA In der folgenden Abbildung wird der Ubergang vom Anfangszustand in den Folgezu stand illustriert 2 Theoretische Grundlagen von L Systemen und deren Evolution environmental input eh x Y S Eingabe 0 Ubergangsfunktion 5 0 y 1 1 i 211 1 es 0 1 M G 0 Folgezustand 1 11 1 0 Ausgabe 1 11 0 1 0 Abbildung 2 3 Einf hrung der Zellteilung und der entsprechende Folgezustand Die EA aus den Beispielen hneln dem Verfahren f r die zellul ren Automaten weitere In formationen dazu in Ja97 De03 haben aber gravierende Unterschiede So hat das Array keine feste Gr e sondern kann wachsen aber auch schrumpfen Des Weiteren ist die Zu stands nderung bei einseitiger Eingabe nur abh ngig von dem linken Kontext und nicht wie bei zellul ren Automaten abh ngig vom linken und rechten Kontext Au erdem ist der envi ronmental input ausschlaggebend f r die Entwicklung der Zellen Solch eine Eingabe exis tiert bei den zellul ren Automaten ebenfalls nicht Diese beiden Beispiele zeigen die einfachste Implementierung des mathematischen Modells Ausgelegt sind diese Beispiele f r einseitige Eingaben Aus biologischer Sicht haben eindi mensionale fadenf rmige Organismen zwei Seiten von denen aus ein Organismus Eingaben wahrnehmen k
352. ring 4 length strlen string for i 5 i lt length i if string i info pathQPOV jl Umgebungsvariable wurde gefunden SZ if j strlen info pathQPOV 1 found 1 break j berspringe die weitere berpr fung bis zum n chsten Semikolon else if next if string i J O next 0 break Wenn keine Umgebungsvariable gefunden wurde dann setze diese jetzt 27 if found puts Setting path for OuietPOV if SetEnvironmentVariable PATH info pathQPOV fprintf stderr ERROR Cannot setting path for QuietPOV n return 1 return 0 Dateiname lparser h J FCKCKCKCKCkCk A A A kk kk kk KC KC KC KC 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 2220 Autor Jan Derer Datum 09 06 04 Kontakt Darkhabits aol com Programmname Lprocess Version LO Modulename lparser h Modulversion 1 0 Modulbeschreibung Header Datei zum Modul lparser c KCKCKCkCkCkCk 2 2 22 RR kk kk 2 2 22 2 2 2 2 2 22 2 2 22 2 22 2 2 S5 k k S fifndef lparser_H define lparser_H extern char convertLP4toLP5 char old_filename char new_filename extern char Lparser void extern char Lv2povid void 141 H Quelltexte extern char CorrectingPOVFile void fendif Dateiname lparser c BORK KR 22 kk kk kk kk kk kk KC kk KK KK CK 22 A 22 22 22 22 22 22 22 20 Aut
353. ristid Lindenmayer 1966 auf dem vierten Symposium f r Biomathematik und Informatik in Biowissenschaften in Houston sein mathematisches Modell vor 1968 wird sein Artikel zum mathematischen Modell gedruckt auf das nun eingegangen werden soll Von Interesse ist in diesem Zusammenhang dass Lindenmayer erst 1971 in Developmental Systems without cellular interactions their languages and grammars die Grammatiken f r sein Entwicklungssystem eingef hrt RS86 Das urspr ngliche Modell ba siert auf Automaten und noch nicht auf Grammatiken Als Lindenmayer an seinem mathematischen Modell arbeitet sind die aktuellen Themen in der Entwicklungsbiologie die Kontrolle der Zellteilung die Differenzierung von Zellen und die Zellausdehnung Getrieben von dem Gedanken dass diese Operationen vom gesamten Organismus selbst kontrolliert werden k nnen entwickelt er sein mathematisches Framework Lindenmayer erkennt dass es nicht mehr m glich ist alle Kombinationen zu beherrschen wenn man ber die Entwicklung von einer Hand voll Zellen hinausgehen m chte Das erste Beispiel zeigt einen endlichen Automaten kurz EA der ein lineares Array von Zel len verarbeiten soll Beispiel 2 2 f r EA mit einseitiger Eingabe ohne Wachstum Li68a Das lineare Array von Zellen sieht im Anfangszustand wie folgt aus 01100 Der EA hat nur zwei Zust nde 0 und 1 wobei die Ausgabe gleich dem Zustand ist Der Anfangszustand des EA ist abh ngig von dem Zustand der er
354. rke gefunden state 3 Da keine g ltige Zahl gefunden wurde wird als n chstes nach einem Axiom gesucht end end lj Eny Zweiter g ltiger Ausdruck Es wird erwartet dass der Ausdruck die Zahl f r den Basiswinkel repr sentiert fl StrToFloat s Der String wird versucht in eine Zahl zu wandeln Ist es gelungen wird der Wert an das Kindfenster weitergegeben und der Zustand erh ht Child BasisAngleEdit Text FloatToStr fl Inc state continue except on EConvertError do Bei einem Konvertierungsfehler wird eine Nachricht an begin das Kindfenster bergeben Child MessageList Items Add Keinen Basiswinkel gefunden Child MessageList Items Add Keine Basisst rke gefunden state 3 Da keine g ltige Zahl gefunden wurde wird als n chstes nach einem Axiom gesucht end end 2 try Dritter g ltiger Ausdruck Es wird erwartet dass der Ausdruck die Zahl f r die Basisst rke repr sentiert i StrToInt s Der String wird versucht in eine Zahl zu wandeln Ist es gelungen wird der Wert an das Kindfenster weitergegeben und der Zustand erh ht Child BasisThickEdit Text IntToStr i Inc state continue except on EConvertError do Bei einem Konvertierungsfehler wird eine Nachricht an begin das Kindfenster bergeben Child MessageList Items Add Keine Basisst rke gefunden state 3 Da keine g ltige Zahl gefunden wurde wird als n chstes n
355. rn S d thick 176 Quelltexte r32 min thick min thick s lt 5 LZ tor_copy_r32 dis tor normalize dl al 7 tor_copy_r32 up d2 tor_normalize d2 Ef tor_product d1 tor_normalize d d Vec Vec d2 3 d3 3 Zei tor_plus d2 d3 dl tor normalize dl tor_plus_fac pl dl tor_plus_fac pl dl base 1 Vec Vec Vec Vec ver 1 ver 3 Sr S base 2 4 Vector_min d2 d3 dl Vector_normalize dl Vector_plus_fac pl dl Vector_plus_fac pl dl ver 2 ver 4 Sr Ss end for i 1 4 itt Vector_plus ver i E lt dis ver i polygons poly_store poly_store poly_store ly_store PRPRPPR NOH CTR eS poly_store poly_store poly_store ly_store DMN NY LA JO h2 LO Pk 05 ly_store poly_store poly_store ly_store WWW CO gt 00 LA CO NOB Ho ly store poly store poly store ly store BHP vs H 01 OO s gt i2 B P5 O ly store poly store poly store poly store anon uo WNR o Ga WN FE ly_store poly_store poly_store poly_store Ov OV OV OV O1 Oo J CO Go Pet K Save_object 8 6 c static void Define_closed vector pl vector p2 vecto dl d2 Gol dis i ii vector s16 S 4 r up sl6 d Insert connected cylinder shape The lastxxx vars are used to store the previo
356. rr ERROR The new file cannot be open n return 1 In der Schleife werde die Zeile durchlaufen und entsprechend konvertiert xy while feof old file EndOfFileSymbol 0 fgets old line MAX LS LINE LENGTH old file length strlen old line comment 0 for i 0 j 0 i lt length i j switch old_line i case z if comment break Aus wird gt new line j new_line j gt break case if comment break Aus lt wird new line j break case gt if comment break Aus gt wird new_line j break case if comment break Aus wird new_line j new_line j break case if i 0 Endezeichen erreicht SZ EndOfFileSymbol 1 i length continue default new line j old line i if EndOfFileSymbol 0 new line j NO fputs new_line new_file fclose old file fclose new_file Falls Ziel und Ouelldatei die selben sind dann wird die alte Datei gel scht und temp ls in die Datei umbenannt if same_file sprintf buffer DEL s old filename if system buffer gt 1 fprintf stderr ERROR s cannot be deleted n old_filename return 1 sprintf buffer REN TEMP LS s old filename 143 H Quelltexte if system buffer gt 1 fprintf stderr ERROR Temp ls cannot be renamed n return 1
357. rschwert wird eine genau Beschreibung zu erstellen Wenn man jedoch einer streng mathematischen Beschreibung folgt erm glicht es diese eine genaue Anordnung der Samen wiederzugeben Es hat sich gezeigt dass der Ver teilung der Samen ein Optimierungsprozess zugrunde liegt der die runde Fl che am besten ausnutzt Dabei folgt die mathematische Beschreibung der Anordnung des goldenen Schnit tes De03 0 137 5 137 2 a b Abbildung 1 1 Phyllotaxis der Sonnenblume De03 Ebenso verh lt es sich mit der Struktur von Pflanzen Die Ver stelung der Zweige geschieht nicht willk rlich sondern ebenfalls nach einer bestimmten Gesetzm igkeit So findet man bei der Knospe drei verschiedene Blattstellungen Dabei nennt man den ringf rmigen Bereich an dem die Knospe entsteht Knoten Nodus Zwischen zwei Knoten liegt ein Bereich der Internodium hei t an dem keine Knospe ent steht 1 Einleitung zu dieser Diplomarbeit Die erste Stellung vgl Abbildung 1 2 a nennt man Distichie Diese Gesetzm igkeit sagt aus dass pro Knoten nur eine Knospe existiert und dass die Knospen immer um 180 versetzt angeordnet sind Die zweite Stellung vgl Abbildung 1 2 b ist die Dispersion In diesem Fall sind die Knospen schraubenf rmig angeordnet und haben einen Divergenzwinkel die den goldenen Schnitt approximiert Die letzte Stellung vgl Abbildung 1 2 c ist die Dekussation Dabei k nnen mehrere Knos pen an einem Knoten e
358. rsicht In Kapitel 2 6 wurde schon kurz auf die einzelnen Module f r die Bilderzeugung und den Evolutionsprozess eingegangen Nun werden der Bilderzeugungsteil und seine Module etwas genauer betrachtet Wort Generierung Die Wort Generierung erh lt ein L System als Eingabe Dabei wird gepr ft ob das L System vollst ndig ist und syntaktisch einwandfrei Mit vollst ndig ist gemeint dass die Rekursi onstiefe die Regeln und ein Axiom definiert sind Mit syntaktisch einwandfrei ist gemeint dass die Produktionen den Regeln der Syntax des Wort Generierungsprozesses entsprechen Der Prozess erkennt anhand der Grammatik um was f r ein L System es sich handelt und lei tet das L System entsprechend der Anzahl der Rekursionsschritte ab Als Ergebnis entsteht ein einzelnes Wort welches die Strukturvorlage f r das Bild liefert Diese Struktur ist abh n gig von der Interpretation der einzelnen Zeichen des Wortes 70 4 Entwurf und Implementierung der Fassade Modeller Die Aufgabe des Modellers ist es aus einem generierten Wort eine 3D Szene zu beschreiben Dazu bekommt der Modeller als Eingabe das Wort aus dem vorherigen Schritt Um die Struk turinformation zu interpretieren ben tigt der Modeller eine Interpretationsvorschrift Sie schreibt vor welches Symbol f r welches Turtle Kommando steht In der Regel sind die Standardsymbole f r die Turtle Kommandos in der Interpretationsvorschrift enthalten Die eigentliche Aufgabe des Modellers i
359. rt werden k nnen Realisierung von komplexen Strukturen Modellierung von Signalver l ufen Zellebenen modellieren Animation eines einzelnen L Systems Animation mehrerer L Systeme mit Interaktion ihrer Umgebung Komplette Charakterisierung der L Systeme Tabelle 2 3 bersichtstabelle der besprochenen L Systeme 2 2 4 Wachstumsfunktion Im Beispiel 2 1 wurde demonstriert dass das Wort eines L Systems schnell anwachsen kann Um dieses Wachstum mathematisch zu beschreiben wurden Wachstumsfunktionen einge f hrt Die Wachstumsfunktion ist eine Funktion die zu jedem Zeitpunkt die Anzahl der Sym bole eines Wortes wiedergeben kann Bei einem DOL System ist zu beobachten dass die Wachstumsfunktion nicht abh ngig von der Anordnung der Symbole im Wort ist und auch nicht von den abgeleiteten W rtern ist Daher ergibt sich eine Relation zwischen dem Vorkommen der Anzahl der Symbole und den zwei W rtern u und v wobei u das abzuleitende Wort ist und v das abgeleitete Wort darstellt Diese Relation l sst sich durch eine Matrix beschreiben 25 2 Theoretische Grundlagen von L Systemen und deren Evolution Es sei ein DOL System gegeben dessen Alphabet X geordnet ist amp la suns y dabei ist m eine nicht negative ganze Zahl die gr er Null ist Die Matrix O ist so aufgebaut dass jedes Element q das Vorkommen eines Symbols a auf der rechten Seite einer Produktion a enth lt Sei a die Anzahl des Vorkommen
360. rte Bedeutung Image bmp oder targa Speichert die Grafik als Bitmap bmp oder als Targa Height Positive ganze Zahl Gibt die H he der Grafik in Pixel an Width Positive ganze Zahl Gibt die Breite der Grafik in Pixel an AA on oder off Gibt an ob die Anti Aliasing Funktion aktiviert werden soll POV Pfad Diese Einstellung muss den Pfad f r POV Ray beinhal ten QPOV Pfad Diese Einstellung muss den Pfad f r QuietPOV enthal ten Files on oder off Durch Setzen der Einstellung werden alle Dateien aus den Zwischenschritten erhalten CamX Reelle Zahl Diese Zahl wird benutzt um mit der x Koordinate der Kameraposition multipliziert zu werden CamY Reelle Zahl Diese Zahl wird benutzt um mit der y Koordinate der Kameraposition multipliziert zu werden CamZ Reelle Zahl Diese Zahl wird benutzt um mit der z Koordinate der Kameraposition multipliziert zu werden LightX Reelle Zahl Mit dieser Zahl wird die x Koordinate der Kamera mul tipliziert zur relativen Positionierung der Lichtguelle LightY Reelle Zahl Mit dieser Zahl wird die y Koordinate der Kamera mul tipliziert zur relativen Positionierung der Lichtguelle LightZ Reelle Zahl Mit dieser Zahl wird die z Koordinate der Kamera mul tipliziert zur relativen Positionierung der Lichtguelle keinen Kommentarzeichen Tabelle 4 3 Alle Werte der LPROCESS CFG 81 4 Entwurf und Implementierung der Fassade Wobei jede Einstellung au er den Ko
361. s Zylinder Primitives Die vierte auf tretende Zeichenkette wird als Axiom interpretiert Alle weiteren Zeichenketten werden als Regeln des L Systems verstanden Beispiel 4 1 f r eine einfache LS Datei Das Beispiel zeigt ein vollst ndiges L System f r den Lparser 5 Rekursionstiefe 18 Basiswinkel 20 Anfangsst rke P Axiom Regeln P gt I P R L I L PR PR I gt FS amp amp L L FS S gt SFS L gt i4i f ff f T r rf ff ft R amp amp amp C MH C gt FF W gt SF amp amp amp amp f f Kommentare in einer LS Datei werden durch kenntlich gemacht Ansonsten sind die Be deutungen der Zeichen identisch mit denen der Turtle Interpretation Die allgemeine Syntax f r eine Regel ist linker Kontext lt Symbol gt rechter Kontext lt bool scher Ausdruck gt rechte Seite der Regel Beispiel 4 2 f r eine Regel in einer LS Datei Das Beispiel zeigt eine Produktion die alle Teile einer Produktion unterst tzt a lt b x gt c x gt 5 a 4 c x FFF a x Ein Unterschied zwischen Version 4 und 5 besteht darin dass sich die Syntax f r die LS Datei leicht ver ndert hat Diese Unterschiede werden in Tabelle 4 1 dargestellt Wenn im Folgenden von der Version 4 von Lparser gesprochen wird so ist das Original von Laurens Lapre gemeint und mit Version 5 die erweiterte Variante von Ken Kopp 7
362. s bestimmt ist wer den die Grammatik und die graphische Interpretation einer Evolution unterzogen Beides bringt wiederum eine neue Grammatik und eine neue graphische Interpretation zum Vor schein die wiederum direkt dem Bilderzeugungsprozess bergeben wird Das beste Indivi duum sollte dabei immer zwischengespeichert werden damit es nicht verloren geht Falls die graphische Interpretation einer Mutation unterzogen wurde kann es passieren dass die neue Grammatik viel weiter von der L sung entfernt ist Sollte sich das Ergebnis nach mehreren Evolutionsschritten nicht verbessern kann eine Kopie des besten Individuums und seiner In terpretation der Evolution bergeben werden Die andere Grammatik und Interpretation k n nen dann verworfen werden 2 7 2 Die Anwendungsm glichkeiten Applikation Imogene Als Vorbild dient das Programm Imogene Imo das auch auf der CD ROM beiliegt Imo gene erzeugt Bilder die manchmal eine Struktur erkennen lassen manchmal aber auch wie ein Ameisenbild aussehen Der Anwender kann aus neun Bildern das ausw hlen das ihm am besten gef llt Anhand des ausgesuchten Bildes wird eine neue Generation von Bildern erzeugt Eine Anwendungsm glichkeit w re ein Programm in der Art von Imogene Dabei k nnte man als Initialpopulation neu generierte L Systeme verwenden oder auf eine bestehende Basis von L Systemen aufsetzen Diese Neugenerierung kann zu einer Art von abstraktem Bild f hren Die bestehende
363. s eines Symbols a in einem generierten Wort x und k die Anzahl der entsprechenden Ableitungsschritte Es l sst sich nun eine Matrix fiir die direkte Ableitung eines Wortes auf der Grundlage eines DOL Systems erzeugen PL90 gn 912 SS dim la ei Es go Ut dom lt a m ai dm dn rat Ian Beispiel 2 13 f r die Wachstumsfunktion PL90 Es sei folgendes PDOL System gegeben G gt a b P a ab boa a i Die entsprechende Matrix lautet ke ail e 0 oder alternativ k l k k k k 1 a a b a a L sst man nun einige Ableitungsschritte durchf hren f r k 1 2 3 erh lt man f r die Wachstumsfunktion die Fibonacci Reihe 1 1 2 3 5 8 Rozenberg und Salomaa zeigen in The Mathematical Theory of L Systems PL90 dass die Wachstumsfunktion eines jeden DOL Systems eine Kombination aus einer exponentialen und ganz rationalen Funktion ist Aus der Sicht der realistischen Pflanzenmodellierung sind solche Wachstumsfunktionen nicht verwendbar weil eine Pflanze nicht exponentiell wachst Um das Pflanzenwachstum realis tisch zu modellieren w re daher die Nutzung einer Sigmoidfunktion f r DOL Systeme oder die Nutzung der Funktion einer Quadratwurzel ftir IL Systeme angebracht PL90 In diesem Zusammenhang sei noch erw hnt dass Wachstumsfunktionen einen eher theoreti schen Charakter haben In der Praxis ist es nur sehr schwer m glich eine Wachstumsfunktion fiir ein gegebenes L System
364. s succ i notfoundlist 0 then notfoundlist notfoundlist succ i end Gebe eine entsprechende Nachricht zurtick wenn die Parameterliste noch Parameter enth lt damit nicht verwendet werden oder wenn in der Variable notfoundlist Parameter enthalen sind Parameter die nicht deklariert wurden if length parameterlist gt 0 and length notfoundlist gt 0 then result Folgende Parameter werden nicht in der Produktion benutzt Copy parameterlist 1 length parameterlist 1 Folgende Parameter sind nicht im Produktionskopf enthalten Copy notfoundlist 1 length notfoundlist 1 else if length parameterlist gt 0 then result Folgende Parameter werden nicht in der Produktion benutzt Copy parameterlist 1 length parameterlist 1 else if length notfoundlist gt 0 then result Folgende Parameter sind nicht im Produktionskopf enthalten Copy notfoundlist 1 length notfoundlist 1 end M JE yaJE Ja JE JEYJEIE IE PASS a DABS PAPAS DABS ds ya ya ds ya ASS da un das Methodenname TestingForExistingSymbols Parameter Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name succ Bedeutung Enth lt den Produktionsk rper Typ string konstante Zeichenkette Geschwindigkeitsoptimierung Name lcon Bedeutung Enth lt den linken Kontext einer Produktion Typ string konstante Zeichenkette Geschwindigkeitsoptim
365. sade bildet der Inhalt der CFG Datei Dieser Inhalt wird kom plett ausgelesen und zwischengespeichert Danach werden alle Variablen die noch nicht durch ein Kommandozeilenargument gesetzt wurden durch den Inhalt der CFG Datei gesetzt Stellt das Programm bei der Wertzuweisung an die Variablen fest das kein Wert oder kein giiltiger Wert vorliegt wird das Programm mit einer Fehlermeldung beendet Der letzte Vorbereitungsschritt besteht darin zu priifen ob fiir das Verzeichnis von OuietPOV eine Umgebungsvariable gesetzt wurde Sollte dies nicht der Fall sein dann wird f r die Ver arbeitungszeit die Umgebungsvariable gesetzt Als ersten Verarbeitungsschritt konvertiert die Fassade eine LS Datei von Version 4 in die Version 5 falls dies angegeben wurde Sollte wahrend der Verarbeitung ein Fehler auftau chen wird die Fassade mit einer Fehlermeldung beendet Bevor Lparser mit einer LS Datei gestartet wird wird die LS Datei nach einem giiltigen In halt gepriift das heiBt es wird tiberpriift ob eine Rekursionstiefe ein Startwinkel eine Start dicke und ein Axiom angegeben wurden Diese Priifung entspricht mehr einer Plausibilit ts priifung AuBerdem wird gepriift ob runde Klammern im linken oder rechten Kontext bzw im Bedingungsteil vorliegen Falls kein plausibeler Wert vorliegt oder runde Klammern vor liegen beendet das Programm mit einer Fehlermeldung Lparser bekommt als Eingabe die LS Datei und einige Kommandozeilenargumente So soll
366. se N if next r Get value amp i if last_recur dis one fraction r one dis2 one fraction r one else dis r dis2 r else if last_recur dis one fraction r32 0 9 one dis2 one fraction r32 0 9 one else dis r32 0 9 dis2 r32 0 9 break case Z save dis2 dis2 if next dis2 Get value amp i if last_recur dis2 fraction 185 case case case H Quelltexte Vector plus fac pos fow dis2 end if user_form Define_form pos end upp col else if closed form Define_closed pos end upp col else Define_block pos end upp col Vector_copy_r32 end pos dis2 save dis2 break EI save dis dis if next dis Get value amp i if last recur dis fraction Vector plus fac pos fow dis end if user form Define form pos end upp col else if closed form Define closed pos end upp col else Define block pos end upp col Vector copy r32 end pos dis save dis break Et if scount gt max_stack User_error Ran out of stack Vector_copy_r32 pos stack scount pos Vector copy r32 fow stack scount fow Vector copy r32 lef stack scount lef Vector copy r32 upp stack scount upp stack scount col col stack scount dis dis stack scount dis2 dis2 stack scount
367. se if line i gt 47 amp amp line i lt 58 break else if finishChecking 0 fprintf stderr ERROR In s is not a recursion depth define n info filename else if finishChecking 1 fprintf stderr ERROR In s is not a basic angel define n info filename else fprintf stderr ERROR In s is not a starting thickness define n info filename fclose LSFile return 1 finishCheckingrt Pr fe ob der vierte Wert ein richtiges Axiom ist und keine Regel ZS else if finishChecking 3 length strlen line for i 0 i lt length i if i 1 lt length amp amp line i amp amp line itl gt fprintf stderr In s is not a axiom define n info filename fclose LSFile return 1 finishCheckingrt Prufen ob Klammern in den Regeln sind if checkingRulesForBrackets LSFile gt 0 fclose LSFile return 1 fclose LSFile return 0 BORK KK RR A 22 22 22 22 22 22 22 22 22 22 22 22 22 22 A I I Funktionsname Lparser R ckgabewert Typ int Bedeutung Gibt einen Fehlerstatus zur ck 1 oder das kein Fehler aufgetreten ist 0 Funktionsbeschreibung Die Aufgabe der Funktion ist es Lparser aufzurufen FERRARA IR A 2 2 22 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 212 2 2 22 2 22 2 2 22 2 222 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 k k S char Lparser void 146 H Quelltexte FI
368. sen based on certain probabilities It accepts one integer N the number of mutations to execute int 44 Deo Kg nli 125 double R char Strl PRED_L Str2 PRED L for int 1 0 1 lt N 1 f R double rand 100 100 Choose a random number between 0 and 1 i rand N_Rules Choose two random rules j rand N Rules k 0 if R lt 0 2 Insert 20 probability nl Rules i gt Get_Pred Strl Try up to 10 times to insert the predecessor of rule 1 into another rule while Rules j gt Insert Strl nl false amp amp k lt 10 j rand N Rules k else if R lt 0 4 Replace 20 probability nl Rules i gt Get_Pred2 Strl n2 Rules j gt Get_Pred2 Str2 Try up to 10 times to replace every occurrance of rule 1 s predecessor in rule 1 s successor with another string while nl n2 amp k lt 10 j rand N Rules n2 Rules j gt Get_Pred2 Str2 k if k lt 10 Rules i gt Replace Strl Str2 else if R lt 0 6 Append 20 probability nl Rules i gt Get_Pred Strl 203 H Quelltexte Try up to 10 times to append rule 1 s predecessor to anoter rule while Rules j gt Insert Strl nl true amp amp k lt 10 j rand N Rules k else if R lt 0 8 Swap directions 20 probability Rules i gt Swap_Dirs else if R lt 0 9 Swap sizes 10 probability
369. setzt dann wird immer der zweite Dateiname zur Verarbeitung verwendet Entsprechend terminiert das Programm mit einer Fehlermeldung wenn die Datei nicht existiert Im brigen d rfen die Dateinamen keine Leerzeichen enthalten weil dies vom Kommandozeileninterpreter als zwei getrennte Argumente interpretiert wird Bei der Reihenfolge der Optionen und Dateinamen m ssen die Optionen immer an erster Stel le angegeben werden Sollten Optionen nach einem Dateinamen gefunden werden oder mehr als zwei Dateinamen dann wird das Programm mit einer Fehlermeldung beendet Sollte das Programm nur auf die Option e POV Ray sofort beenden treffen gefolgt von einem Da teinamen dann wird POV Ray beendet und der Dateiname ignoriert Die L nge der Zeichenkette f r die Option kann beliebig lang sein aber nicht die Zeichenket te f r einen Dateinamen In der Datei globals h kann die maximale L nge f r die Zeichenkette eines Dateinamens bestimmt werden wird diese L nge berschritten st rzt das Programm ab Soll mit sehr langen Dateinamen gearbeitet werden kann der Wert f r die maximale Datei namenl nge in der globals h Standardwert sind 50 Zeichen ge ndert und die Fassade neu kompiliert werden CFG Datei Liegt keine Datei mit dem Namen LPROCESS CFG vor wird eine Datei mit Standardwert erzeugt Die Optionen innerhalb der CFG Datei k nnen in einer willk rlichen Reihenfolge vorliegen Sollte eine Option nicht komplett vorhanden sein oder f
370. sisstarke 300 Basiswinkel 17 Startaxiom iQ T Speichern unter Produktionen an Produktionskopf Bedingung Produktion Tabellen einblend i lt E S f gt Hinzuf gen abellen einblenden Bedingungsteil Bearbeiten Turtle Kommandos L schen Y gt h B EEEEEE h CiDiD h CiDiD h EEEEEE h CiDiD h CiDiD Z gt h B EEEEEE h CiDiD h CiDiD h EEEEEE h CiDiD h CiDiD A gt aEA B gt EbEbB me C aGaGaGaGaGaGaGatGtGC e Loschen D bHD a amp 6 b gt 9 X c 2 FFFFFF amp 30 c 2 FFAYZ A SchlieBen Priifen Alle Loschen Abbildung 5 2 Das Kindfenster von Visual L Links befindet sich der Teil in dem das L System editiert wird und in dem seine relevanten Einstellungen vorgenommen werden Um nicht die Ubersicht zu verlieren werden drei Reiter verwendet Auf dem ersten wird das L System definiert und editiert So existieren Editierfel der in denen die Rekursionstiefe der Basiswinkel die Basisst rke und das Startaxiom einge geben werden k nnen AuBerdem wurde eine Eingabemaske fiir die Definition einer Produk tion erstellt Viele Applikationen zu L Systemen besitzen einen einfachen Text Editor in dem eine strenge Abfolge eingehalten werden muss um ein g ltiges L System zu definieren L3D LS4 F r den Benutzer ist nicht auf Anhieb ersichtlich wie das umgesetzt werden kann Um dieser Schw che entgegenzuwirken und um die Syntax und das V
371. spielsweise das Ausgabeformat oder die Gr e der Grafik Au erdem befindet sich in dem Modul noch eine Hilfsfunktion namens getFilenameWithoutExt Diese gibt den bergebenen Dateinamen nur ohne die Endung zur ck Sie wird verwendet um f r POV Ray den Namen f r die Ausgabedatei an zugeben 90 5__ Die graphische Oberfl che 5_ Die graphische Oberfl che 5 1 Einf hrung zur graphischen Oberfl che Auf den n chsten Seiten wird der Entwurf der graphischen Oberfl che dargestellt Anders als bei der Fassade wird hier der Quelltext hier nur angerissen weil der Schwerpunkt der Dip lomarbeit liegt nicht bei der graphischen Oberfl che liegt sondern auf der Fassade Ziel der Applikation ist es eine graphische Oberfl che f r die Fassade herzustellen Daher wird im Rahmen der Entwicklung der graphischen Oberfl che der Schwerpunkt auf Verst ndlichkeit und Einfachheit gelegt und nicht auf neue Funktionalit t Anzumerken ist jedoch dass eine notwendige Voraussetzung f r die Nutzung der graphischen Oberfl che ein Vorwissen zu L Systemen und zur Turtle Interpretation ist 5 2 Die Entwicklungsumgebung f r die graphische Oberfl che Visual C 6 0 bietet mit der MFC eine objektorientierte Kapslung der Windows API sowie eine Entwicklungsumgebung mit einer guten M glichkeit zur Entwicklung von graphischen Oberfl chen Die Entwicklungszeit ist aber wesentlich l nger als beim R ckgriff auf eine RAD Entwicklungsumgebu
372. ssere und fortgeschrittene Programmiertechniken ist E100 E101 zu empfehlen Eine weitere notwendige Grundlage ist das Wissen tiber Software Engineering das zum Bei spiel aus Ba98 Ba99 Ba00 entnommen werden kann Grobe Grundlagen der graphischen Datenverarbeitung im Speziellen von 3D Grafiken in Verbindung mit Ray Tracing sind vorteilhaft und k nnen in ESK96 ESK97 GFMP01 nachgelesen werden 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 Theoretische Grundlagen von L Systemen und deren Evolution Dieses gro e und umfassende Kapitel vermittelt die theoretischen Grundlagen die f r diese Arbeit n tig sind Es wird nicht nur auf die verschiedenen L Systeme eingegangen sondern auch auf Mutationskonzepte von L Systemen unter Nutzung von Genetischer Programmie rung und Genetischen Algorithmen Das Kapitel zeigt auch Alternativen zu L Systemen auf sowie die Anwendungsm glichkeiten von L Systemen in Kombination mit der Evolution Zuvor werden jedoch kurz die drei Personen vorgestellt die f r diesen Bereich pr gend sind 2 1 Kurzbiografien von wichtigen Personen Aristid Lindenmayer FMF04 Aristid Lindenmayer kommt am 17 November 1925 in Budapest zur Welt Dort studiert er auch und erh lt seinen Abschluss in Chemie Er wandert in die USA aus und wird wissen schaftlicher Mitarbeiter an der Universitat Michigan wo er in Biochemie promoviert Danach verl sst er Michigan und ist zeitweise an der Universi
373. st es die Turtle Kommandos wie zum Beispiel F in 3D Primitive umzuwandeln und diese den Strukturinformation entsprechend anzuordnen Als 3D Primitiv wird blicherweise der Zylinder verwendet Einige Programme zu L Systemen geben auch die M glichkeit vor andere Primitive zu verwenden wie zum Beispiel einen Kubus Durch die von Prusinkiewicz in PL90 vorgenommene Erweiterung der Turtle Interpretation ist es dar ber hinaus auch m glich komplexe Objekte mit Hilfe von Polygone zu modellie ren Polygone werden von vielen Renderern als 3D Primitiv unterst tzt daher lassen sich auch Polygone die im generierten Wort enthalten sind problemlos in die 3D Szene umzuset zen Zus tzlich zu den Primitiven muss der Modeller auch eine Kamera einf gen und diese auf die 3D Szene ausrichten sowie mindestens eine Lichtquelle damit das 3D Modell ber haupt sichtbar wird Als Ergebnis erh lt man eine 3D Szene mit einem 3D Modell samt Lichtquelle und Kamera Adapter Das 3D Modell das vom Modeller erstellt wird ist nicht speziell auf einen Renderer zuge schnitten bzw liegt nicht in einem kompatiblen Format f r einen speziellen Renderer vor Diese Aufgabe muss der Adapter l sen Der Adapter transformiert die allgemeine Beschrei bung der 3D Szene vom Modeller in eine spezielle Beschreibung f r einen speziellen Rende rer und speichert dies in dem Format des Renderers ab Renderer Aus der Beschreibung der 3D Szene vom Adapter erzeugt der Render
374. sten Zelle auf der linken Seite Endzust nde sind sowohl 0 als auch 1 Das Eingabealphabet besteht e benfalls aus 0 und 1 6 ist in der Tabelle 2 1 und im Transitionsdiagramm in Abbil dung 2 1 beschrieben Zust nde Eingabe 0 1 0 0 1 1 1 0 Tabelle 2 1 Ubergangsmatrix f ir den EA GO OS Abbildung 2 1 eat ae fiir den EA 2 Theoretische Grundlagen von L Systemen und deren Evolution Um den Automaten zu betreiben wird noch eine willkiirliche linke Eingabe ben tigt Lindenmayer nennt diese Eingabe environmental input In diesem Beispiel soll es 1 sein Es ergibt sich folgende Zustands nderung des Zellenarrays environmental input md Y x Y Eingabe 0 Ubergangsfunktion 5 0 er 8 1 0 1 5 1 1 0 5 0 1 1 0 0 0 Folgezustand 1 1 0 1 0 Ausgabe 1 1 0 1 0 Abbildung 2 2 Ubergang vom Anfangszustand zum ersten Folgezustand Das Beispiel zeigt ein einfaches Verhalten fiir Zellenarrays Das Problem ist dass diese nur zwischen zwei Zust nden wechseln k nnen Die Zellen k nnen sich nicht teilen und auch nicht absterben Das Zellenarray kann zwar nicht sterben aber sich auch nicht weiterentwi ckeln Das n chste Beispiel zeigt wie durch eine kleine Ver nderung die M glichkeit der Zellteilung hinzugef gt wird Beispiel 2 3 f r EA mit einseitiger Eingabe und mit Wachstum Li68a 7 Alle Eigenschaften des EA aus dem Beispiel 2 1 werden tibernommen bis auf die U be
375. stet Die Produktionen selbst werden in geschweiften Klammern aufgelis tet dabei gilt folgende Syntax Symbol linker Kontext rechter Kontext Bedingung lt Wahrscheinlichkeitl gt Produktion1 lt Wahrscheinlichkeit2 gt Produktion2 lt WahrscheinlichkeitN gt ProduktionN Nachdem das L Schema definiert ist wird ein Syntaxcheck ausgefihrt Sollte das L Schema einen Fehler aufweisen muss dieser erst behoben werden bevor die Verarbeitung fortgesetzt werden kann 64 3 Programme die L Systeme simulieren interpretieren Als N chstes werden vordefinierte Drahtgittermodelle geladen zum Beispiel fiir ein Blatt oder einen ganzen Bliitenkranz Dabei werden die Modelle aus einer Text RAW Datei gele sen Das Modellieren der Komponenten geschieht entweder per Hand oder mit Hilfe von Pro grammen wie Crossroads Im dritten Schritt wird den Symbolen aus dem Alphabet eine Eigenschaft zugewiesen So kann ein Symbol als Signal definiert werden damit hat es keine graphische Bedeutung und wird nur fiir das Wachstum der Pflanze benutzt Ein Symbol kann auch eine Raumtransforma tion darstellen zum Beispiel rotieren oder skalieren AuBerdem lassen sich durch Symbole zwei verschiedene Typen von Grafikobjekten darstellen ein statisches und ein parametrisier tes Zu jedem Grafikobjekt muss das Drahtgittermodell aus dem vorherigen Schritt angegeben werden Im vorletzten Schritt wird das L Schema zum L System vervollst ndigt und das zu int
376. successor string var lcon integer Enth lt die Position an der der linke Kontext anf ngt rcon integer Enth lt die Position an der der recte Kontext anf ngt cond integer Enth lt die Position an der der Bedingungsteil anf ngt prob integer Enth lt die Position an der der Produktionsk rper anf ngt begin Die Variablen werden mit den Werten deren Bedeutung belegt lcon Pos lt str recon Ze Pos gt str cond Pos Tite str prob Pos gt str Ist ein linker Kontext vorhanden und nicht Bestandteil eines arithmetischen Ausdruckes weil es auch kleiner bedeuten kann dann kopieren den String heraus und speichere es in lcontext ab if lcon gt 0 and lcon lt cond or cond 0 then lcontext Copy str 1 lcon 1 else Ansonsten belege den Teil mit einem Wildcard lcontext successor Copy str prob 4 length str Kopiere den Produktionsk rper heraus Die folgenden if Anweisungen l sen den Produktionskopf heraus wobei beachtet werden muss um die Position exakt zu bestimmen welche Teile einer Produktion enthalten sind if rcon gt 0 and rcon lt cond or cond 0 then if lcon 0 then predessor Copy str Econ cl else predessor Copy str lcont3 rcon 3 lcon else if cond gt 0 then if lcon 0 or lcon gt cond then predessor Copy str cond 1 else predessor Copy str lcont3 cond 3 lcon
377. successor for a rule that has already been read the new rule can be inserted with just the successor and probability of using it First create a new successor Succ N Succ new char SUCC L strcpy Succ N Succ Suc Set up the probability for this successor Prb Probs N Succ 1 Probs N_Succrr Prb bool Obj_Matches long i char Test_Str int Dir int Block_Len FE O Y Function Does Object Str match Test Str cn GO E This function checks to see if Test_Str matches Object_Str starting at position i Dir is either 1 or 1 to look forward or backward in Object_Str Block_Len is computed it s the length of the block in Object_Str that matches Test_Str The character Test_Str is considered any real number a wildcard This function returns TRUE if Test_Str matches Object_Str at position i or FALSE otherwise in long Obj_Pos i long Tst Pos Dir 1 0 strlen Test Str 1 char Obj Ptr amp Object Str Obj Pos char Tst Ptr amp Test Str Tst Pos int Tst Len strlen Test Str Block Len 0 while Obj Pos gt 0 amp amp Obj Pos lt Obj Len if Tst Ptr if Tst Ptr Obj Ptr Tst Pos Dir Tst Ptr Dir Obj Pos Dir Obj Ptr Dir Block Len Block Len 1 if Tst Pos 0 Tst Pos gt Tst Len 1 return true else return false else We found a in Test_Str If we are looking at a real number in Object
378. t Die Bedingung enth lt neben dem Zeichen noch weitere Zeichen exit end Sind Klammern im Bedingungsteil enthalten if Pos s 0 and Pos s gt 0 or Pos s gt 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result In der Bedingung sind keine Klammern erlaubt Exit end Enth lt der Bedingungsteil keinen Ausdruck if Pos s 0 and length s 1 or length s 0 then cond else Ansonsten baue einen Bedingungsteil zusammen cond s s trim Copy line k 1 l 1 k Kopiere den rechten Kontext heraus Existiert ein Inhalt ftir den rechten Kontext if length s 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Rechter Kontext fehlt exit end Sind weitere Zeichen au er dem Wildcardzeichen im rechten Kontext enthalten if Pos s gt 0 and length s gt 1 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Der rechte Kontext enth lt neben dem Zeichen noch weitere Zeichen exit end Sind Klammern im rechten Kontext enthalten if Pos s 0 and Pos s gt 0 or Pos s gt 0 then begin Gebe Fehlermeldung zur ck und Beende die Verarbeitung result Im Kontext sind keine Klammern erlaubt Exit end Enth lt der rechte Kontext keinen Ausdruck if Pos s 0 and length s 1 or len
379. t Zeichne beim Umsetzen der Schildkr te keine Linie Sollten weitere Attribute vorliegen wie Farbe oder Parameter wie d dann werden die derzeitigen Attribute und Parameter mit den neuen aktualisiert Sollte ein Zustand vom Stack geholt werden und dieser ist leer dann gibt es f r das Wort v keine Interpretation In diesem Fall wird eine Fehlermeldung ausgegeben Beispiel 2 15 f r eine einfache Pflanze Pr86 Durch die Bedeutung der Symbole lassen sich zum Beispiel Pflanzen beschreiben Die graphische Interpretation dieses Beispiels soll eine Pflanze darstellen Gegeben sei folgendes PDBOL System G FX U tl P X F X X F FX X F 5FF L l gt o z Des Weiteren sei d 22 59 Die folgenden Abbildungen zeigen die Ergebnisse nach drei vier fiinf und sechs Ableitungen Die Bilder aus den Beispielen 2 14 und 2 15 wurden mit dem Applet LSys Class generiert Lap Abbildung 2 13 Die Entwicklung einer Pflanze mit einem L System 30 2 Theoretische Grundlagen von L Systemen und deren Evolution Eine zweidimensionale Grafik welche die topologische Struktur der Pflanze visualisiert reicht nicht aus um realistische Pflanzen zu modellieren Hierzu muss die Turtle Interpretation in den 3D Raum berf hrt werden Zu diesem Zweck wird zu der x und y Koordinate noch die z Koordinate hinzugef gt sowie eine Rotationsmatrix M Mit Hilfe der Rotationsmatrix kann sich die Schildkr te um jede Achse dr
380. t j 2 length parameterlist parameterlist s end Ansonsten trage die Variable in die Liste der nicht deklarierten Parameter sofern das Zeichen nicht schon dort eingetragen ist else if Pos cond i parameter 0 then if Pos cond i notfoundlist 0 then notfoundlist notfoundlist cond i end Durchlaufe den Produktionsk rper um in Argumentenlisten nach Variablen zu suchen for i 1 to length succ do Wurde der Anfang einer Parameterliste gefunden dann setze die Variable bracket if succ i then bracket true Wurde das Ende einer Parameterliste gefunden dann deaktiviere die Variable bracket else if succ i then 234 H Quelltexte bracket false Wird gerade eine Parameterliste durchlaufen und die Symbole stellen keinen Ausdruck dar und damit eine Variable dann Priife diese else ch not suce i dm rSn txt gt T Eet ME BETT IFE it AE EEE Fab ONO SERIE and bracket then begin j Pos succ i parameterlist Suche nach der Position des Zeichens in der Parameterliste Wurde ein Eintrag gefunden dann l sche die Variable aus der Liste if j gt 0 then begin s Copy parameterlist 1 j 1 Copy parameterlist j 2 length parameterlist parameterlist s end Ansonsten trage die Variable in die Liste der nicht deklarierten Parameter sofern das Zeichen nicht schon dort eingetragen ist else if Pos succ i parameter 0 then if Po
381. t werden kann Die B ume sind dabei die Repr sentation eines Ausdruckes in Pr fix Notation So steht der Baum in Abbildung 2 22 fiir den Ausdruck 1 IF gt TIME 10 34 in Prafix Notation Der Ausdruck in imperativer Form ist if TIME gt 10 then return 1 3 return 1 4 Diese B ume nennt man auch S Expression Die Kombination aus S Expression und GA er gibt dann GP Daher ist der prinzipielle Programmablauf identisch mit dem der GA siehe Abbildung 2 17 Der Unterschied liegt in den Operatoren und in deren Ausfiihrung auf die Datenstruktur Die Reproduktion eines Individuums ist einfach Eine Kopie des Individuums wird in die n chste Population eingef gt Auch der Crossover Operator bei der linearen Sequenz von Befehlen ist unproblematisch Da alle Programme auf der gleichen CPU laufen k nnen Sequenzen einfach vertauscht werden Bei B umen wird ein Teilbaum von zwei Individuen selektiert und vertauscht 43 2 Theoretische Grundlagen von L Systemen und deren Evolution Entspricht einer Befehlsseguenz Abbildung 2 24 Crossover in GP Lineare Befehlsseguenz Vor dem Crossover wut Nach dem Crossover Abbildung 2 25 Crossover in GP Baum 44 2 Theoretische Grundlagen von L Systemen und deren Evolution Problematischer wird es bei der Mutation von B umen Hier gibt es zwei M glichkeiten der Mutation Bei der 7ree Mutation wird ein bestehender Teilbaum durch einen neuen
382. t dem leeren Wort simuliert werden Es ist klar dass bei fa denf rmigen Organismen die Betrachtung in der ersten Dimension geschieht Daher kann das Wort direkt interpretiert werden und ist auch leicht verst ndlich Mit der sp teren Einf hrung einer Interpretation des Wortes vgl Kapitel 2 2 4 k nnen andere Objekte betrachtet werden wie zum Beispiel Pflanzen Gegenst nde und Kreaturen Pr93 Pr86 PL90 PJM94 PHHM96b PHHM96a PHHM95 BPFGK03 HLPO1 Ho03 HP01a HP01b HP01c HP02 GR92 11 2 Theoretische Grundlagen von L Systemen und deren Evolution 2 2 3 2 Deterministisches L System Das D in solch einem DOL System steht fiir deterministic und bedeutet dass f r jede Ablei tung eines Zeichen nur eine M glichkeit der Ableitung existiert Definition 2 6 fiir ein DOL Schema HR75 Ein OL Schema A SE ist deterministisch wenn f r alle a in X exakt ein a in X der Form a a existiert Andernfalls nennt sich S nicht deterministisch P Definition 2 7 fiir ein DOL System HR75 Ein 0L System G X P o ist deterministisch genau dann wenn S deterministisch ist Das OL System aus dem Beispiel 2 4 ist nicht deterministisch weil f r die Zeichen a und b mehrere M glichkeiten der Ableitung existieren So kann schon nach dem zweiten Ablei tungsschritt ein Wort wie ad entstehen weil statt der Produktion a bc die Produktion a a gew hlt wurde und statt der Produktion b gt bda die Produktion b
383. t ist Weiterhin als Fehler deklariert ist wenn im Produktionskopf ein Klammer Ausdruck steht dieser aber fehlerhaft ist zum Beispiel wenn Sonderzeichen in der Parameterliste vorhanden sind oder wenn sich hinter der rechten Klammer noch Zeichen befinden Falls ein Bedingungsteil vorhanden ist wird dieser daraufhin gepr ft ob ung ltige Zeichen vorliegen beispielsweise Klammern 103 6 Tests und Auswertung der entwickelten Software Die gleiche Priifung wird im Kindfenster jedes Mal durchlaufen wenn eine neue Produktion hinzugef gt wird Das Programm reagiert auf das Nichtvorhandensein der CFG Datei indem eine neue mit Standardwerten erzeugt wird Wurde in einer CFG Datei ein Wert nicht gefunden wird der Option ein Standardwert zugewiesen Wird im Formular TCFGForm auf den Button Suchen geklickt dann wird der Pfad der ersten Datei bernommen die den Namen der Applikation von POV Ray oder QuietPOV enth lt Das Eingabefeld f r die Breite und H he der Grafik akzeptiert nur Zahlen und den R cklauf Die Eingabe ist auf vier Zeichen limitiert Die Regler zur Positionierung der Kame ra und der Lichtquelle k nnen beliebig gestellt werden und f hren zu keinem Fehler Im Kindfenster sind die Eingabefelder f r Rekursionstiefe Basiswinkel und Basisst rke dar auf limitiert nur Zahlen und den R cklauf zu akzeptieren Das Eingabefeld f r die Rekursi onstiefe ist auf zwei Zeichen begrenzt beim Basiswinkel sind es drei und bei der B
384. t zum Beispiel st rker oder schw cher reflektieren soll Im Anschluss kann in der Prozedur D3DRender die 3D Szene beschrieben werden Dazu wird zwischen den Anweisungen BeginScene und EndScene der Quelltext zur Beschreibung der 3D Szene hinterlegt Jegliche Transformation der 3D Objekte wird an dieser Stelle verrichtet auch das komplette Laden der Vertex Punkte Damit Direct3D beim Beenden der Anwendung ordentlich beendet werden kann m ssen zwei wei tere Prozeduren definiert und ausgef hrt werden In der Prozedur D3DKillScene muss der Speicher aller Vertex Listen wieder freigegeben werden und in der Prozedur D3DShutdown m ssen alle Variablen gel st werden die mit den COM Objekten von Direct3D verbunden sind Zum Schliessen ESCAPE dr cken Abbildung 5 4 Die 3D Ansicht mit Direct3D 97 6 Tests und Auswertung der entwickelten Software 6 Tests und Auswertung der entwickelten Software Im folgenden Kapitel werden die beiden Applikationen Fassade und graphische Oberfl che auf ihre Tauglichkeit getestet Dazu werden beide Anwendungen getrennt betrachtet Die Tests beziehen sich gr Btenteils auf Software Tests das heiBt es wird gepriift ob die Pro gramme zuverl ssig laufen und wie sie auf widrige Umst nde reagieren 6 1 Test der Fassade 6 1 1 Testumgebung Die Tests f r die Fassade wird auf einem Intel Pentium 4 Mobil mit 2 5 GHz 512 MB RAM und einer NVIDIA GeForce4 4200
385. tX 8 realisiert In Abbildung 5 4 ist eine beispielhafte Darstellung dieser beiden Ein stellungen zu sehen Die ausf hrliche Beschreibung der Entwicklung einer Anwendung mit DirectX kann an dieser Stelle nicht gegeben werden weil hier nur sehr allgemein auf die Programmierung eingegan gen wird Daher sei zur DirectX Programmierung auf folgende Quelle verwiesen Rou01 SDU99 Du00 EG01 Speziell zur Entwicklung von DirectX Anwendungen mit Delphi sei auf Ra04 verwiesen Mit der Einf hrung von Windows 95 wollte Microsoft die DOS Ebene verlassen und die Entwickler motivieren Windows Anwendungen zu entwickeln Dazu z hlt auch dass k nfti ge Spiele nicht mehr unter DOS sondern unter Windows laufen sollten Das Problem war da mals dass Windows keine Unterst tzung f r aufwendige Grafikprogrammierung bot Daher hat Microsoft 1995 die WinG Windows Graphics Bibliothek eingef hrt Diese war der Vor l ufer von DirectX vgl dazu Ras95 Aber WinG konnte sich nicht durchsetzen Deshalb wurde die Bibliothek vollkommen berarbeitet stark erweitert und als DirectX ver ffentlich DirectX teilt sich dabei in mehrere Teile auf in DirectPlay DirectDraw und DirectSound Ein weiterer Teil hei t Direct3D Er ist f r das Programmieren von 3D Anwendungen gedacht Wie alle Komponenten von DirectX basiert auch Direct3D auf der COM Technologie Im Gegensatz zur Modellierung mit einem Renderer kennt Direct3D als 3D Primitive nur Dreiecke die aus dre
386. tat von Pennsylvania und am Queens College in New York t tig Am 23 August 1967 schreibt Lindenmayer den Artikel iiber sein mathematisches Modell welches dann nach ihm benannt wird das Lindenmayer System Li68a Li68b Diesen Artikel ver ffentlicht er noch am Queens College 1968 geht er dann in die Niederlande um die Position des Direktors fiir Theoretische Biologie an der Universitat Utrecht zu bernehmen Dieses Amt bt er bis zu seinem Tod im Jahre 989 aus Przemyslaw Prusinkiewicz Si97 Sein Geburtsort und das Geburtsdatum sind unbekannt 1974 schlie t Prusinkiewicz sein Stu dium mit dem Master of Science an der Technischen Universit t Warschau ab Hier bleibt er als wissenschaftlicher Mitarbeiter bis zu seiner Promotion im Jahre 1979 Danach geht er fiir drei Jahre nach Algerien wo er an der Universitat von Algier arbeitet 1982 wandert er in die USA aus und wird wissenschaftlicher Mitarbeiter an der Universit t Regina W hrend dieser Zeit arbeitet Prusinkiewicz an der Visualisierung von Strukturen und demWachstum von Pflanzen 1986 pr sentiert er zum ersten Mal seine Ergebnisse auf der Konferenz Graphics Interface Pr86 Seit 1991 lebt er in Kanada Dort ist er Professor an der Universitat Calgary im Fachbereich Informatik Au erdem ist er Gastprofessor und Gastforscher an vier Univer sit ten Grzegorz Rozenberg Ro04 Auch der Geburtsort und das Geburtsdatum von Rozenberg sind unbekannt Wie Prusinkie wicz stud
387. tei eintr gt muss dies korrigiert werden Daher wird in diesem Schritt die richtige Kameraposition nachgetragen und die Position der Lichtquelle berechnet und eingetragen Die Lichtquelle wird relativ zur Kameraposition plat ziert Ausgehend von den Koordinaten der Kamera werden dazu die Koordinaten mit den de finierten Werten aus der CFG Datei multipliziert Bevor das Bild gerendert wird pr ft die Fassade ob schon eine Instanz von POV Ray exis tiert Falls das nicht so ist wird POV Ray gestartet Nun werden alle f r POV Ray relevanten Daten in eine INI Datei gespeichert darunter auch der Name der POV Ray Datei und der sp teren Bilddatei F r die Ausgabedatei wird der Na me der LS Datei gew hlt Im Anschluss wird das Programm QuietPOV mit der INI Datei aufgerufen QuietPOV ist ein Kommandozeilenprogramm mit dem es m glich ist ber die Kommandozeile Befehle an POV Ray zu senden Dazu nutzt das Programm die GUI Extension Schnittstelle von POV Ray Durch den Einsatz von QuietPOV wird das st ndige Laden der graphischen Oberfl che und das damit verbundene Auftauchen des Splash Screens unterbunden Der Splash Screen 85 4 Entwurf und Implementierung der Fassade darf aus lizenzrechtlichen Gr nden nicht deaktiviert werden Wenn POV Ray nicht privat benutzt wird muss deutlich kenntlich sein dass POV Ray benutzt wird Dies geschieht durch den Splash Screen Nachdem das Bild erzeugt ist wird gepr ft ob POV Ray an dieser Stelle beend
388. tes in graphische Kommandos Au erdem wird gezeigt wie L Systeme eingesetzt werden Auch auch alternative Sprachen zu den L Systemen werden kurz vorgestellt Zus tzlich zu den Grundlagen der L Systeme wird eine bersicht zu den Genetischen Algo rithmen und zur Genetischen Programmierung gegeben damit sp ter die Konzepte zur Muta tion von L Systemen diskutiert werden k nnen Zum Abschluss des Kapitels werden die Anwendungsm glichkeiten dieser Arbeit bespro chen Das dritte Kapitel gibt einen berblick ber vorhandene Applikationen zu L Systemen wobei einige kurz erl utert werden Am Ende werden tabellarisch die wichtigsten Informationen zusammengestellt Das grundlegende Konzept und der Entwurf f r die Software der Diplomarbeit sind Inhalt des vierten Kapitels Hier wird die Entwicklungsumgebung und die benutzten Tools vorgestellt Einige Gesichtspunkte aus der Sicht des Software Engineerings werden dabei genauer be trachtet Au erdem wird die Implementierung der Software beschrieben Die graphische Oberfl che wird im f nften Kapitel dargestellt Dabei werden die wichtigsten Formulare und die externen Bibliotheken vorgestellt Im sechsten Kapitel wird der Schwerpunkt auf die Tests gelegt Es wird nicht nur die Appli kation selbst auf ihre Tauglichkeit getestet sondern auch deren Performance und die Belas tung f r den Computer Den Abschluss der Arbeit bildet das siebente Kapitel In diesem wird eine Zusammenfassung der
389. tiert und es wurde kein Anti Aliasing verwendet Interessanterweise l sst sich die Release Version von Lprocess zwar kompilieren aber unter Windows XP auch dann nicht ausf hren wenn es unter Windows XP kompiliert wurde Daher wurde nur die Debug Version getestet Vom Lparser wird die De bug Version f r diesen Test verwendet 1 Durchlauf 2 Durchlauf 3 Durchlauf 4 Durchlauf 5 Durchlauf Mittelwert 14 46 Min 14 20 Min 14 26 Min 14 32 Min 14 11 Min 14 27 00 Min Tabelle 6 7 Zeit f r die Verarbeitung von 95 Dateien mit Lprocess Wenn nun die Verarbeitungszeit vom Lparser auf 95 Dateien normalisiert wird wird folgende Zeitaufteilung sichtbar 100 6 Tests und Auswertung der entwickelten Software Zeitaufteilung bei der Fassade 3 25 GLparser mLV2POVID O POV Ray 55 LlLprocess 17 Abbildung 6 1 Tortendiagramm der Zeitaufteilung 6 1 4 2 Belastungstest In Tabelle 6 8 ist die Belastung der Komponenten Prozessor Speicher und Datentrager fiir die Anwendungen Lparser LV2POVID POV Ray und Lprocess der komplette Verarbeitungs zyklus angegeben Dabei ist der Wertebereich normalisiert von 0 Minimum bis 100 Ma ximum Die Daten wurden parallel zum Performancetest aufgenommen und liegen daher auch fiinfmal vor Alle Werte sind dementsprechend arithmetische Mittelwerte Programm Prozessor Speicher Datentr ger Lparser Debug 99 80 0 00 1 00 Lparser Release 100 00 0 00 0 00 LV2POVID 99 00
390. tings stack used for solving references typedef struct s_rec vector pos position in 3space of turtle origin vector fow forward direction vector lef left direction vector upp up direction vector last last position used for connecting cylinders vector last_v 9 last vertices of object used for connecting cylinders r32 dis value of F distance 132 ang value of basic angle r32 thick value of thickness r32 dis2 value of Z distance r32 Ef trope value s16 col current color s16 last_col color of last object s_rec Polygon stack used for solving references typedef struct p_rec s16 count number of vertices vector ver vertex store p_rec Flags static boolean trope_set FALSE see at comline scannign static boolean rand_set FALSE static boolean user_form FALSE static boolean closed_form FALSE static boolean pov_form FALSE static boolean pov_form2 FALSE static boolean pov_form3 FALSE static boolean blb_form FALSE static boolean inc_out FALSE static boolean dxfl FALSE static boolean dxf2 FALSE static boolean dxf3 FALSE static boolean vrml FALSE static boolean growing FALSE real is used for recursion level static boolean last_recur FALSE processing the last recursion step ge Init wars static r32 zmin 1e3
391. tore t 3 _y maxY ver poly_store t 3 _y if maxZ gt ver poly_store t 3 _z maxZ ver poly store t 3 _z if minX gt ver poly_store t 3 _x minX ver poly store t 3 _x if minY gt ver poly_store t 3 _y minY ver poly_store t 3 _y if minZ gt ver poly_store t 3 _z else if dxfl fprintf volume file for for minZ ver poly store t 3 l _z dxf 3d mesh object O nPOLYLINE n66 n1 n8 n d n70 n64 n color i 1 i lt vertices i fprintf volume_file fprintf volume_file fprintf volume_file fprintf volume_file fprintf volume_file O nVERTEX n8 n d n color 10 n g n ver i _x 20 nsg n ver i _yl 30 n g n ver i _z VIONSLSZXITy 7 i 1 i lt polygons i if Invalid_polygon i continue fprintf volume_file fprintf volume_file fprintf volume_file fprintf volume_file fprintf volume_file fprintf volume_file O nVERTEX n8 n d n color 10 n0 n20 n0 n30 n0 n70 n128 n 71 nsd n poly_store i 0 72 nsd n poly_store i 1 73 n d n poly store i 21 74 n d n poly store il 31 170 color o 16 H Quelltexte fprintf volume_file O nSEQEND n8 n d n color else if dxf2 dxf 3dface object for i 1 i lt polygons itr if Invalid_polygon i continue if
392. trifft liegt ein Fehler vor else fprintf stderr ERROR Error in Line d of LPROCESS CFG n n errorLine return 1 Zahle die Anzahl der Optionen hoch falls eine Option gefunden wurde if countOK counter fclose CFGFile Es folgt die Auswertung der CFG Datei x Falls per Kommandozeile nicht Anti Aliasing gesetzt wurde dann pr fe nach EJ ob in der CFG Datei die Option gesetzt wurde x if info state amp ANTI ALIASING 0 temp getValueFromList opts AA if temp NULL fprintf stderr ERROR There exists no value for AA in LPROCESS CFG n n return 1 else if stricmp temp on 0 info state ANTI_ALIASING else if stricmp temp off 0 else fprintf stderr ERROR Illegal Value for AA in LPROCESS CFG n n return 1 Falls per Kommandozeile nicht Targa gesetzt wurde dann pr fe nach ob in der CFG Datei die Option gesetzt wurde if info state amp TARGA FILE 0 temp getValueFromList opts Image if temp NULL fprintf stderr ERROR There exists no value for Image in LPROCESS CFG n n return 1 else if stricmp temp targa 0 info state TARGA_FILE else if stricmp temp bmp 0 H else fprintf stderr ERROR Illegal Value for Image in LPROCESS CFG n n return 1 Wurde ber die Kommandozeile keine H he gesetzt dann wird in der CFG Datei n
393. tring Zeichen f r Zeichen mit dem String aus der CFG Datei verglichen Taucht ein Zeichen auf das nicht berein stimmt dann werden die Zeichen bis zum n chsten Semikolon bersprungen Das Semikolon trennt die verschiedenen Werte der Umgebungsvariable Path Das letzte Modul beinhaltet die Funktionen f r POV Ray und OuietPOV So startet startPOV eine Instanz von POV Ray sofern noch keine Instanz von POV Ray l uft Dazu wird mit FindWindow und dem Namen der POV Ray Applikation nach einer be stehenden Instanz gesucht Wurde der Wert Null zur ckgeliefert dann wird POV Ray mit WinExec gestartet dabei wird angegeben dass das Fenster versteckt werden soll Wichtig ist in diesem Zusammenhang dass WinExec und FindWindow API Funktionen von Windows sind Beendet wird POV Ray mit endPOV Dazu wird erneut mit FindWindow nach einer laufenden Instanz gefragt Wurde eine gefunden wird die Windows Nachricht WM CLOSE mit SendMessage gesendet Diese weist POV Ray an sich zu beenden Auch SendMessage ist eine API Funktion von Windows Zum Aufru fen von QuietPOV wird die Funktion start QPOV verwendet Diese ruft QuietPOV auf und leitet die Ausgabe in die Datei POV LOG um Bevor aber QuietPOV aufgerufen wird muss die Fassade f r POV Ray noch eine INI Datei erzeugen Diese Aufgabe erf llt die Funktion createINI Dabei werden alle POV Ray relevanten Informationen aus der InfoStruct in die POV INI Datei geschrieben bei
394. turn the length of the section of the object string that was replaced return Block_Len float Fact_Eval char Expr_Str int First int Last 197 H Quelltexte This function evaluates a factor char Num Str MAX NUM LEN char Tmp Ptr if Expr Str First amp amp Expr Str Last return Expr Eval Expr Str First l Last 1 else Tmp Ptr amp Expr Str First strncpy Num Str Tmp Ptr Last First 1 Num Str Last First 1 0 return float atof Num Str float Term Eval char Expr Str int First int Last This function evaluates a term int N Paren 0 int i Last while Expr Str i amp amp Expr Str i ll N Paren 0 amp amp i gt First 1 if Expr Str i N_Paren if Expr_Str i N_Paren 1 37 if Expr_Str i return Term Eval Expr Str First i 1 Fact Eval Expr Str i l Last if Expr Str i return Term Eval Expr Str First i 1 Fact Eval Expr Str i l Last if i First return Fact Eval Expr Str First Last return 0 float Expr Eval char Expr Str int First int Last This function evaluates an arithmetic expression int N Paren 0 int i Last while i gt First if N_Paren 0 if Expr Str i amp amp Expr Str i 1 e return Expr_Eval Expr_Str First i 1 Term_Eval Expr_Str i l Last else if Expr Str i amp amp Expr Str i 1
395. u fen auch unter L System ausf hrbar Gegeniiber Lparser enth lt L System einige Erweiterungen Eine wichtige ist die Unterstiit zung von parametrisierten L Systemen Damit k nnen auch komplexe Modelle erzeugt wer den Au erdem wurden die Mutationsm glichkeiten gegen ber Lparser stark erweitert F r die Mutation wurde ein Mutator entwickelt ber ihn lassen sich verschiedene Mutationsarten regeln siehe Kapitel 2 5 1 Bei der Anwendung entsteht jedoch der Eindruck als ob sowohl bei Lparser als auch bei L System die Mutation noch nicht ausgereift ist weil die Ergebnisse deterministisch sind bzw nicht stark genug hervorkommen Wird beispielsweise das gleiche L System zweimal mit derselben Gewichtung bei den Mutationsfaktoren mutiert so wirkt das Ergebnis nahezu identisch Eine andere Erweiterung von L System ist der Random Generator ber eine Vielzahl von Parametern lassen sich willk rliche L Systeme generieren Erzeugt diese generierte Gramma tik ein langes Wort dann st rzt L System ab Das Anzeigeprogramm von L System ist gegen ber LViewer in einem Teil schw cher So lassen sich die 3D Modelle nur im DXF Format speichern Die Grafiken lassen sich skalieren und rotieren Dabei wird die Kameraeinstellung mitgespei chert Au erdem kann neben dem Drahtgittermodell auch ein komplettes 3D Modell mit und ohne Texturen angezeigt werden Die Texturen und Farben k nnen im Anzeigeprogramm ver ndert werden Vor der Anzeige wird das W
396. uf garantiert wird KCKCKCkCkCkCk IR A RR 2 2 A 2 2 k 2 2 2 2 2 212 2 2 22 2 2 22 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 2 2 22 2 2 22 2 22 5A char checkingState void if info state amp ILLEGAL_OPTS_cC ILLEGAL_OPTS_cC info state amp ILLEGAL_OPTS_eE ILLEGAL_OPTS_eE info state amp ILLEGAL_OPTS_cE ILLEGAL_OPTS_cE info state amp ILLEGAL_OPTS_eC ILLEGAL_OPTS_eC print_Comline_Error Illegal combination of options return 1 else if info state amp KILL POV ONLY 0 amp amp strlen info filename 0 print_Comline_Error No filename found return 1 else if info state amp KILL_POV_AND_CONV_ONLY KILL_POV_AND_CONV_ONLY amp amp strlen info filename 0 print_Comline_Error Require filename to convert return 1 return 0 BORK KR 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 22 I I Funktionsname extractValueFromString R ckgabewert Typ int Bedeutung Gibt die Anzahl der verarbeiteten Zeichen zur ck Wurde keine Zahl gefunden wird 0 zur ck geliefert Parameter Typ char Name string Bedeutung String aus dem eine Zahl extrahiert werden soll 129 H Quelltexte Typ int Name index Bedeutung Index f r den String ab dem die Zahl anfangen soll Typ int Name result Bedeutung Zeiger auf eine Variable in dem der Wert gespeichert werden soll Funktionsbeschreibung
397. ung in einer Szene ESK97 eese 78 Die seretiderte Szene aan 80 Ablaufdiagramm der Fassade eese eee eene eene etna 83 Beispielhafte Kameraposition f r a 3D Szenen und b 2D Szenen 85 Bitbelesune der Variable state edel ee id YR quibu dis 88 Das Hauptfenster von Visual L u ee a ae 93 Das Kindfenster von Visual L L ILALL nennen 94 Das Dialog Fenster zum Editieren der CFG Datei sss 96 Die 3D Ansicht mit Direct3 D An vote t pni nS FAU east 97 Tortendtapramm der Zeitauftetung ceu ale 101 108 B Tabellenverzeichnis B Tabellenverzeichnis Tabelle 2 1 bergangsmatrix f r den EA 7 Tabelle 2 2 bergangsmatrix f r den EA 8 Tabelle 2 3 Ubersichtstabelle der besprochenen L Systeme sese 25 Tabelle 3 1 a bersicht ber die Software zu L Svstemen uii iii ien 68 Tabelle 3 1 b bersicht ber die Software zu L Systemen sees 68 Tabelle 4 1 Unterschiede zwischen Version 4 und 5 sse 76 Tabelle 4 2 Kommandozeilenargumente der Fassade 80 Tabelle 4 3 Alle Werte der L PROCESS CRG as o iei oeste ied tae ON 81 Tabelle 4 4 Module der Fassade ua Ten bi 87 Tabelle 6 1 Zeit zum Konvertieren von 117 Dateien 99 Tabelle 6 2 Zeit f r die Verarbeitung von 101 Dateien vom Lparser in der Debug Version 99 Tabelle 6 3 Zeit f r die Verarbeitung von 101 Dateien vom Lparser in der Release Version
398. ung mit C KR90 PP99 Zur Programmentwicklung mit Delphi DK00 Lo00 E100 E101 Zur Windows Programmierung Ri97 Zur DirectX Programmierung Ra04 Du00 118 E Softwarequellen E Softwarequellen DX8 Fra Gra Gro Imo JVCL L32 L3D Lap LP4 DirectX 8 Units f r Delphi Kapslung der DirectX API f r Delphi Open Source die Kapslung nicht DirectX selbst http www delphi source de downloads dcount php cat t amp id tutorials direct3d direct3d8 zip Stand 06 2004 Fractint Version 20 0 f r MS DOS l uft unter Windows in einer DOS Box erzeugt Bilder aus Fraktalen Open Source http spanky triumf ca pub fractals programs ibmpc frain200 zip Stand 06 2004 GraphicEx image library Version 9 9 fiir Delphi ab Version 4 0 Erweiterung der Grafikbibliothek von Delphi um weitere Dateiformate Open Source http scripts soft gems net download php ID 13 Stand 06 2004 GROGRA Version 3 3 f r Windows Simulation von Wachstumsgrammati ken Freeware http Www grogra de Stand 06 2004 Erwerb der Software nur iiber den di rekten Kontakt mit Prof Dr Winfried Kurth Imogene Version 1 0 fiir Windows erzeugt durch kiinstliche Evolution Grafi ken die von einem Nutzer bewertet werden Shareware ftp bells cs ucl ac uk genetic ftp io com code imogenes zip Stand 06 2004 JEDI Visual Component Library Version 2 10 fiir Delphi ab Version 5
399. univ nl home rozenber Stand 06 2004 Christian Rousselle Spieleprogrammierung mit DirectX und Visual C Markt Technik Verlag 2001 Grzegorz Rozenberg und Arto Salomaa The Book of L Springer Verlag 1986 Keijo Ruohonen Equivalence Problems for Regular Sets of Word Morphisms The Book of L Hrsg Grzegorz Rozenberg und Arto Salomaa S 393 401 Springer Verlag 1986 Thorsten Schnier Lindenmayer Systems Part IT Nature Inspired Design Uni versity of Birmingham School of Computer Science 2002 http www cs bham ac uk xin courses design 1 1 systems 1 4up pdf Stand 06 2004 116 C Literaturverzeichnis Sch03 SD01 SDU99 Se92 SGT99 Si97 SH03 To99 Wa01 W 99 Wi95 Za01 Tino Schonert Einsatz evolution rer Algorithmen zur Optimierung der Tou renplanung eines Wachschutzunternehmens Diplomarbeit Fachhochschule Brandenburg Fachbereich Information und Medien 2003 http ots fh brandenburg de mod diplom data da_tino_schonert pdf Stand 06 2004 Wolfgang Scholl und Rainer Drews Handbuch Mathematik Orbis Verlag 2001 Victor Sirotin Victor Debeloff und Yuri Urri DirectX Programmierung mit Visual C Addison Wesley Longman Verlag 1999 Robert Sedgewick Algorithmen Addison Wesley Longman Verlag 1992 Wolfgang Sch fer Kurt Georgi und Gisela Trippler Mathematik Vorkurs B G Teubner 1999 ACM SIGGRAPH 7997 ACM SIGGRAPH Awards Computer Grap
400. untOK Gibt an ob die Zeile eine Option enth lt oder nicht f temp NULL Zwischenspeicher f r ein String a path Wird gesetzt wenn die Option E ein Pfadnamen enth lt in dem Leerzeichen mitgespeichert Ef werden int length 0 Speichert die Lange einer gelesene Zeile kj dw ly Zahlvariablen Z errorLine 0 Z hler um anzugeben in welcher Zeile ein Fehler vorliegt struct CFGStruct opts MAX OPTS IN CFG Datenstruktur zum speichern der Optionen aus der CFG Datei Z Existiert eine CFG Datei Wenn nicht dann erstelle eine mit Standardwerten und fiillte die Variablen auch mit Standardwerten x if CFGFile fopen LPROCESS CFG rt NULL printf Can t find LPROCESS CFG Using default values n n 134 H Quelltexte createDefaultCFGFile info x 2 0 info y 2 0 info z 2 0 if info height 0 info height 480 if info width 0 info width 640 strcpy info pathPOV strcpy info pathQPOV return 0 Schleife zum auslesen der CFG Datei Kf while feof CFGFile counter MAX_OPTS_IN_CFG errorLine t fgets zeile MAX_CFG_LINE_LENGTH CFGFile Holen einer Zeile aus der Datei length strlen zeile L nge des String berechnen y changingSide 0 j 20 countOK 0 path 0 ber die l nge des Strings iterieren x for i 0 i lt length i Wenn die a
401. us top of the cylinder for conntecing a next one Since the vars are stacked for we can connect correctly according to current nesting level 1 2 t d3 177 Quelltexte r32 S d dd float max if pov form pov form2 pov form3 blb form return zmin MIN zmin pl _z zmin MIN zmin p2 z setup Vector min p2 pl dis d Vector length dis if d r32 0 0 return S d thick S s lt r32 min thick min thick s S 0 5 BL S Vector copy r32 dis dl Vector_normalize dl da Vector_copy_r32 up d2 Vector_normalize d2 d3 Vector product d1 d2 d3 Vector normalize d3 Vector plus d2 d3 tl Vector normalize t1 Vector min d2 d3 t2 Vector normalize t2 pl tl s ver 1 pl tl s ver 5 pl t2 s ver 3 pl t2 s ver 7 Vector_plus_fac Vector_plus_fac Vector_plus_fac Vector_plus_fac S r32 0 7071 Vector_plus_fac2 pl tl s t2 s ver 2 Vector_plus_fac2 pl tl s t2 s ver 4 Vector_plus_fac2 pl tl s t2 s ver 6 Vector_plus_fac2 pl tl s t2 s ver 8 end for i 1 i lt 8 i Vector_plus ver i dis ver i 8 if last col c Vector min pl last dis d Vector length dis iE d lt 232 14031 for i 1 i lt 8 itt Vector_min ver 1 last_v i dis d Vector_length dis i
402. var line string string procedure defaultCFG procedure fillInfo var cfg TextFile procedure setOptionsForChild var Child TMDIChildMain function convertRealForTracker value real48 integer procedure openLS const filename string Auflistung aller ffentlichen Methoden als Prototypen public function testingProductionHead const ProHead string string function testingCondition const Condition string string end 3333S ee MD ED er ee ee ee ee ee ee er ee eee eee re ne sets one alas ay Deklaration der Datenstruktur ftir die CFG Datei OF FY a PF FF EE EE I a yny dydy o dyd ge a Y a ee Se ee y YY Y DY ENGEN TInfo record Bitmap boolean Gibt an ob die Grafik als BMP gespeichert werden soll AA boolean Gibt an ob Anti Aliasing bei Render verwendet werden soll Files boolean Gibt an ob alle Dateien aus den Zwischenschritten gel scht werden sollen wird von Visual L nicht verwendet Width integer Enth lt die Breite der Grafik in Pixel Height integer Ent t die H he der Grafik in Pixel CamX real48 Ent t die Zahl zur relativen Positionierung der Kamera f r die x Achse CamY real48 Enth lt die Zahl zur relativen Positionierung der Kamera f r die y Achse CamZ real48 Enth lt die Zahl zur relativen Positionierung der Kamera fiir die z Achse LightX real48 Enth lt die Zahl zur relativen Positionierung d
403. ver form vertt for Fget bin r32 volume file Fget bin r32 volume file Fget bin r32 volume file itt amp Dum16 amp ver vertex count amp pol polygon count amp Dum16 vertices amp form c form ver x amp form c form ver yl amp form c form ver z for i 1 i lt pol i polygons f rm poltti for j 0 j lt 3 j Fget_bin_sl6 volume_file amp form s form poll jl for J 0 J lt 3 jr 174 Ouelltexte form s form pol j k form ver fclose volume file static void Define_form vector pl vector p2 k vector up s16 c Insert external object The basis is to create the resulting normalized direction vectors from the turtle vectors and use this a matrix for inverse transforming the object from its location round the origin to its location at the turtle origin vector dis dl d2 d3 in ext Q P s16 SE r32 Sw dre RZ char layer 10 pl location p2 forward up up zmin MIN zmin pl _z zmin MIN zmin p2 z setup Vector_min p2 pl dis d Vector_length dis if d r32 0 0 return S d thick s s lt r32 min thick min_thick S dl Vector copy r32 dis dl Vector normalize dl if dxfl setup ECS and insert the block reference Set ECS d1 Inverse ECS pl d2 Vector copy
404. void User_error char s a around the vector no n33 nxy nxz nyz sina cosa _z sina _y sina _z sina x sine _y sina _x sina de al wach ed o d red PA weh Ee fe ded El gel O o ae D I TRUE TRUE native Intel mode Low High FALSE High Low Displays and error messages and 158 H Quelltexte exits the program string_file buf va_list args va_start args s vsprintf buf s args va_end args fprintf stdout n nError s n n buf fflush stdout exit EXIT_FAILURE void Message char s Sends a message to the output stream string_file buf va_list args va_start args s vsprintf buf s args va_end args fprintf stdout s buf fflush stdout fflush stdout void Fget_bin_r32 FILE f r32 val Get a r32 value check for order s32 temp ta tb tc td r32 tempr r32 void amp temp ta s32 getc f tb s32 getc f tc s32 getc f td s32 getc f if native_mode temp td lt lt 8 temp tc temp temp lt lt 8 temp tb temp temp lt lt 8 temp ta else temp ta lt lt 8 temp tb temp temp lt lt 8 temp tc temp temp lt lt 8 temp td val tempr void Fget bin s16 FILE f s16 val Get a s16 value check for order s32 ta tb ta s32 getc f tb s32 getc f if nativ
405. von Neuronalen Netzen In Sc02 werden einfache Beispiele dafiir gezeigt wie die Beschreibung von L Systemen genutzt werden kann um Neuronale Netze wachsen zu lassen So kann mit Genetischen Algorithmen die Produktionen eines L Systems ver ndert werden und anschlieBend ein Wort generiert werden welches als Neuronales Netz interpretiert werden kann Analyse von Geh lzen L Systeme k nnen aber auch zur Analyse von Geh lzen benutzt werden So k nnen der Saftfluss oder die Auswirkungen von Parasiten und Insekten auf die Holzqualit t verfolgt werden Spezialist auf diesem Gebiet ist Prof Dr Winfried Kurth von der BTU Cottbus In seiner Monografie Ku99 geht er auf Analysem glichkeiten mit seinem Programm GROGRA ein 2 3 Alternativen zu L Systemen L Systeme stellen ein diskretes mathematisches Modell dar Biologen nutzen alternativ zu L Systemen auch ein kontinuierliches mathematisches Modell um das Verhalten von Zellen zu modellieren vergleiche dazu Ab86 In diesem Kapitel werden nur die Modelle vorgestellt die auch auf Grammatiken basieren und eine gewisse hnlichkeit zu L Systemen aufweisen bzw L Systeme wesentlich erwei tern Einen Kompromiss zwischen L Systemen und den Sprachen der Chomskyhierarchie stellen die Indian Parallel Systems dar Hierbei wird wie bei den Sprachen der Chomskyhierarchie eine Produktion ausgesucht Diese Produktion wird dann auf alle Symbole angewandt die zu der Produktion passen Kud86 36 2
406. xit end Wenn die Zahl gleich 0 ist dann weise die 0 zu und beende else if value 0 then begin result 0 Exit end Multipliziere die Flie kommazahl mit zwei und runde den Wert auf bzw ab result round value 2 end Senet ee ee eee ph ee a a ee ee ee ee ee ee ee ee ee es Methodenname FormClose Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Typ var TCloseAction Name Action Bedeutung Gibt an wie das Fenster geschlossen werden ssoll Methodenbeschreibung Methode wird beim Beenden des Formulars aufgerufen procedure TCFGForm FormClose Sender TObject var Action TCloseAction begin if D3DActive then Falls ein Direct3D Fenster offen ist dann schliebe es D3DForm Close Action caFree Speicher freigeben end e Eh aE nd ef Op nS ST eh a a PR PE ea Da pad ee a Ee bee Fe ee Methodenname CancelBtnClick Parameter Typ TObject Name Sender Bedeutung Enth lt das Objekt das diese Methode aufruft Methodenbeschreibung Diese Methode wird aufgerufen wenn auf Abbrechen geklickt wird Das Formular wird geschlossen procedure TCFGForm CancelBtnClick Sender TObject begin Info CamX CamX Ubernehme die Werte der Kamera Info CamY CamY Info CamZ CamZ Close Schlie e das Fenster end MELIN ee ae ee a ae ee ee ee FEDI FEL FD FELEN FEN ee MYD eee ree TERN Methodenname OKBtnClick Parameter Typ TObject Name Sender Bedeutu
407. y r32 v fow Util t upp Cl C2 C3 yv Vector copy r32 v upp Vector normalize fow Vector normalize upp a Rnd r32 2 0 x Set_rot a fow Util t lef C1 C2 C3 vli Vector copy r32 v lef Util t upp Cl C2 C3 v Vector copy r32 v upp Vector normalize lef Vector normalize upp break case t 182 H Quelltexte if fow _x r32 0 0 amp amp fow _yl r32 0 0 break save tr tr if trope_set tr trope amount if next tr Get value amp i if last recur tr fraction Vector_copy_r32 fow trope trope _x trope x trope y tropel y trope z r32 0 0 Vector normalize trope r tr Scalar_product fow trope Set_rot r lef Util_t fow Cl C2 C3 v Vector_copy_r32 v fow Util t Gpp Cl C2 C3 v Vector_copy_r32 v upp Vector normalize fow Vector_normalize upp tr save tr break case Vector min fow sky v if Vector length v r32 0 0 break Vector product fow sky lef Vector product fow lef upp if upp z lt r32 0 0 upp _x uppl x uppl y upp _yl upp _z upp _z lef _x lef _x lef y lef _yl lef _z lef _z break case amp save ang ang if next ang r32 0 017453 Get value amp i if last recur ang fraction Set_rot ang lef Util_t fow Cl C2 C3 v Vector_co
408. z Rozenberg und Arto Salomaa S 167 175 Springer Verlag 1992 J van Leeuwen und R B Tan Computer Networks with Compact Routing Tables The Book of L Hrsg Grzegorz Rozenberg und Arto Salomaa S 259 273 Springer Verlag 1986 Microsoft Corporation Microsoft MS DOS 6 2 Benutzerhandbuch Microsoft Corporation 1993 Zbigniew Michalewicz Genetic Algorithms Data Structures Evolution Programs Springer Verlag 1999 114 C Literaturverzeichnis Mo96 NLA86 OW02 Pa92 Pa98 Pa00 PHHM95 PHHM96a PHHM96b PHM PJM94 Kenrick Mock Introduction to Artificial Life and Genetic Algorithms Vorle sungsskript University of Alaska 1996 http Www math uaa alaska edu afkjm cs405 handouts genetic ppt Stand 05 2004 A Nakamura Aristid Lindenmayer und K Aizawa Some Systems for Map Generation The Book of L Hrsg Grzegorz Rozenberg und Arto Salomaa S 323 332 Springer Verlag 1986 Thomas Ottmann und Peter Widmayer A gorithmen und Datenstrukturen Spektrum Akademischer Verlag 2002 Gheorghe Paun Parallel Communicating Systems of L Systems Lindenmayer Systems Hrsg Grzegorz Rozenberg und Arto Salomaa S 405 417 Springer Verlag 1992 Gheorghe Paun Computing with Membranes 1998 http psystems disco unimib it Stand 06 2004 Gheorghe P un From Cells to Computers Computing with Membranes P Systems Pr sentiert auf dem Workshop on Grammar Systems 2
409. zu finden Eine differenzierte Darstellung der Materie ist zu fin den bei HR75 2 2 5 Klassifikation Einordnung L Systeme in Verbindung zu setzen oder zusammenzubringen ist keine leichte Aufgabe Weil der Schwerpunkt dieser Arbeit nicht auf der Klassifikation von L Systemen liegt werden die L Systeme gr tenteils in einen bestimmten Kontext eingeordnet Da die Grafiken sehr gro sind werden sie ausgegliedert und auf ein Poster gedruckt Wie alle anderen Abbildungen liegen aber auch sie auf der CD ROM vor 26 2 Theoretische Grundlagen von L Systemen und deren Evolution Zeitstrahl Die wichtigsten besprochenen L Systeme werden auf einen Zeitstrahl gesetzt und chronolo gisch nach dem Datum ihrer Ver ffentlichung eingeordnet Dabei wird zu jedem L System auch die entsprechende Ouelle angegeben Der Zeitstrahl f ngt beim urspriinglichen mathe matischen Modell im Jahre 1968 an und endet 1993 mit den differentiellen L Systemen zur Realisierung von Animationen Seit 1993 sind keine weiteren wichtigen L Systeme dazuge kommen bzw bestehende unbedeutende haben sich nicht zu bedeutsamen L Systemen guali fiziert HR75 PL90 De03 RS86 Eigenschafien von L Systemen Die verschiedenen Eigenschaften von L Systemen lassen sich stark vereinfacht in zwei Klas sen einordnen In die erste Klasse lassen sich die Beschr nkungen einordnen Basierend auf einem Aus gangssystem in diesem Fall das OL System wird untersucht welche Besch
410. zu und beende if value gt 10 then begin result 20 Exit end Wenn die Zahl kleiner 10 ist dann weise das Minimum zu und beende else if value lt 10 then begin result 20 Exit end Wenn die Zahl gleich 0 ist dann weise die 0 zu und beende else if value 0 then begin result 0 Exit end Multipliziere die Flie kommazahl mit zwei und runde den Wert auf bzw ab result round value 2 end Fe ONU Mins CE oo CE rn EION s PERI In EP COLIN EE NT EIN ECO IN MIR NIE SN ENE EA eege Methodenname setOptionsForChild Parameter Typ var TMDIChildMain Name Child Bedeutung Zeiger auf ein erzeugtes Kindfenster Methodenbeschreibung Initialisiert das Kindfenster mit den Werten aus der Info Struktur procedure TMDIMain setOptionsForChild var Child TMDIChildMain begin with Child do begin AACheck Checked Info AA Anti Aliasing setzen TargaCheck Checked not Info Bitmap Targa oder Bitmap 262 H Quelltexte WidthEdit Text IntToStr Info Width Breite der Grafik HeightEdit Text IntToStr Info Height H He der Grafik Setzen der Werte fur die Achsen der Lichtguelle und der Kamera CamXTrack Position convertRealForTracker Info CamX CamXLabel Caption FloatToStr CamXTrack Position 0 5 CamYTrack Position convertRealForTracker Info CamY CamYLabel Caption FloatToStr CamYTrack Position 0 5 CamZTrack Position convertRealForTrack

Download Pdf Manuals

image

Related Search

Related Contents

Manual instrucción  Polylaser trion Polylaser brush Polylaser derma Mode d`emploi  NOM-094-SCFI-1994 - Normas Oficiales Mexicanas  取扱説明書 - オーム電機  IFU Desert S Easytronic PT 4619-652  Model 2090    Samsung DIGIMAX V50 Manuel de l'utilisateur  データシート  

Copyright © All rights reserved.
Failed to retrieve file