FinalDrawer is my best project in high school time. Its origin can date back to middle school time, where I wrote a small program called “Drawer” for drawing figures for a Geometry homework. Drawer became NeoDrawer and finally FinalDrawer. By designing this series, I learnt and practiced many architecture design and programming skills.
As a descendant of Drawer, FinalDrawer is also designed to draw geometry objects and compute quantities. It support more types of objects(such as function plots, polyhedrons and quadratic curves), 3D coordinate systems, and animation with a given parameter. With a unified expression based computing system, users can add custom variables, and use them in object coordinates. Thus, dependencies of objects can be managed easily. It also has a scripting system, users can even create a simple game with it.
From a designer’s persecutive, FinalDrawer has a very flexible architecture, it allows plugins to add new types of objects while integrate with the software well. Following is a thumbnail of its class diagram.
The newest version is 1.10, resolved bugs for some video cards.