This is a blocks applet, new shapes can be created from the 5 primitives on the right. This is currently a work in progress, the eventual idea is to add the capability to understand what shapes are composed of, and link it closely with class composition in programming.
The source for this program is available by mailing the author