With the AnimaAlgo system, the user can create his/her own algorithms and animate them.
All the user has to do to create 2D algorithms that have as input a set of points and as output a set of edges, is create a class that extends class Algorithm, and implement the algorithm method, which receives as parameters references to the point set and the solution set.
If the user wishes to modify the animation presentation, he/she has to modify class View2D or write a new class for that purpose.
If the user wishes to develop an algorithm that uses as input or output a different class of elements, this is possible and is very simple. He or she can write his/her own input and output classes and make small modifications in the applet code in order to correctly initialize them.
An interesting possibility is to set up a Web server that compiles user classes. This way, the user doesn't need to have a Java compiler to develop and test algorithms. He/she can do all the work on-line on a website.
The idea is simple: the user codes an algorithm in a text editor, and uploads it to the Web server through a form on a HTML page. The server receives the source code, and a server-side script invokes the Java compiler and puts the user class in a place where the apple can access it.
From then, the user can go to the applet and visualize the animation of his/her custom algorithm.
In order for this project to be viable, we need to observe some security considerations. With a naive implementation, anyone could be able to write code that runs on the server, which can be dangerous, but it is possible to restrict the system in such a way that bugs or ill-intentioned users cannot harm the server.
Another future project is to
develop different input and output sets and views for different
families of algorithms.