1. a) How did you subdivide the track for drawing?
This part should describe what you did. This probably involved dividing each curve segment into a fixed number of pieces, computing the value of the curve at each point, and connecting the dots with line segments
1. b) Describe a way that the user could see whether or not you implemented adaptive subdivision?
The user would have to make the track segment be big and have a tight curve, so the non-smoothness would show. If the curve is small, then the pieces might be too small to see the difference. If the curve isn't curvy enough, the straight lines will approximate the curve well enough.
2. a) Describe the method that you used to draw the train pointing the correct direction along the track.
There are a number of ways to do this. Generally, you needed to compute the tangent to the curve, and then compute the angle based on that. For example, you could compute an angle (using the arc tangent) or build the matrix directly, as described in the assignment.A very different way to to this is to compute a point ahead on the track (for example, if the train is at u, point u+.1), and use the GL lookat routine to create a matrix that connects the two. The is effectively approximating the tangent by using a finite difference method). This scheme is easy for making the train view, but requires you to invert the matrix to draw the correctly oriented train.
b) Describe cases in which the method may fail. (Note: if you did not implement this, answer the question for the method used by the sample program given on the project web page).
Almost all schemes break when the train is vertical. (my scheme in the assignment does that). Even the lookat scheme breaks in this case, unless you're careful. The scheme I describe in the assignment always puts the train "on top" of the track, so there's a flip when you do a loop.Doing something that always works smoothly is not easy. Some people did have methods for doing it though.
3) Describe what a person riding on the train would experience when the train passes over a portion of the track where the curve is:
a) not C0 (e.g. has a C0 discontinuity)
The train jumps in location, so the people riding it would be teleported. It's unclear what this would feel like.
b) not C1
The train would instantly change velocity. This is physically impossible, the closest thing would be if the train hit a huge wall or got hit by an even bigger train.
c) not C2
The train would accelerate or decellerate instantaneously. This would feel like a "jerk" and would feel like a jolt where the breaks or engine were switched on or off quickly.
4) Suppose we were to require the track to be C3 continuous. Describe how this might be implemented (including why it is more complicated than providing C2 curves). You should provide at least 2 schemes for representing the curve.
In order to create a C3 curve, you need to either use higher order curves (more than cubics) or, place restrictions on the control points of a C2 cubic curve.