The theory and method of OpenGL Trimming Surface

I want to trim all kinds surface, but OpenGL only can trim surface in NURBS surface.
Now I try to write a function for all kinds surface. Does anyone know where I can fined the theory and method about trimming surface of OpenGL ( gluBeginTrim … gluEndTrim ).

Thanks…a lot…

Trimming generaly means that you skip the evaluation of the function P = f(u,v) for some domain T, T is a subdomain of the set (u,v) in [-U:U]x[-V:V], or some other area of evaluation of the surface. Depending on the type of T it can be quite easy or difficult. The most common case is when you define T with boundary which is a smooth curve. In GLU is bit simpler - you define T by a piecewise linear function(However it can be quite good aproximation of any smooth curve )
Hope this help

I read some paper about “Trimming Surfaces”, but I think the method of OpenGL is better.
So I want to know its method and theory.

List the papers below:

  1. Nathan Litke, Adi Levin and Peter Schröder, Trimming for subdivision surfaces, Computer Aided Geometric Design 18 (5) (2001) pp. 463-481
  2. G.V.V. Ravi Kumar, Prabha Srinivasan, K.G. Shastry and B.G. Prakash, Geometry based triangulation of multiple trimmed NURBS surfaces, Computer-aided Design 33 (6) (2001) pp. 439-454
  3. Leslie A Piegl and Arnaud M Richard, Tessellating trimmed nurbs surfaces, Computer-aided Design 27 (1) (1995) pp. 16-26
  4. Les A Piegl and Wayne Tiller, Geometry-based triangulation of trimmed NURBS surfaces, Computer-aided Design 30 (1) (1998) pp. 11-18
  5. Wonjoon Cho, Nicholas M Patrikalakis and Jaime Peraire, Approximate development of trimmed patches for surface tessellation, Computer-aided Design 30 (14) (1998) pp. 1077-1087

The first paper is about trimming subdivision surfaces - a very spefic and unexplored area (the lack of global parametrization there does not allows using the evaluation skipping trick).
The NURBS trimming is something well studied,and OpenGL is not doing anything better, just the api is simplified you may only use
gluPwlCurve() - piecewise curves
gluNurbsCurve() - Nurbs curves
the general case is when the trimming curve is arbitrary, but that is not a big problem, since the above solutions can aproximate any curve as close as needed (non-smooth and smooth).
If you are intereseted more specialy in subdivision trimming, you may contact me on e-mail, or cotact directly N. Litke or Adi Levin - they will give you the necessary info.


I know how to use OpenGl API to trim NURBS.
But I also need to trim surfaces of revolution and cylindrical surfaces.

Originally posted by stormlord:
I know how to use OpenGl API to trim NURBS.
But I also need to trim surfaces of revolution and cylindrical surfaces.

Can’t you convert a surface of revolution or cylindrical surface into NURB?