The goal of this homework is to extend the work you did for project 1 to incorporate curved motion and velocity control. For the first part, you'll need to implement one of the parametric cubic spline techniques (Bezier, Hermite, B-Spline, or Catmull-Rom) and use it to control the position of the object you moved in project 1. Test the program with a variety of different control point positions to insure it is executing correctly. The interface to control the playing and rewinding can be the same as for project 1.
For the second part of the assignment, you need to implement ease-in, ease-out velocity control, so your object starts at rest (velocity = 0), smoothly accelerates for the first third of the path, maintains a constant velocity for the middle third, and finally decelerates smoothly for the last third, coming to a complete stop at the end of the path. You might want to have several frames at the start and end of the sequence with your object at rest, just to ensure the velocities at the ends are indeed equal to 0.
To accomplish velocity control, you will first have to reparameterize the curve so that you have a table that maps arc-length to the parameter used to generate the curve. You then must specify a distance-time curve using a technique such as the piecewise sine curve method from the text. Alternatively, you can specify an acceleration curve and derive the velocity-time curve and distance-time curve. Just insure that the entire path is traversed by the end of the sequence of frames.
Requirements:
The homework is due at 9AM on Thursday, January 25.
For this project you should do your implementation using OpenGL. You can extend your code from project 1 or start from scratch.
You will submit a tar file containing all of the source code, a Makefile and a README file. The source code must compile (and run) on a CCC machine. Feel free to develop on any platform you like (OpenGL compiles and runs on Windows), just make sure things run on CCC before submitting. The program should compile when make is invoked on the command line in the directory with your code. Submissions which do not compile when make is typed, or do not run successfully, will not be graded and will be given 0 points.
The README file should contain an extensive description of what you are handing in, the layout of your code ( a discussion of the overall algorithm). This README file will count towards your grade. Submissions without a README or submissions with a worthless README will not be graded and given 0 points.
Submittal will be made using myWPI.
Each homework assignment is graded on a 10 point scale 6 points will be graded for functionality: the program does what the assignment requests. 2 points will be based on documentation in the README, and 2 points will be based on the quality of your design and coding style. Click here for details on the grading policy.
You will lose 10 percent per day for handing the assignment in late. The late penalty will increment at 9AM each day.
Since a grade of 0 will be given if the code does not compile and run, it is in your best interest not to submit anything until you have completely tested and evaluated what you have written.