Programming Assignment #10 – GraphicsTown Part IV : Curves, motion and project wrap-up

by Eftychios Sifakis on April 25, 2017

Due: Sunday, May 7th (see the class late policy on the Syllabus) – NOTE: The last day the submission will remain open is May 11th, the day of the final.

Synopsis: You will incorporate motion effects, using parametric curves into GraphicsTown, per our discussions in class. You will also have the opportunity to add any extra embellishments that fall into the scope of the prior parts of GraphicsTown.

Learning Objectives: The goal of this project is to give you experience with parametric curves, especially piecewise cubic curves, and their use for crafting motion of animated scene elements.

Evaluation: We will grade on the scale explained in the Syllabus for turning a working version of the graphics town project that shows off the minimum required new features. We will give extra points for doing more than the minimum, or for creating particularly interesting things in the basic assignment.

Handin: Submit your code through Canvas [Link]


The fourth and final installment of the GraphicsTown project will focus on adding motion to your GraphicsTown, and specifically implementing concepts related to parametric curves. You will also have the opportunity to wrap-up your project, adding any effects that fall under the scope of prior parts of the GraphicsTown project.

We will start by the new concepts (curves). The required elements are as follows:

  • You must add moving objects to your world, controlled via parametric curves.
  • You must include implementations of at least two different types of cubic curves (e.g. Hermite and B-Splines). You can either have a switch that selects between 2 different curve types, or you can have 2 objects following 2 different trajectories (each of a different type).
  • At least one of your objects must go around in a closed trajectory.
  • At least one of your objects needs to have both the position and its orientation controlled by the parametric curve (like the airplane example discussed in class).
  • At least one of the trajectories needs to be arc-length parameterized.¬†UPDATE: This feature has been revised to be an opportunity for extra credit
  • The motion can either be automatic, or controlled by a slider (or both; your choice)

For extra credit, consider doing one or more of the following:

  • NEW: Implement arc-length parameterization on one of your curves. It is best to do it on a curve that defines a closed trajectory.
  • Provide non-trivial user interaction to manipulate control points, i.e. altering the trajectory of objects based on user interface.
  • Draw elaborate “tracks” that objects move on (for example, rail tracks on which a train moves on)
  • Make vehicles with wheels that “roll” along a trajectory, in addition to moving along it.
  • Provide user controls for the “tension” of curve segments.
  • Or, design motion patterns and behaviors (hierarchically modeled objects, with elements controlled by curves?) that are particularly creative.

In addition, this last assignment will be your opportunity to add any embellishments that would normally fall into the scope of the earlier parts of GraphicsTown. Maybe you have now implemented shadow mapping or dynamic environment mapping, even though you submitted Assignment #9 without it — feel free to fold in any such bells and whistles right now! At our discretion (and depending on how impressive these add-ons will be) we can either give you extra credit in this assignment, or retroactively boost your score from previous weeks.

Previous post:

Next post: