NURBS have become an industrial modeling standard, mainly because they can represent a large variety of geometric shapes. Commonly-used shapes such as sphere, torus, cylinder, cone, and vase can all be modeled using NURBS surfaces.
Please write a program to represent, model, and render (1) cylinder, (2) torus, and (3) surface of revolution (e.g., vase, cone, etc.) using NURBS surfaces. The detailed information about (1) control points, (2) weights, (3) knot vectors along u and v directions, and (4) degrees of basis functions of these commonly-used shapes can be found from the following paper:
The journal of Computer-Aided Design and this paper are both available in our library. Before you start to work on this programming assignment, you should carefully read and understand this paper, in particular, the NURBS details of sphere and torus are documented in pp. 495-497. If you have any difficulties in understanding the technical details of this paper, you can either refer to other relevant papers listed under NURBS and B-Splines in our references or consult with the instructor. The basic functionalities of your program should include: (1) read NURBS data from a file; (2) display the control points and control polygon of cylinder, torus, and/or surface of revolution; (3) display the wireframe of cylinder, torus, and/or surface of revolution; and (4) display the smoothly shaded object. Please NOTE THAT you MUST write your own NURBS sampling and rendering functions and procedures, you should NOT use openGL function calls for NURBS display for this assignment. Please refer to the lecture notes for the idea and algorithm of B-Spline discretization. If you have any questions, please consult with the instructor.