Posts tagged with 'user interface'

Functy Updates – Shadows and UI Improvements

  • Posted on August 11, 2014 at 11:43 pm

The last two weeks of summer break have given me the opportunity to give Functy some long-overdue attention. As I mentioned in my previous post, one of the improvements I’ve been working on has been dynamic shadows, and these are now fully implemented. The result is a big improvement in the visual fidelity and sense of depth in the visualisation. You can see the difference in the two screenshots below and I’ll include a proper comparison in a future post.

The next step will be to test out ambient occlusion, as kindly suggested by Andrea Bernabei (@faenil). I’m not sure how well this will work with the type of functional objects rendered by Functy, but it’s worth investigating. Ambient occlusion produces the sort of shadow effects more likely to occur indoors where the light tends to be more scattered, as compared to directed lights or outside direct sunlight, as the current version produces. However, research has shown that ambient occlusion gives a heightened sense of depth as compared to direct shadows, so it’ll be interesting to see the results.

The second major change has been to the user interface. This has been completely rebuilt from the ground up to fit with a single window workbench-style interface, as opposed to the previous multiple-window toolbox-style interface.

Personally I’m a big fan of multi-window interfaces; it should be the job of the window manager to allow you to arrange and configure your windows however you want. Sadly most window managers seem to be lacking in the flexibility department, and managing multiple windows becomes an exercise in hide-and-seek, trying to find windows that got lost behind others like a stack of papers on a desk. So, even though it’s not the perfect solution, I’ve converted Functy so that everything is visible and available in a single window.

I have to admit that the result does look more professional and I think it’s a positive change. I’m not quite sure what will happen if things get more complicated, but it works well for the timebeing.

There’s still a fair bit of work to be done before this can be given a full binary release, such as updating everything to work on Windows, and switching from libglade to GtkBuilder (this may be for a future time). Feel free to test out the version from source (it’s very easy to build, honest!) in the meantime.

Spherical co-ordinates

  • Posted on June 8, 2009 at 9:00 pm
Function using spherical co-ordinates

Function using spherical co-ordinates

So far Functy has worked only using Cartesian co-ordinates, but I’m currently working on code for the next release to allow functions to be defined using spherical co-ordinates too.

Spherical function plotting is already working as you can see in the screenshot. It seems to produce some nice effects that are quite different from those you generally get using Cartesian functions.

The tricky part seems to be getting the code for both co-ordinate types integrated nicely together, and also sorting out a suitable user interface to allow them both to be added seamlessly.

The reason the code is turning out to be tricky is that I’m trying to develop using object oriented techniques, but using C rather than C++. I know it’s perfectly possible to do this (and do it well; although not necessarily by me!), and so far there hasn’t been much problem. However, I’m now in a situation where inheritance would seem to be the perfect technique to use. Most of the methods needed for the two co-ordinate systems are the same, so in C++ it would make sense to use some virtual interfaces to define them and inherit these from a generic function type. Unfortunately I’m not sure if this is going to work well in C.

It seems like a silly thing to get stuck on and it would be nice to get the spherical functionality into the next build. I’m hoping the best method will become clearer as things progress.

UI improvements

  • Posted on May 26, 2009 at 8:00 pm

I’m a bit new to the open source development process, so it was quite exciting to receive a patch submitted by Vadi to improve the Functy user interface. One of the big advantages of open source development is supposed to be that anyone is in a position to improve the software: bugs get fixed, features get added and improvements get committed at a faster pace.

To my mind this is a great example. Although Ubuntu/Gnome is an environment I use a fair bit, I’m not as familiar with its UI conventions as many other people are. Nonetheless, user interface consistency is the sort of thing that can make or break a program (or platform) and has a real impact on a user’s experience. So it’s great to get a patch that improves Functy in just this way.

Compare and contrast the old version of the Functy function list window with the new version shown below. For a start, it has nice icons that improve the appearance. More importantly, as Vadi points out in the forums, it also fits with the standard style better, as you can see by taking a look at the interface for the Gnome Network Manager applet shown below right.

The Functy interface is still a bit non-standard (maybe because I dislike menus?), but for me this is a nice improvement to the program in an area where it takes experience that I don’t have. So while I’m sure there are problems for me ahead as I get to grips with open source development, so far the experience is proving positive!