This program demonstrates 4 different approximate cell decomposition path finding methods. In particular, it demonstrates basic grid decomposition, Quadtree decomposition, hierarchical rectangloid decomposition, and probabilistic cell decomposition. I wrote this program for a 1 semester class, of which it was only a part. Because of this, I wrote much of it under a sever time constraint, so don't expect a whole lot of documentation. The source code is, of course, available (under the LGPL).
You can run it with Java Web Start to try it out. You can also download a zip file containing the cellpath jar files needed to run it. Just unzip it, change into the directory, and run cellpath.jar (java -jar cellpath.jar).
If you want some worlds to play with, here are a few. I also have a random maze generator. I've made other random world generators as well, but I'll release those later.
I'm not going to go into how these algorithms work, but here are some pictures to demonstrate, if you are getting wary about clicking that Web Start link.
The path found by grid decomposition

The decomposition used to find the path

The path found by quadtree decomposition

The decomposition used to find the path

The path found by probabilistic cell decomposition

The decomposition used to find the path

The path found by Hierarchical Rectangloid decomposition

The decomposition used to find the path

The actual program itself is made up of several separate projects. The cellpath program itself loads the algorithms as plug-ins, so each plug-in is a separate project. They also all depend on a simple A* implementation I wrote, as well as the JGraphT graphing library. Now, for the source:
All of the implementations only require one interface to be defined in order to be used. Namely, they all have their own Environment interface. These are usually pretty simple. For instance, Probabilistic Cell decomposition's only requires 2 methods, one that returns the size of the world and one that returns true if a point is not contained in any obstacle, and false otherwise. On the other hand, Hierarchical Rectangloid decomposition's environment interface is fairly complex (well, the implementation will be).
The cellpath GUI program uses the java.awt.geom.Area class for the obstacles and I've only provided implementations of the decomposition algorithms environments that use this (found in each implementations gui sub-package). It is not particularly fast, and there is huge rooms for improvement here. However, my project was not to make the quickest point queries, or projection queries, so I did not focus on that. This is also a very slightly out-of-date version of the code. The most current version pushes the path finding out of the Swing event thread, so the GUI is actually usable during the path finding process.