Geometric Modeling (Project)

(extremely simple) 2D vector-based animation software

The source code of the project can be found here: geomod-project.tar

Goal: Implement different types of 2D curves for drawing and different types of 1D functions for animating control points. The source is written in C++ and uses Qt for the interfaces and for painting curves. Eigen is used for storing and manipulating points, vectors and matrices.

The project should include:

  • different types of curves in 1D or 2D (Bezier, Cubic Hermite spline interpolation, Polynomial interpolation, B-Spline, etc…)
  • different types of algorithms (Casteljeau, De Boor, etc…)
  • different types of parametrizations (uniform, Chordal, etc…)
  • opened and closed 2D curves

Try to keep efficient curve evaluations for having real-time or interactive feedbacks. You may precompute data when adding/removing points for instance for fast evaluations. The Eigen library is included. You will use it for manipulating vectors  and matrices, solving linear systems, etc.

Many functions are not implemented (such as the manipulation of entire curves, grouping operations, loading/saving scenes, rendering and saving resulting animation, etc…). You can of course modify everything to obtain your own original software.

Evaluation (the 24th of November):

  • Presentation to the class (~20 min per group): demo, organization of the team, explanation of algorithms, choice of curves, issues, originality, etc.
  • Report due before 2pm. The report should contain:
    1. Full names of all students in the group
    2. A small presentation of the project
    3. Organization of the work/team (use of Git/svn, who worked on what?, etc.)
    4. For each type of curve implemented: the mathematical definition of the problem, the implementation choices in C++, your references (where you got the information necessary to your work).
    5. Some screenshots
    6. Extra implementations (if any)
    7. What do you think would be nice to include in the future
    8. What you think would be nice to improve in the software and/or the project itself
    9. No more than 10 pages