CamSketchpad dev 1
CamSketchpad is a 2D drawing / CAD program with support for geometrical constraints.
It was written as a group project for the Cambridge University computer science undergraduate course by a team of seven people: Tom Botterill, Matthew Brown, Tom Craig, Easlyn Kirupairajah, Amit Sarna, Andrew Smee and myself.
Most of my work was on the constraint satisfaction algorithm, which took perhaps 200 hours of staring at error gradient maps, and imbued me with an enormous respect for Sutherland, whose version of Sketchpad performed as well on '60s hardware as ours does on modern computers.
CamSketchpad is far from being as complete and efficient as the original Sketchpad, but it does have all the necessary components in a rudimentary form, and is finished enough to be usable. So we've decided to release it as open source under the BSD licence, so we or others are free to tinker with it and improve its algorithms and user interface.
- Support for containing instances of other drawings in your drawings. Unlike copies, instances will change when the original drawing changes.
- Highlighting system for displaying what will be selected / snapped to / merged / created when you click.
- Very simple interface for creating new constraints - just write a function telling CamSketchpad how far away it is from satisfying the constraint. (So when the function returns 0, the constraint is entirely satisfied.)