Sutherland-Hodgeman clipping is the most widespread clipping algorithm in use.
The standard way to represent 2D/3D transformations nowadays is by using homogeneous coordinates. I see this question is a bit old, but I decided to give an answer anyway for those who find this question by searching. I've been reading through wikipedia and other resources for a while, but I can't quite get a handle on how one performs this transformation. I am programming this in java and have all of the input event handler set up, and have also written a matrix class which handles basic matrix multiplication. I am wanting to use the projection plane at z=0, and allow the user to determine the focal length and image size using the arrow keys on the keyboard. My question is, how does one take the 3D xyz vertex returned from the 'world to camera' function, and convert this into a 2D coordinate. However, I would like to use a perspective projection to give the teapot depth.
The result is that I have a 'flat' teapot, which is expected as the purpose of an orthographic projection is to preserve parallel lines. Using Bezier patches of 16 control points, I have been able to draw the teapot and display it using a 'world to camera' function which gives the ability to rotate the resulting teapot, and am currently using an orthographic projection.
I am currently working with using Bezier curves and surfaces to draw the famous Utah teapot.