4. Rename mouse_keybd to direct_manipulation, since it will also handle the tablet events. 5. Implement a tangency control at every control point? 6. "Stroke curve" creation with the pencil tool - DONE (a hack). 8. Implement a mirror tool (creates geometry by reflecting it, also acts as a cutting plane, like a true mirror). 9. Fix selection pick radius. 11. When sketching on the tablet with the stylus, remove the cursor and replace it with a 3D picture of the stylus drawn in the correct tilt orientation with respect to the edit plane. 12. Solid modeler with motion: SOLID -> DEVICE -> SOLID SOLID: degrees of freedom >= 0, for example a lid, or a door. DEVICE: degrees of freedom >= 1, for example a hinge. 14. Implement a trail file viewer/editor. 18. Implement Lyche-Morken algorithm "A Data-Reduction Strategy for Splines with Applications to the Approximation of Functions and Data". This is necessary in order to solve item 6 above. 19. Implement bounding box selection. 20. Implement shift-click point A, shift click point B interpolation point set selection. 21. Implement control-click point selection and control-click curve selection. 22. Implement curve-move and curve-copy operations. 23. Implement sketch tracing functionality. 24. Add automatic sketch tracing functionality (automatic curve creation via the Lyche-Morken algorithm). 25. Implement a KDE interface for the modeler, use kiconedit or kdevelop as an example. 26. Implement a proper regeneration graph. 28. Optimize the BSP tree, try to reuse the code from the display list. 29. Resizing of the window should NOT have the zoom effect on the view, because zoom already has a separate control. Resizing the window should reveal more of the model at the same detail level as before. 30. It should be possible to modify the curve as follows: a. direct manipulation of the interpolation points. b. direct manipulation of the tangents. c. indirect manipulation of the interpolation points and tangents (by dragging a point somewhere between two interpolation points, where both bracketing interpolation points can be displaced by a fraction of the drag vector, or the neighboring tangent can be adjusted). 31. Make facet import procedure transform the facets such that the center of their bounding box corresponds to the origin of the world coordinate system. Then a transform procedure can be applied to move the facets. 32. Implement constraint driven cross section modeling tool - arcs, lines, conics. 33. Market a physical training deck of cards (each card has the workout for the day on it). Extending this further, it may be possible to generate similar cards for daily use for sad and lonely people without lives who can not decide how to best spend their time. A good brand name would be "Ugly duckling". 34. The AMPAD does not need to update with the view - sometimes it helps to have a stationary grid for reference. 35. TechPad - an electronic AMPAD for storing technical sketches with annotations. 36. GrafittiPad - a 3D texturing tool for illustrating TechPad models. 37. Read "Тихий Дон" and "Поднятая Целина" Шолохова 38. Implement automatic axis of rotation detection for a 2D cross-section sketch of a surface of revolution. Essentially - detect the axis of symmetry in the sketch. 39. Redefine soft points to reference a curve at such that on each successfull regeneration they reference the curve at the location closest to the last regenerated position of the soft point. This would approximate the behaviour of the arc length parameterized reference point. The way to implement this is to call the optimizer to find the closest point on the curve to a given point (last 3D position of the soft point). The code for this is already available, so it's worth trying. 40. Implement proportional update for curves, and reimplement the above feature (soft point regen), so that it wouldn't be the hack that it is now. 41.