Post date: Feb 28, 2010 2:22:34 AM
This was half of my proposed project for the Graphical User Interfaces class in 2005 (the other half is the 3DS scene renderer class). This plotter is designed for both Windows and Linux and uses a OpenGL/SDL + GLUI interface. Instead of just selecting a predefined function from a list (boooring) I decided to implement a Bison/Flex function parser for 3D plus time surface functions. This parser translates the expression into an inverse polish stack which is used to evaluate efficiently each surface point. Two threads are used in a producer/consumer model: one keeps computing the frames of the animation while the other one is in change of the actual rendering.
An additional function was included in the plotter, as I could make use of my project from the Numerical Algorithms class of the same course. For this project, I created an elastic surface simulator based on the second-order differential wave equation that shows the animation of a plane where its points (pixels from a mask image) could be either elastic or fixed, producing interesting results. The equation was solved using 2D Poisson matrices and the Conjugate Gradient method for sparse matrices provided by the IML++ (Iterative Methods Library). All the elastic surface simulation was included as an alternative option for the plotter, as can be seen in this example image.
However the source code it's not too well documented and it has not been mantained since then. Also, the package includes its dependency libraries as some of them were problematic (that's the reason of its size). This version should compile and work both in Windows and Linux systems, though the Windows version was tested loong ago...