GroIMP
File:Groimp.png
File:Groimp-ui.png
User interface
Paradigmmulti-paradigm: educational, procedural, rule-based, simulation
Designed byOle Kniemeyer
First appeared2003; 21 years ago (2003)
Stable release
1.4.2 / June 6, 2013; 11 years ago (2013-06-06)
Typing disciplinestatic
OSCross-platform (JVM)
LicenseGPL
Filename extensionsgsz, rgg, xl
Websitewww.grogra.de
Influenced by
GROGRA

GroIMP (Growth Grammar-related Interactive Modelling Platform) is an integrated modeling environment specialised in 3-d plant modelling. The integrated programming language XL (eXtended L-System language) is an on Java programming language based implementation of relational growth grammars.

About

edit

GroIMP was designed and authored by Ole Kniemeyer at the Brandenburg University of Technology.[1] Today, work is continued at the University of Göttingen at the Department Ecoinformatics, Biometrics and Forest Growth.

Many scientific articles have been published using GroIMP.[2]

Features

edit

Versions

edit
  • 1.5 (beta version, planed release Oct. 2016)
  • 1.4.2 (2013-06-06)
  • 1.4.1 (?)
  • 1.4 (?)
  • 1.3 (2012-02-23)
  • 1.2.1 (not official)
  • 1.2.0 (2011-03-04)
  • 1.1.0 (2010-04-30)
  • 1.0.0 (2009-09-24)
  • 0.9.8 (2008-04-19)
  • 0.9.7 (2007-10-30)
  • 0.9.6 (?)
  • 0.9.5 (?)
  • 0.9.4 (?)
  • 0.9.3.2 (?)


User interface

edit

The graphical user interface of the GroIMP software provides

  • Editor panel (using on JEdit)
  • 3-d View with four view mode: OpenGL Proteeus, OpenGL, Wireframe
  • 2-d Graph View
  • Attribute Editor
  • Message Window
  • XL Console
  • Preference Window
  • Explorers for, e.g., datasets, files, textures, shaders, objects, light distributions


Syntax

edit

Example

edit

"Hello, world!" program

edit

The traditional "Hello, world!" program can be written in XL as:

// definition of a module as an extension of a sphere object
module A(float len) extends Sphere(0.1) {
	{setShader(GREEN);}
}

// model initialisation; set axiom to a single 'A'
protected void init () [
	Axiom ==> A(1);
]

// rule definitions
public void run () [
	// search for all A's and replace them by the right-hand side of the rule 
	A(x) ==> F(x) [RU(30) RH(90) A(x*0.8)] [RU(-30) RH(90) A(x*0.8)];
]

Running the model will generate a three-dimensional binary tree. In this model A can be interpreted as bud while F could be an internode. In this scene, the rule could be translated as: Search for all buds and replace them by an internode and create two branches with an new bud on the top of each.


edit

References

edit
  • Kniemeyer, O.; Barczik, G.; Hemmerling, R.; Kurth, W. Relational Growth Grammars - a parallel graph transformation approach with applications in biology and architecture In: Applications of Graph Transformations with Industrial Relevance AGTIVE ’07 (eds.: A. Schürr, M. Nagl, A. Zündorf), International Workshop Kassel Oct. 10-12, 2007, Lecture Notes in Computer Science 5088, Springer, Berlin etc. 152-167.
  • Hemmerling, R.; Kniemeyer, O.; Lanwert, D.; Kurth, W.; Buck-Sorlin, G.H. The rule-based language XL and the modelling environment GroIMP illustrated with simulated tree competition Functional Plant Biology, 2008, 35(9/10):739–750.
  1. ^ Ole Kniemeyer (2008). Design and Implementation of a Graph Grammar Based Language for Functional-Structural Plant Modelling (Thesis). Brandenburg University of Technology. Retrieved October 5, 2016.
  2. ^ "GroIMP References".