In this assignment, you will use splines to create a roller coaster simulation. The simulation will run in a first-person view, allowing the user to “ride” the coaster in an immersive environment. After completing this assignment, you should have a solid understanding of:
- Designing smooth geometric curves using splines
- Arc-length reparameterization of polynomial splines
- Defining coordinate frames along splines
- Camera manipulation to create first-person movement
Specification
[5 point] Build your own virtual roller coaster using splines
- To design the rail trajectory, you may use any type of spline, including Catmull-Rom, natural, or B-splines.
- Make the spline closed so that the coaster can run continuously in a loop..
[5 points] Define the moving coordinate frame along the spline.
- Make sure that the coordinate frame moves smoothly along the spline by updating tangent, normal, and binormal vectors coherently.
- Make your track look like a track, by rendering roller coaster rails. The rail rendering would visualize the moving coordinate frame along the spline.

[5 points] Simulate the coaster to create physically correct motion along the spline.
- Implement arc-length reparameterization to remove side effects introduced by the original parameterization.
- Calculate the exact velocity at any u.
- Move the coaster along the spline by integrating time steps and updating arc-length parameter s.
- Use the timer callback so that the simulation runs in sync with real time.
[5 points] Render the simulating in a first-person view.
- Place the camera on the coaster facing forward.