Releases: ef-gy/libefgy
Release 7: Preview the Rainbow
This release features a new fractal flame colouring algorithm... and I'm getting ever so much closer to doing 4D+ transforms generically on the GPU instead of on the CPU :D. Also trying to see if we can make awesome pretty pictures using attractors, and after a lot of cleanups I found some time to add the formula for Dinis' Surface to the list of stock models.
The JSON code has also gotten a lot of use in, recently. I can see there's room for improvement there, though.
Have some screenshots of Topologic using these new thingies:
Enjoy, and usual: this is kind of Beta-ish, but if you feel you have some good ideas for additions just send out a merge request and we'll see about that :).
Release 6: Overhauls and Geometry
This sixth release of the library primarily updates geometry code: parametric surfaces, trigonometric functions, arbitrary coordinate systems for models, vectors and a simple GLSL synthesiser. S-expression classes have also been added, and documentation has been improved. The number of Doxygen warning lines is now finally under a thousand.
Features
Overhauled Vectors
The vectors have been modified quite a bit. There are no more 'space' classes, so the the vectors now instead take a format tag, which determines the coordinate system - and to some degree the semantics - of a vector. See the new math::vector class for details.
Arbitrary coordinate system for models
The aforementioned coordinate system tags can now be specified for models as well as plain vectors. This allows for some very interesting effects.
Overhauled parametric surfaces
The geometry::parametric class has been overhauled to take a simple formula functor class, which describes the operation to perform and greatly reduces the amount of code necessary to specify new models based on it.
GLSL synthesiser
GLSL shaders are now produced by a very simple synthesiser, which will be expanded upon in a future release to automatically perform 4D and higher transformations in shaders.
Trigonometric functions
The previously removed trigonometric functions have been added back in, and a few new functions have also been added.
S-expression container classes
This release adds a few classes to contain S-expressions and write them out to streams; this will be expanded upon in a future release to also allow parsing of S-expressions.
New models: torus and klein bottle
This release adds standard parametric formulas for the torus and klein bottle. In light of this, the number of parameters that can be used by models have increased slightly. The tori look really interesting when using a polar base coordinate system.
Release 5: the one wherein there was much rejoycing
This fifth release of libefgy contains unusually many changes. This could be due to our team recently getting a new team member, dawehner. Daniel started out by pushing for some additional statistics functionality and quickly made use of that in some test cases. The list of added functionality is thus getting rather impressive:
Features
This release brings us back to being mostly about maths and doing things at compile time. Huzzah!
Sequences, Series and Power Series
The code now contains the two additional header files 'sequence.h' and 'series.h', which implement functionality for sequences and series, respectively. 'pi' and 'e' have been updated to use these templates. The functions in 'trigonometrics.h' have been removed for this release, as the interface would need to change and things would've gotten tight.
Geometric Primitive Factory
Topologic contained a factory that, given a model name - "cube" - a model dimension - 4 - and a render dimension - 4 - at runtime, would be able to resolve that data to a geometry template and appropriate parameters for that - such as a tesseract. This functionality has been expanded and merged into libefgy, so that adding new models to libefgy will no longer require modifying Topologic - or any other frontend you may envision in the future.
Statistics
As I pointed out in the introduction, Daniel pushed for some additional statistics functionality in 'statistics.h'. It's not all that much just yet, but it's getting there.
Stream Operators
The integer-to-string conversion helper function has been removed; the big integer and fractional templates now provide the much more C++-y stream output operator, which can be used with a std::stringstream to get the same effect. Numeric data types can no longer be cast to std::string, either, for the same reason.
Support for Base Data Types
Most of the templates used to require the use of the 'primitive' template when you wanted to use a C++ base data type (such as 'double'). This has been fixed. A 'traits' template has been introduced to help with cases where additional data is needed for a data type to pick the right kind of algorithm.
Cleanups/Documentation
We've spent quite a bit of time cleaning up old gunk that crept in all over the place. This should be the first truly 'clean' release, which is something I'm rather fond of. Documentation is still lacking in some places, but it's definitely getting there. Current documentation is, of course, still available at http://ef.gy/documentation/libefgy
Removed Functionality
This time I finally got around to removing the 'set.h' header, and the 'trigonometrics.h' and 'geometry.h' are currently gone and stubbed as well. The latter functionality will be added back in a future release, but the sets are dead for good.
Release 4
This release only adds some minor new features, such as the vt100 terminal code and a matrix animation demo, but it greatly improves the current state of the source code documentation. Additionally, a lot of code has been rewritten to use standard C++11 features.
Release 3
Adds code for random affine IFSs, fractal flames, an improved OpenGL 3.2/OpenGL ES 2.0/WebGL 1.0 renderer used in Topologic, a custom Mersenne Twister implementation, documentation and test cases. There's also been quite a few cleanups. And the code is now available via Github or Google Code if you prefer to get your code via those sites - well you probably noticed that if you read these here release notes.