This is an old revision of the document!
Table of Contents
Table of Contents
List of Figures
GroIMP's Relational Growth Grammars
Overview
Growth grammars are a rule-based approach to the modelling of dynamic systems. In contrast to conventional imperative programming languages, rule-based approaches provide a natural and concise way of modelling: Most systems to be modeled behave according to a set of rules, and our perception works this way and not imperatively using a list of operations which have to be processed step by step.
Relational growths grammars (RGG) are part of the current research at the Chair for Practical Computer Science / Graphics Systems at the Brandenburg University of Technology Cottbus (Germany) and its cooperation partners. They are defined as a unification of L-systems and graph grammars. This user manual explains how relational growths grammars are used within GroIMP, more information about relational growth grammars can be found at the web page www.grogra.de, more information about the programming language XL, which is used within GroIMP as an implementation of the calculus of relational growth grammars, can be found in the XL language speficication.
Opening a RGG file
GroIMP understands relational growth grammars written in the language XL, which is based on Java, see www.grogra.de and the XL language speficication. At the web page, there exist some example XL files, which you should download in order to have a starting point. Or, if you have installed the Examples-plugin, just select the menu File/Show Examples. A simple, classical example is the Koch curve whose XL source is shown here, you may create the file Koch.xl
by Copy&Paste.
import de.grogra.rgg.*; import de.grogra.lsystem.*; public class Koch extends RGG { public void derivation() [ Axiom ==> F(10) RU(120) F(10) RU(120) F(10); F(x) ==> F(x/3) RU(-60) F(x/3) RU(120) F(x/3) RU(-60) F(x/3); ] }
You can open an XL file like the one shown file via the menu item File/Open, this creates a new project containing the XL file. For a good RGG modelling workflow, you should switch to the RGG panel layout in the menu Panels/Set Layout. This brings up the most frequently used panels: RGG toolbar, 3D view, text editor, attribute editor, file exporer, meta object browser, message panel, and XL console, see Figure 1.1, "Panels in the RGG Layout".
Figure 1.1. Panels in the RGG Layout
The meta object browser displays objects which have an influence on the scene, but which are not part of the material scene. The RGG object is an example of such an object, and if you open an XL file containing an RGG class, an instance of this class will be created automatically (if the file can be compiled successfully) and inserted into the list of meta objects. By a double click on the RGG object, its editable attributes (the public fields which are declared in its class and are annotated by de.grogra.annotation.Editable
) are shown in the attribute editor.
Working with a Relational Growth Grammar
After an RGG object has been loaded successfully from an XL file, its public methods are made available in the RGG toolbar. Each method appears twice: In the list prefixed with Apply, a click invokes the method once, in the list prefixed with Run, a click starts the repeated invocation of the method. To stop this loop, click the Stop button in the toolbar. Initially, buttons for the first method are accessible immediately; to see a button list for the other methods, you have to click on the small arrow at the right button border.
Normally, RGG methods cause the application of graph grammar rules to the scene. This is the case for the examples provided at GroIMP's web page, and you should try these examples to get familiar with GroIMP's RGG facilities.
The XL source code of a relational growth grammar can be edited in GroIMP's internal text editor, just double-click on the XL file in the file explorer. Whenever modifications of an XL file are saved using the text editor's Save button, it is recompiled, and the RGG object becomes reinitialized. Compilation errors are shown in the message panel and contain hypertext links to their source code locations.
If the filename ends in .rgg
instead of .xl', a simplified syntax is used. In this case, the most common import statements are implicit, as is the enclosing
RGG-class declaration.
====== Graph Manipulations ======
You can find more information on the graph operations here.
The list of graph operations can be found here.
An example with the most used graph operations can be found here.
The graph support queries following this syntax.
An example with basic queries can be found here.
====== Additional formats ======
==== Opening an L-Sytem in GROGRA-Syntax ====
GroIMP's RGG Plugin contains an import filter for non-sensitive GROGRA L-systems (
*.lsy'' -files). They can be opened and edited as for XL files. However, not all features of GROGRA are supported yet.