1. main.cc: ------- In main(), you must specify the mp file and the robots' radius. The output is a movie file (via stdout) so you should redirect stdout. Everything happens in a World class: 2. world.cc: -------- The World class contains a Grid class which is used for the configuration space as well as the coordination space. It also contains Thingy classes for the obstacles, robots, and goals. The method World::DoIt() generates the individual paths, the coordinated path, and the movie file output. 3. grid.cc: ------- The Grid class contains the int array[] matrix along with some ancillary variables. It is used to create the 3D configuration space R2xSO1 as per [Latombe; 1992?]. The potential field for each of the two control points is generated by the method GenerateWavefront() using NF1. It is also used to create the 3D coordination space as per [LaValle, Hutchinson; April, 1996]. The method DynamicProgramSpace() uses Dyamic Programming principles to create guide the final path of in the Coordination Space. 4. thingy.cc: --------- The Thingy class holds all to critical information for obstacles, robots, and goals. For example, it holds the vertices of the three objects, but it also holds the position and orientation and a few other things for robots and goals. 5. ChunkList.cc: Vector.cc: lineEq.cc: node.cc: ------------ These classes are for various utilities. A ChunkList is a supercharged array-like class. A Vector is, well, a vector. A LineEq is, well, a line equation class. A Node is, well, a node of a linked list.