I’m very pleased to announce the release of Functy 0.25. This new version includes a number of new features, improvements and bug fixes, including the following.
- Functy can now export models in Stanford Triangle Format (PLY) for use with modelling applications such as Blender and MeshLab.
- A bundle of new example files have been added to show off the curve rendering.
- The animation can now be paused using the space bar.
- The button bar can now be hidden by pressing ‘b’; especially useful when running in fullscreen mode.
- Shader compatibility has been improved (particularly if a function or its derivative uses exponents).
- The colour handling of the shader has been improved, so that similar colours are rendered by both CPU and GPU.
- Various performance improvements, for example when rendering the axes.
- Various bugfixes, including reversing the orientation of exported spherical functions for better consistency.
- The Symbolic library has also been updated to a new version.
Functy is available to download via the downloads page for Windows, Linux (x86, x64, ARM) and as a source archive. Functy is licensed under the MIT open source licence.
Although I’m hoping these improvements will make it even easier to use and more stable, there will inevitably be bugs, so please let me know if you find any.
Oops. After releasing version 0.2 I immediately found a couple of bugs! So version 0.21 is now available as a minor bug-fix release over 0.2.
You can get it from the download page: https://sourceforge.net/project/platformdownload.php?group_id=259651
Release notes are also available: https://sourceforge.net/project/shownotes.php?group_id=259651&release_id=690043
Functy is a 3D graph drawing package. The emphasis for the application is to allow Cartesian and spherical functions to be plotted and altered quickly and easily. This immediacy and the vivid results are intended to promote fun exploration of 3D functions. Functy can be built for GNU/Linux or Windows.
This 0.2 release is still beta, but has a number of improvements over 0.1 including:
- An improved user interface.
- New functions that can be used, such as cosh, atan, sec, exp, abs etc.
- Spherical coordinate plotting of functions.
- Various smaller bug fixes and changes.
To find out more or download the latest version, please visit one of the following pages.
Project web site: http://functy.sourceforge.net
Sourceforge project site: https://sourceforge.net/projects/functy/
If you’d like to help improve Functy there are loads of ways you can, be it by coding, designing, translating, scripting or just generally being creative. Take a look at the Contribute page that’s just been added if you want to find out how, or wander over to the Contributors page to see who already has.
Functy is now using Trac as its project management solution. Having had it recommended by a friend and used it internally for some time, it offers some really good functionality and works well. The intention is to use it for all sorts of things like bug reports, documentation and general planning stuff. I’ve added a few appropriate links to the sidebar to make it easier to find all of these.
It’s great that Trac is one of SourceForge’s managed applications. Creating a Trac installation for the project was just a matter of clicking on a tick-box. Literally!
So far Functy has led a largely insular life, not venturing outside of the SourceForge community. And there’s been good reason for this. Functy is only young, and not yet very stable. And let’s face it: SourceForge provides pretty much everything a growing project like this could need. It’s important not to be too inward looking though, and eventually it’s going to have to venture further. So, to this end, there’s now also a Functy project area on Canonical’s Launchpad project development site. If this kind of thing interests you (and you want to help the project find its feet) then I suggest you check it out.
Google recently announced the release of their O3D plugin and web API for creating 3D web graphics. As various commentators have pointed out this isn’t the first or only attempt to create a 3D web standard. I remember many years ago being excited by VRML and the prospect of adding 3D content to the Web. I was especially excited when at the time a colleague brought in a fantastic VRML rendition of the inside of Tutankhamun’s Tomb that he’d created, all running inside a browser. The Web could be so much more with 3D, and while I’ve not looked at the detail to say whether Google’s attempt is better than the others, it’s probably true that Google is more likely to push it hard enough to make it work. It’ll be a shame though if it lives only as a plugin, a kind of purgatory of integration inside the browser but removed from the rest of the page.
Along with the plugin Google also released some nice looking demos, and one in particular cought my eye: this vertex shader example. Here they apparently use a vertex shader to set the normal vertices of an animated 3D sine wave. It would be great to do something similar with Functy. At present the normals in Functy are generated using the Symbolic library in C, which can require quite some computing power for a complicated function using many vertices. If this could be handed over to the graphics card it could result in a real speedup and the possibility for much more accurate function plotting.
Unfortunately I don’t know enough about vertex shaders. But the nice thing about O3D is that all of the code is there in the Web page, so I’m hoping a bit of playing around with the examples, and some reading up about OpenGL could be a step in the right direction.
Many many moons ago, when I was still at school, one of the things that bugged me was the +/- button on my calculator. It just seemed redundant given that there was already a - button. Clearly I needed to get out more, but I digress. It wasn’t until I properly learned about groups, unary and binary operations, inverses and the like that the distinction became clearer, although the extra button still seemed unnecessary.
So, it’s a little ironic that I’ve spent this afternoon adding an extra ‘negative’ unary operation into the Symbolic library, even though there’s already a binary ’subtraction’ operator in there already. I bet I grow to regret this as things get more complicated, but it makes things easier for now.
The main benefit of this change is that previously when you wanted to use a negative number or expression you’d have to write something like “0-5″ or “0-cos(x)”. Now you just need to do “-5″ or “-cos(x)”. Much more civil. I did think about adding in the zero implicitly, so that “-a” got silently converted internally to “0-a“, but this just seemed ugly and was going to make things complex when it was converted back into a text string.
So, the good news is that now functions with negatives that look like they ought to work, but would previously have resulted in a confusing empty function, now actually work as they should. Hooray for unary negation!
I’ve just added a bundle of new functions to the Symbolic library. These include exp, tan (which needed why weren’t they there already?!), the inverse and hyperbolic trigonometric functions, along with cosec, sec and cot.
The nice thing is that these will automatically get added in to Functy on the next build. Having used the existing functions a fair bit it’s good to have something new to play around with. I’ll try to post some screenshots of my efforts soon.
The updates aren’t in any of the releases yet, so if you want them you’ll need to check out the source from svn.
Well, after pretty much an entire day of shunting files around the network using more protocols than the EU, I can finally say that there’s a Functy release to show for it.
This is version 0.1, which means it’s a bit brittle and the paint is still drying. It also comes flatpacked, so you’ll have to build it yourself. But if you can get past all of that, it does just about work.
The packages can be downloaded at http://sourceforge.net/projects/functy/