In the last assignment, we developed smooth curves using cubic polynomials. We can generalize this to smooth surfaces by essentially taking a tensor product of two smooth spline curves.
Given a set of 16 control points, we will define a surface patch. Multiple patches can be pieced together to form a complete surface. We can then extract information including the normals procedurally from the surface, in order to perform lighting and rendering.
The source is in the files: