Structure Synth Architecture
Structure Synth is written in C++ using Qt 4.3 and OpenGL
The main application consists of a GUI with a small embedded editor with syntax highlighting and an integrated 3D viewer (using the Mini OpenGL Engine in the Syntopia Core).
This Eisenstein Engine takes the input script and converts it into a model: this includes preprocessing (stripping comments and including other files), parsing (a simple recursive descent parser), rule name resolving and rule model construction.
The builder executes the rules defined in the model and calls the renderer as needed. The rendering uses an abstract interface, which should make it easy to extend with new renderers (e.g. PovRay output)
The rule model is an object-oriented representation of the rule set: i.e. classes for rules (primitive, custom, and ambiguous rules), transformations, and transformation loops.
Syntopia Core set of reusable building blocks.
Qt provides a lot of nice functionality (GUI Widgets, nice strings with regular expressions, XML, HTTP, …), but a few other standard classes are almost always needed when building new applications.
This small application framework consists of:
- a small 3D engine (with mouse zoom/translation/rotation)
- a mini framework for simple logging/timing/user feedback
- a set of standard exceptions (not much here… )
- Various mathematical utilities
- 3-component vector manipulation (dot product, cross product, …)
- 4×4 matrix manipulation (we use homogenous coordinates in the 3D engine) (rotations, multiplication, …)
- cross-platform random numbers + normal distributed random numbers.
- utils for mainting a version number and checking for updates on the net.
Possible extensions could be modules like Serialization, Persistence and a Help Browser.